Skip to content

Commit d98f8bb

Browse files
authored
Add range getters and setters to FilterFacetOption model (#135)
1 parent e5ff156 commit d98f8bb

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

constructorio-client/src/main/java/io/constructor/client/models/FilterFacetOption.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public class FilterFacetOption {
2121
@SerializedName("value")
2222
private String value;
2323

24+
@SerializedName("range")
25+
private Object[] range; // Array to hold two values of either Number or "inf", "-inf"
26+
2427
/**
2528
* @return the counts
2629
*/
@@ -56,6 +59,13 @@ public String getValue() {
5659
return value;
5760
}
5861

62+
/**
63+
* @return the range
64+
*/
65+
public Object[] getRange() {
66+
return range;
67+
}
68+
5969
public void setCount(Integer count) {
6070
this.count = count;
6171
}
@@ -75,4 +85,32 @@ public void setStatus(String status) {
7585
public void setValue(String value) {
7686
this.value = value;
7787
}
88+
89+
public void setRange(Object[] range) {
90+
if (range != null && range.length != 2) {
91+
throw new IllegalArgumentException("Range array must contain exactly two elements.");
92+
}
93+
94+
Object[] validatedRange = new Object[2];
95+
for (int i = 0; i < range.length; i++) {
96+
validatedRange[i] = validateRangeElement(range[i]);
97+
}
98+
this.range = validatedRange;
99+
}
100+
101+
/**
102+
* Validates a single range element. Each element should be string "inf" or "-inf" or a Number
103+
*/
104+
private Object validateRangeElement(Object element) {
105+
if (element instanceof Number) {
106+
return element;
107+
} else if (element instanceof String) {
108+
String str = (String) element;
109+
if (str.equals("inf") || str.equals("-inf")) {
110+
return str;
111+
}
112+
}
113+
throw new IllegalArgumentException(
114+
"Each element of a range must be a Number or the string 'inf' or '-inf'");
115+
}
78116
}

constructorio-client/src/test/java/io/constructor/client/FiltersTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@ public void facetOption() throws Exception {
7979
assertEquals(facet.getDisplayName(), "Jif");
8080
assertEquals(facet.getStatus(), "");
8181
assertEquals(facet.getValue(), "Jif");
82+
assertEquals(facet.getRange()[0], "-inf");
83+
assertEquals(facet.getRange()[1], 10.0);
84+
Object[] range = {10, "inf"};
85+
facet.setRange(range);
86+
assertEquals(facet.getRange()[0], 10);
87+
assertEquals(facet.getRange()[1], "inf");
8288
}
8389

8490
@Test

constructorio-client/src/test/resources/facetoption.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,6 @@
33
"data": {},
44
"display_name": "Jif",
55
"status": "",
6-
"value": "Jif"
6+
"value": "Jif",
7+
"range": ["-inf", 10]
78
}

0 commit comments

Comments
 (0)