Skip to content

Commit 12226d6

Browse files
committed
Additional updates to save&restore compare feature
1 parent 39674da commit 12226d6

File tree

18 files changed

+144
-113
lines changed

18 files changed

+144
-113
lines changed
3.85 KB
Loading

app/save-and-restore/app/doc/index.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ Configuration View
157157
------------------
158158

159159
A new configuration is created from the context menu launched when right-clicking on a folder node in the tree view.
160-
This will launch the configuration editor:
160+
This screenshot shows the configuration editor:
161161

162162
.. image:: images/configuration-editor.png
163163
:width: 80%
@@ -170,6 +170,9 @@ with PVs in the order they appear.
170170

171171
PV entries in a configuration marked as read only will be omitted whe performing a restore operation.
172172

173+
Compare Mode and Tolerance data is optional. This is used by the service when a client requests comparison between
174+
stored and live values of a snapshot. More information on this feature is found in the service documentation.
175+
173176
To add a very large number of PVs, user should consider the import feature available via the "Import Configuration file to this folder"
174177
option in the context menu of a folder node in the tree view.
175178

app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ComparisonDataEditorController.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,27 @@
44

55
package org.phoebus.applications.saveandrestore.ui.configuration;
66

7-
import javafx.beans.binding.Bindings;
8-
import javafx.beans.property.DoubleProperty;
97
import javafx.beans.property.ObjectProperty;
10-
import javafx.beans.property.SimpleDoubleProperty;
118
import javafx.beans.property.SimpleObjectProperty;
129
import javafx.beans.property.SimpleStringProperty;
1310
import javafx.beans.property.StringProperty;
1411
import javafx.collections.FXCollections;
1512
import javafx.fxml.FXML;
1613
import javafx.scene.control.ComboBox;
1714
import javafx.scene.control.TextField;
18-
import javafx.scene.control.TextFormatter;
19-
import javafx.util.converter.DoubleStringConverter;
20-
import org.phoebus.applications.saveandrestore.model.PvCompareMode;
15+
import org.phoebus.applications.saveandrestore.model.CompareMode;
2116

22-
import java.util.Arrays;
23-
import java.util.regex.Matcher;
2417
import java.util.regex.Pattern;
2518

