Skip to content

Commit 28a473a

Browse files
committed
Support delta value sorting on string PVs
1 parent 14cf185 commit 28a473a

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

app/save-and-restore/util/src/main/java/org/phoebus/saveandrestore/util/Utilities.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -663,11 +663,10 @@ public static VTypeComparison valueToCompareString(VType value, VType baseValue,
663663
int diff = b == null ? (c == null ? 0 : 1) : (c == null ? -1 : b.compareTo(c));
664664
return new VTypeComparison(str, diff, diff == 0);
665665
} else if (value instanceof VString && baseValue instanceof VString) {
666-
String str = valueToString(value);
667666
String b = ((VString) value).getValue();
668667
String c = ((VString) baseValue).getValue();
669668
int diff = b == null ? (c == null ? 0 : 1) : (c == null ? -1 : b.compareTo(c));
670-
return new VTypeComparison(str, diff, diff == 0);
669+
return new VTypeComparison(b, diff,diff == 0, Math.abs(diff));
671670
} else if (value instanceof VNumberArray && baseValue instanceof VNumberArray) {
672671
String sb = valueToString(value);
673672
boolean equal = areValuesEqual(value, baseValue, Optional.empty());
@@ -873,11 +872,10 @@ public static VTypeComparison deltaValueToString(VType value, VType baseValue, O
873872
int diff = b == null ? (c == null ? 0 : 1) : (c == null ? -1 : b.compareTo(c));
874873
return new VTypeComparison(str, diff, diff == 0);
875874
} else if (value instanceof VString && baseValue instanceof VString) {
876-
String str = valueToString(value);
877875
String b = ((VString) value).getValue();
878876
String c = ((VString) baseValue).getValue();
879877
int diff = b == null ? (c == null ? 0 : 1) : (c == null ? -1 : b.compareTo(c));
880-
return new VTypeComparison(str, diff, diff == 0);
878+
return new VTypeComparison(b, diff, diff == 0, Math.abs(diff));
881879
} else if (value instanceof VNumberArray && baseValue instanceof VNumberArray) {
882880
boolean equal = areValuesEqual(value, baseValue, Optional.empty());
883881
return new VTypeComparison(equal ? "---" : "NOT EQUAL", equal ? 0 : 1, equal);

app/save-and-restore/util/src/test/java/org/phoebus/saveandrestore/util/UtilitiesTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,8 @@ public void testValueToCompareString() {
702702
assertEquals("a", result.getString());
703703
assertTrue(result.getValuesEqual() < 0);
704704
assertFalse(result.isWithinThreshold());
705-
assertEquals(0, result.getAbsoluteDelta(), 0.0);
705+
int delta = ((VString) val1).getValue().compareTo(((VString) val2).getValue());
706+
assertEquals(Math.abs(delta), result.getAbsoluteDelta(), 0.0);
706707
}
707708

708709
/**

0 commit comments

Comments
 (0)