Skip to content

Commit c2ab10b

Browse files
committed
Refactor, remove code duplication in Presenters
1 parent 71993ce commit c2ab10b

3 files changed

Lines changed: 25 additions & 14 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package dev.ikm.komet.kview.mvvm.view.genpurpose.control;
2+
3+
import dev.ikm.komet.framework.observable.ObservableEntityHandle;
4+
import dev.ikm.komet.framework.observable.ObservableSemantic;
5+
import dev.ikm.komet.framework.observable.ObservableSemanticVersion;
6+
import dev.ikm.tinkar.entity.SemanticEntity;
7+
import dev.ikm.tinkar.entity.SemanticEntityVersion;
8+
9+
public class AbstractPatternSemanticsPresenter {
10+
11+
protected static ObservableSemanticVersion getObservableSemanticFromSemanticEntity(SemanticEntity<SemanticEntityVersion> semanticEntity) {
12+
ObservableSemantic observableSemantic = ObservableEntityHandle.get(semanticEntity.publicId())
13+
.asSemantic().orElseThrow(() -> new IllegalArgumentException(
14+
"Entity is not a semantic: " + semanticEntity.publicId()));
15+
ObservableSemanticVersion latestVersion = observableSemantic.versions().getLast();
16+
return latestVersion;
17+
}
18+
19+
}

kview/src/main/java/dev/ikm/komet/kview/mvvm/view/genpurpose/control/standard/PatternSemanticsStandardPresenter.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package dev.ikm.komet.kview.mvvm.view.genpurpose.control.standard;
22

33
import dev.ikm.komet.framework.observable.ObservableComposer;
4-
import dev.ikm.komet.framework.observable.ObservableEntityHandle;
54
import dev.ikm.komet.framework.observable.ObservableField;
6-
import dev.ikm.komet.framework.observable.ObservableSemantic;
75
import dev.ikm.komet.framework.observable.ObservableSemanticVersion;
86
import dev.ikm.komet.framework.view.ViewProperties;
97
import dev.ikm.komet.kview.controls.KLReadOnlyBaseControl;
108
import dev.ikm.komet.kview.klfields.KlFieldHelper;
9+
import dev.ikm.komet.kview.mvvm.view.genpurpose.control.AbstractPatternSemanticsPresenter;
1110
import dev.ikm.komet.layout.PatternSemanticsPresenter;
1211
import dev.ikm.komet.layout.editor.model.EditorFieldModel;
1312
import dev.ikm.komet.layout.editor.model.EditorPatternModel;
@@ -22,7 +21,7 @@
2221
import java.util.Map;
2322
import java.util.UUID;
2423

25-
public class PatternSemanticsStandardPresenter implements PatternSemanticsPresenter {
24+
public class PatternSemanticsStandardPresenter extends AbstractPatternSemanticsPresenter implements PatternSemanticsPresenter {
2625

2726
/**
2827
* Given a SemanticEntity what's its associated Semantic Control.
@@ -84,10 +83,7 @@ private SemanticStandardControl createSemanticControl(EditorPatternModel editorP
8483
// Creating an editable version via composeSemantic()/getEditableVersion() would track this
8584
// semantic in the shared composer's transaction, causing a spurious new version to be
8685
// written for every displayed semantic when any single semantic is committed.
87-
ObservableSemantic observableSemantic = ObservableEntityHandle.get(semanticEntity.publicId())
88-
.asSemantic().orElseThrow(() -> new IllegalArgumentException(
89-
"Entity is not a semantic: " + semanticEntity.publicId()));
90-
ObservableSemanticVersion latestVersion = observableSemantic.versions().getLast();
86+
ObservableSemanticVersion latestVersion = getObservableSemanticFromSemanticEntity(semanticEntity);
9187

9288
for (ObservableField<?> observableField : latestVersion.fields()) {
9389
for (EditorFieldModel editorFieldModel : editorPatternModel.getFields()) {

kview/src/main/java/dev/ikm/komet/kview/mvvm/view/genpurpose/control/table/PatternSemanticsTablePresenter.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22

33
import dev.ikm.komet.framework.Identicon;
44
import dev.ikm.komet.framework.observable.ObservableComposer;
5-
import dev.ikm.komet.framework.observable.ObservableEntityHandle;
65
import dev.ikm.komet.framework.observable.ObservableField;
7-
import dev.ikm.komet.framework.observable.ObservableSemantic;
86
import dev.ikm.komet.framework.observable.ObservableSemanticVersion;
97
import dev.ikm.komet.framework.view.ObservableView;
108
import dev.ikm.komet.framework.view.ViewProperties;
119
import dev.ikm.komet.kview.controls.ComponentItem;
10+
import dev.ikm.komet.kview.mvvm.view.genpurpose.control.AbstractPatternSemanticsPresenter;
1211
import dev.ikm.komet.layout.PatternSemanticsPresenter;
1312
import dev.ikm.komet.layout.editor.model.EditorFieldModel;
1413
import dev.ikm.komet.layout.editor.model.EditorPatternModel;
@@ -27,7 +26,7 @@
2726
import java.util.List;
2827
import java.util.Map;
2928

30-
public class PatternSemanticsTablePresenter implements PatternSemanticsPresenter {
29+
public class PatternSemanticsTablePresenter extends AbstractPatternSemanticsPresenter implements PatternSemanticsPresenter {
3130

3231
private final ObservableComposer composer;
3332
private final ViewProperties viewProperties;
@@ -85,10 +84,7 @@ public void addNewSemantic(SemanticEntity<SemanticEntityVersion> semanticEntity)
8584
// Creating an editable version via composeSemantic()/getEditableVersion() would track this
8685
// semantic in the shared composer's transaction, causing a spurious new version to be
8786
// written for every displayed semantic when any single semantic is committed.
88-
ObservableSemantic observableSemantic = ObservableEntityHandle.get(semanticEntity.publicId())
89-
.asSemantic().orElseThrow(() -> new IllegalArgumentException(
90-
"Entity is not a semantic: " + semanticEntity.publicId()));
91-
ObservableSemanticVersion latestVersion = observableSemantic.versions().getLast();
87+
ObservableSemanticVersion latestVersion = getObservableSemanticFromSemanticEntity(semanticEntity);
9288

9389
List<SemanticField> fields = new ArrayList<>();
9490
for (ObservableField<?> observableField : latestVersion.fields()) {

0 commit comments

Comments
 (0)