2619
public class ComparisonDataEditorController {
2720

2821
@FXML
29-
private ComboBox<PvCompareMode> comparisonModeComboBox;
22+
private ComboBox<CompareMode> comparisonModeComboBox;
3023

3124
@FXML
3225
private TextField toleranceTextField;
3326

34-
private ObjectProperty<PvCompareMode> comparisonModeProperty = new SimpleObjectProperty<>();
27+
private ObjectProperty<CompareMode> comparisonModeProperty = new SimpleObjectProperty<>();
3528
private StringProperty toleranceProperty = new SimpleStringProperty();
3629
private Pattern pattern = Pattern.compile("\\d*(\\.?\\d*)?");
3730

@@ -42,7 +35,7 @@ public ComparisonDataEditorController(){
4235

4336
@FXML
4437
public void initialize(){
45-
comparisonModeComboBox.itemsProperty().set(FXCollections.observableArrayList(PvCompareMode.values()));
38+
comparisonModeComboBox.itemsProperty().set(FXCollections.observableArrayList(CompareMode.values()));
4639
comparisonModeComboBox.valueProperty().bind(comparisonModeProperty);
4740
toleranceTextField.textProperty().bindBidirectional(toleranceProperty);
4841

app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigPvEntry.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@
55
package org.phoebus.applications.saveandrestore.ui.configuration;
66

77
import javafx.beans.property.BooleanProperty;
8-
import javafx.beans.property.DoubleProperty;
98
import javafx.beans.property.ObjectProperty;
109
import javafx.beans.property.SimpleBooleanProperty;
11-
import javafx.beans.property.SimpleDoubleProperty;
1210
import javafx.beans.property.SimpleObjectProperty;
1311
import javafx.beans.property.SimpleStringProperty;
1412
import javafx.beans.property.StringProperty;
1513
import org.phoebus.applications.saveandrestore.model.ConfigPv;
16-
import org.phoebus.applications.saveandrestore.model.PvCompareMode;
14+
import org.phoebus.applications.saveandrestore.model.CompareMode;
1715

1816
import java.util.Objects;
1917

@@ -26,14 +24,14 @@ public class ConfigPvEntry implements Comparable<ConfigPvEntry> {
2624
private final StringProperty pvNameProperty;
2725
private final StringProperty readBackPvNameProperty;
2826
private final BooleanProperty readOnlyProperty;
29-
private final ObjectProperty<PvCompareMode> pvCompareModeProperty;
27+
private final ObjectProperty<CompareMode> compareModeProperty;
3028
private ObjectProperty<Double> toleranceProperty;
3129

3230
public ConfigPvEntry(ConfigPv configPv) {
3331
this.pvNameProperty = new SimpleStringProperty(this, "pvNameProperty", configPv.getPvName());
3432
this.readBackPvNameProperty = new SimpleStringProperty(configPv.getReadbackPvName());
3533
this.readOnlyProperty = new SimpleBooleanProperty(configPv.isReadOnly());
36-
this.pvCompareModeProperty = new SimpleObjectProperty(configPv.getPvCompareMode());
34+
this.compareModeProperty = new SimpleObjectProperty(configPv.getCompareMode());
3735
this.toleranceProperty = configPv.getTolerance() != null ?
3836
new SimpleObjectProperty<>(configPv.getTolerance()) : new SimpleObjectProperty<>(null);
3937
}
@@ -50,8 +48,8 @@ public BooleanProperty getReadOnlyProperty() {
5048
return readOnlyProperty;
5149
}
5250

53-
public ObjectProperty<PvCompareMode> getPvCompareModeProperty() {
54-
return pvCompareModeProperty;
51+
public ObjectProperty<CompareMode> getCompareModeProperty() {
52+
return compareModeProperty;
5553
}
5654

5755
public ObjectProperty<Double> getToleranceProperty() {
@@ -70,22 +68,22 @@ public void setReadOnlyProperty(boolean readOnlyProperty) {
7068
this.readOnlyProperty.set(readOnlyProperty);
7169
}
7270

73-
public void setPvCompareModeProperty(PvCompareMode pvCompareModeProperty) {
74-
this.pvCompareModeProperty.set(pvCompareModeProperty);
71+
public void setCompareModeProperty(CompareMode compareModeProperty) {
72+
this.compareModeProperty.set(compareModeProperty);
7573
}
7674

7775
public void setToleranceProperty(Double toleranceProperty) {
7876
this.toleranceProperty.set(toleranceProperty );
7977
}
8078

8179
public ConfigPv toConfigPv() {
82-
return ConfigPv.builder()
80+
ConfigPv configPv = ConfigPv.builder()
8381
.pvName(pvNameProperty.get())
8482
.readbackPvName(readBackPvNameProperty.get())
8583
.readOnly(readOnlyProperty.get())
86-
.pvCompareMode(pvCompareModeProperty.get())
87-
.tolerance(toleranceProperty.get())
84+
.compareMode(compareModeProperty.get())
8885
.build();
86+
return configPv;
8987
}
9088

9189
@Override

app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationController.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import javafx.scene.control.ButtonType;
3636
import javafx.scene.control.CheckBox;
3737
import javafx.scene.control.ContextMenu;
38-
import javafx.scene.control.Dialog;
3938
import javafx.scene.control.Label;
4039
import javafx.scene.control.MenuItem;
4140
import javafx.scene.control.SelectionMode;
@@ -59,7 +58,7 @@
5958
import org.phoebus.applications.saveandrestore.model.ConfigurationData;
6059
import org.phoebus.applications.saveandrestore.model.Node;
6160
import org.phoebus.applications.saveandrestore.model.NodeType;
62-
import org.phoebus.applications.saveandrestore.model.PvCompareMode;
61+
import org.phoebus.applications.saveandrestore.model.CompareMode;
6362
import org.phoebus.applications.saveandrestore.ui.NodeChangedListener;
6463
import org.phoebus.applications.saveandrestore.ui.SaveAndRestoreBaseController;
6564
import org.phoebus.applications.saveandrestore.ui.SaveAndRestoreService;
@@ -72,7 +71,6 @@
7271
import org.phoebus.ui.javafx.ImageCache;
7372
import org.phoebus.util.time.TimestampFormats;
7473

75-
import javax.naming.Context;
7674
import java.io.IOException;
7775
import java.time.Instant;
7876
import java.util.ArrayList;
@@ -102,7 +100,7 @@ public class ConfigurationController extends SaveAndRestoreBaseController implem
102100

103101
@FXML
104102
@SuppressWarnings("unused")
105-
private TableColumn<ConfigPvEntry, PvCompareMode> comparisonModeColumn;
103+
private TableColumn<ConfigPvEntry, CompareMode> comparisonModeColumn;
106104

107105
@FXML
108106
@SuppressWarnings("unused")
@@ -250,7 +248,7 @@ public void initialize() {
250248
readbackPvNameColumn.setOnEditCommit(t -> {
251249
t.getTableView().getItems().get(t.getTablePosition().getRow()).setReadBackPvNameProperty(t.getNewValue());
252250
if (t.getNewValue() == null || t.getNewValue().isEmpty()) {
253-
t.getTableView().getItems().get(t.getTablePosition().getRow()).setPvCompareModeProperty(null);
251+
t.getTableView().getItems().get(t.getTablePosition().getRow()).setCompareModeProperty(null);
254252
t.getTableView().getItems().get(t.getTablePosition().getRow()).setToleranceProperty(null);
255253
}
256254
setDirty(true);
@@ -263,11 +261,11 @@ public void initialize() {
263261
return readOnly;
264262
});
265263

266-
comparisonModeColumn.setCellValueFactory(cell -> cell.getValue().getPvCompareModeProperty());
264+
comparisonModeColumn.setCellValueFactory(cell -> cell.getValue().getCompareModeProperty());
267265
comparisonModeColumn.setCellFactory(callback -> {
268-
ObservableList<PvCompareMode> values = FXCollections.observableArrayList(Arrays.stream(PvCompareMode.values()).toList());
266+
ObservableList<CompareMode> values = FXCollections.observableArrayList(Arrays.stream(CompareMode.values()).toList());
269267
values.add(0, null);
270-
ComboBoxTableCell<ConfigPvEntry, PvCompareMode> tableCell = new ComboBoxTableCell<>(values) {
268+
ComboBoxTableCell<ConfigPvEntry, CompareMode> tableCell = new ComboBoxTableCell<>(values) {
271269

272270
/*
273271
@Override
@@ -283,33 +281,33 @@ public void startEdit() {
283281
*/
284282

285283
@Override
286-
public void commitEdit(PvCompareMode pvCompareMode) {
284+
public void commitEdit(CompareMode pvCompareMode) {
287285
if (pvCompareMode == null) {
288286
getTableView().getItems().get(getIndex()).setToleranceProperty(null);
289287
} else if (getTableView().getItems().get(getIndex()).getToleranceProperty().get() == null) {
290288
getTableView().getItems().get(getIndex()).setToleranceProperty(0.0);
291289
}
292-
getTableView().getItems().get(getIndex()).setPvCompareModeProperty(pvCompareMode);
290+
getTableView().getItems().get(getIndex()).setCompareModeProperty(pvCompareMode);
293291
setDirty(true);
294292
super.commitEdit(pvCompareMode);
295293
}
296294
};
297295

298-
StringConverter<PvCompareMode> converter = new StringConverter<>() {
296+
StringConverter<CompareMode> converter = new StringConverter<>() {
299297
@Override
300-
public String toString(PvCompareMode object) {
298+
public String toString(CompareMode object) {
301299
if (object == null) {
302300
return "";
303301
}
304302
return object.toString();
305303
}
306304

307305
@Override
308-
public PvCompareMode fromString(String string) {
306+
public CompareMode fromString(String string) {
309307
if (string == null) {
310308
return null;
311309
}
312-
return PvCompareMode.valueOf(string);
310+
return CompareMode.valueOf(string);
313311
}
314312
};
315313
tableCell.setConverter(converter);
@@ -581,7 +579,7 @@ private ComparisonData launchComparisonEditor(){
581579
return null;
582580
}
583581

584-
public record ComparisonData(PvCompareMode pvCompareMode, Double tolerance){
582+
public record ComparisonData(CompareMode pvCompareMode, Double tolerance){
585583

586584
}
587585
}

app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/messages.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ closeConfigurationWarning=Configuration modified, but not saved. Do you wish to
1919
closeCompositeSnapshotWarning=Composite snapshot modified, but not saved. Do you wish to continue?
2020
closeTabPrompt=Close tab?
2121
comment=Comment
22-
comparisonMode=Comparison Mode
23-
comparisonTolerance=Tolerance
22+
compareMode=Compare Mode
23+
compareTolerance=Tolerance
2424
compositeSnapshotConsistencyCheckFailed=Failed to check consistency for composite snapshot
2525
copy=Copy
2626
createdDate=Created

app/save-and-restore/app/src/main/resources/org/phoebus/applications/saveandrestore/ui/configuration/ConfigurationEditor.fxml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@
6161
<TableColumn fx:id="pvNameColumn" editable="true" prefWidth="${controlsPane.width * 0.35}" text="%pvName"/>
6262
<TableColumn fx:id="readOnlyColumn" editable="true" prefWidth="${controlsPane.width * 0.1}" text="%pvReadOnly"/>
6363
<TableColumn fx:id="readbackPvNameColumn" editable="true" prefWidth="${controlsPane.width * 0.35}" text="%pvNameReadback"/>
64-
<TableColumn fx:id="comparisonModeColumn" editable="true" prefWidth="${controlsPane.width * 0.1}" text="%comparisonMode"/>
65-
<TableColumn fx:id="toleranceColumn" editable="true" prefWidth="${controlsPane.width * 0.1}" text="%comparisonTolerance"/>
64+
<TableColumn fx:id="comparisonModeColumn" editable="true" prefWidth="${controlsPane.width * 0.1}" text="%compareMode"/>
65+
<TableColumn fx:id="toleranceColumn" editable="true" prefWidth="${controlsPane.width * 0.1}" text="%compareTolerance"/>
6666
</columns>
6767
</TableColumn>
6868

app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/PvCompareMode.java renamed to app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/CompareMode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/**
88
* Specifies how comparison between PV values should be performed.
99
*/
10-
public enum PvCompareMode {
10+
public enum CompareMode {
1111
RELATIVE,
1212
ABSOLUTE;
1313
}

app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/CompareResult.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class CompareResult{
2222

2323
private String pvName;
2424
private boolean equal;
25-
private PvCompareMode pvCompareMode;
25+
private CompareMode pvCompareMode;
2626
private double tolerance;
2727
@JsonSerialize(using = VTypeSerializer.class)
2828
@JsonDeserialize(using = VTypeDeserializer.class)
@@ -39,7 +39,7 @@ public CompareResult(){}
3939

4040
public CompareResult(String pvName,
4141
boolean equal,
42-
PvCompareMode pvCompareMode,
42+
CompareMode pvCompareMode,
4343
double tolerance,
4444
VType storedValue,
4545
VType liveValue,
@@ -58,7 +58,7 @@ public boolean isEqual() {
5858
return equal;
5959
}
6060

61-
public PvCompareMode getPvCompareMode() {
61+
public CompareMode getPvCompareMode() {
6262
return pvCompareMode;
6363
}
6464

app/save-and-restore/model/src/main/java/org/phoebus/applications/saveandrestore/model/ConfigPv.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
* is optionally associated with the PV name. A PV record is uniquely identified by both the PV name
2828
* and the read-back PV name (if it has been specified).
2929
* <p>
30-
* If a read-back PV name has been specified, a {@link PvCompareMode} can optionally be specified to
31-
* indicate how the stored read-back value is compared to the live read-back value
32-
* if a client requests it. A non-null {@link PvCompareMode} must be paired non-null and non-zero
33-
* {@link #tolerance} value.
30+
* A {@link CompareMode} can optionally be specified to
31+
* indicate how the stored value (as defined by the {@link #pvName} field) is compared to a live value
32+
* if a client requests it. A non-null {@link CompareMode} must be paired non-null and a
33+
* {@link #tolerance} value &ge;0.
3434
* </p>
3535
* @author georgweiss
3636
* Created 1 Oct 2018
@@ -52,7 +52,7 @@ public class ConfigPv implements Comparable<ConfigPv> {
5252
*/
5353
private boolean readOnly = false;
5454

55-
private PvCompareMode pvCompareMode;
55+
private CompareMode compareMode;
5656

5757
@JsonInclude(JsonInclude.Include.NON_NULL)
5858
private Double tolerance = null;
@@ -82,12 +82,12 @@ public void setReadOnly(boolean readOnly) {
8282
}
8383

8484

85-
public PvCompareMode getPvCompareMode() {
86-
return pvCompareMode;
85+
public CompareMode getCompareMode() {
86+
return compareMode;
8787
}
8888

89-
public void setPvCompareMode(PvCompareMode pvCompareMode) {
90-
this.pvCompareMode = pvCompareMode;
89+
public void setCompareMode(CompareMode compareMode) {
90+
this.compareMode = compareMode;
9191
}
9292

9393
public Double getTolerance() {
@@ -119,6 +119,8 @@ public String toString() {
119119
.append("PV name=").append(pvName)
120120
.append(", readback PV name=").append(readbackPvName)
121121
.append(", readOnly=").append(readOnly)
122+
.append(", compareMode=").append(compareMode)
123+
.append(", tolerance=").append(tolerance)
122124
.toString();
123125
}
124126

@@ -159,8 +161,8 @@ public Builder readOnly(boolean readOnly) {
159161
return this;
160162
}
161163

162-
public Builder pvCompareMode(PvCompareMode pvCompareMode) {
163-
configPv.setPvCompareMode(pvCompareMode);
164+
public Builder compareMode(CompareMode compareMode) {
165+
configPv.setCompareMode(compareMode);
164166
return this;
165167
}
166168

0 commit comments

Comments
 (0)