Skip to content

Commit 215661d

Browse files
committed
Changes to support new metadata type
1 parent 74d2111 commit 215661d

File tree

6 files changed

+145
-25
lines changed

6 files changed

+145
-25
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.imsweb.seerapi.client.staging;
2+
3+
import java.util.Objects;
4+
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
7+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
8+
9+
@JsonPropertyOrder({"name", "start", "end"})
10+
@JsonDeserialize(using = StagingMetadataDeserializer.class)
11+
public class StagingMetadata {
12+
13+
private String _name;
14+
private Integer _start;
15+
private Integer _end;
16+
17+
public StagingMetadata() {
18+
}
19+
20+
public StagingMetadata(String name) {
21+
_name = name;
22+
}
23+
24+
public StagingMetadata(String name, Integer start) {
25+
_name = name;
26+
_start = start;
27+
}
28+
29+
public StagingMetadata(String name, Integer start, Integer end) {
30+
_name = name;
31+
_start = start;
32+
_end = end;
33+
}
34+
35+
@JsonProperty("name")
36+
public String getName() {
37+
return _name;
38+
}
39+
40+
public void setName(String name) {
41+
_name = name;
42+
}
43+
44+
@JsonProperty("start")
45+
public Integer getStart() {
46+
return _start;
47+
}
48+
49+
public void setStart(Integer start) {
50+
_start = start;
51+
}
52+
53+
@JsonProperty("end")
54+
public Integer getEnd() {
55+
return _end;
56+
}
57+
58+
public void setEnd(Integer end) {
59+
_end = end;
60+
}
61+
62+
@Override
63+
public boolean equals(Object o) {
64+
if (this == o)
65+
return true;
66+
if (o == null || getClass() != o.getClass())
67+
return false;
68+
69+
StagingMetadata that = (StagingMetadata)o;
70+
return Objects.equals(_name, that._name) &&
71+
Objects.equals(_start, that._start) &&
72+
Objects.equals(_end, that._end);
73+
}
74+
75+
@Override
76+
public int hashCode() {
77+
return Objects.hash(_name, _start, _end);
78+
}
79+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.imsweb.seerapi.client.staging;
2+
3+
import java.io.IOException;
4+
5+
import com.fasterxml.jackson.core.JsonParser;
6+
import com.fasterxml.jackson.core.JsonProcessingException;
7+
import com.fasterxml.jackson.databind.DeserializationContext;
8+
import com.fasterxml.jackson.databind.JsonNode;
9+
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
10+
11+
public class StagingMetadataDeserializer extends StdDeserializer<StagingMetadata> {
12+
13+
public StagingMetadataDeserializer() {
14+
this(null);
15+
}
16+
17+
protected StagingMetadataDeserializer(Class<?> vc) {
18+
super(vc);
19+
}
20+
21+
@Override
22+
public StagingMetadata deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
23+
JsonNode node = jp.getCodec().readTree(jp);
24+
25+
if (node.isNull())
26+
return null;
27+
28+
if (node.isObject()) {
29+
StagingMetadata meta = new StagingMetadata();
30+
31+
if (node.get("name") != null)
32+
meta.setName(node.get("name").asText());
33+
if (node.get("start") != null)
34+
meta.setStart(node.get("start").asInt());
35+
if (node.get("end") != null)
36+
meta.setEnd(node.get("end").asInt());
37+
38+
return meta;
39+
}
40+
41+
return new StagingMetadata(node.asText());
42+
}
43+
}

src/main/java/com/imsweb/seerapi/client/staging/StagingSchema.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,8 @@
66
import java.util.Date;
77
import java.util.LinkedHashSet;
88
import java.util.List;
9-
import java.util.Map;
109
import java.util.Set;
1110

12-
import com.fasterxml.jackson.annotation.JsonIgnore;
1311
import com.fasterxml.jackson.annotation.JsonProperty;
1412
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
1513
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
@@ -200,11 +198,6 @@ public void setMappings(List<StagingMapping> mapping) {
200198
_mappings = mapping;
201199
}
202200

203-
@JsonIgnore
204-
public Map<String, StagingSchemaInput> getInputMap() {
205-
return null;
206-
}
207-
208201
@JsonProperty("involved_tables")
209202
public Set<String> getInvolvedTables() {
210203
return _involvedTables;

src/main/java/com/imsweb/seerapi/client/staging/StagingSchemaInput.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
*/
44
package com.imsweb.seerapi.client.staging;
55

6-
import java.util.HashSet;
7-
import java.util.LinkedHashSet;
8-
import java.util.Set;
6+
import java.util.ArrayList;
7+
import java.util.List;
98

109
import com.fasterxml.jackson.annotation.JsonProperty;
1110
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
12-
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
1311

1412
@JsonPropertyOrder({"key", "name", "description", "naaccr_item", "naaccr_xml_id", "values", "default", "table", "used_for_staging", "fail_on_invalid", "unit", "decimal_places", "metadata"})
1513
public class StagingSchemaInput {
@@ -24,7 +22,7 @@ public class StagingSchemaInput {
2422
private Boolean _usedForStaging;
2523
private String _unit;
2624
private Integer _decimalPlaces;
27-
private Set<String> _metadata;
25+
private List<StagingMetadata> _metadata;
2826

2927
/**
3028
* Morphia requires a default constructor
@@ -56,7 +54,7 @@ public StagingSchemaInput(StagingSchemaInput other) {
5654
setDefault(other.getDefault());
5755
setTable(other.getTable());
5856
if (other.getMetadata() != null)
59-
setMetadata(new HashSet<>(other.getMetadata()));
57+
setMetadata(new ArrayList<>(other.getMetadata()));
6058
setUsedForStaging(other.getUsedForStaging());
6159
setUnit(other.getUnit());
6260
setDecimalPlaces(other.getDecimalPlaces());
@@ -153,12 +151,11 @@ public void setUnit(String unit) {
153151
}
154152

155153
@JsonProperty("metadata")
156-
public Set<String> getMetadata() {
154+
public List<StagingMetadata> getMetadata() {
157155
return _metadata;
158156
}
159157

160-
@JsonDeserialize(as = LinkedHashSet.class)
161-
public void setMetadata(Set<String> metadata) {
158+
public void setMetadata(List<StagingMetadata> metadata) {
162159
_metadata = metadata;
163160
}
164161

src/main/java/com/imsweb/seerapi/client/staging/StagingSchemaOutput.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,11 @@
33
*/
44
package com.imsweb.seerapi.client.staging;
55

6-
import java.util.HashSet;
7-
import java.util.LinkedHashSet;
8-
import java.util.Set;
6+
import java.util.ArrayList;
7+
import java.util.List;
98

109
import com.fasterxml.jackson.annotation.JsonProperty;
1110
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
12-
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
1311

1412
@JsonPropertyOrder({"key", "name", "description", "naaccr_item", "naaccr_xml_id", "table", "default", "metadata"})
1513
public class StagingSchemaOutput {
@@ -21,7 +19,7 @@ public class StagingSchemaOutput {
2119
private String _naaccrXmlId;
2220
private String _table;
2321
private String _default;
24-
private Set<String> _metadata;
22+
private List<StagingMetadata> _metadata;
2523

2624
/**
2725
* Morphia requires a default constructor
@@ -53,7 +51,7 @@ public StagingSchemaOutput(StagingSchemaOutput other) {
5351
setTable(other.getTable());
5452
setDefault(other.getDefault());
5553
if (other.getMetadata() != null)
56-
setMetadata(new HashSet<>(other.getMetadata()));
54+
setMetadata(new ArrayList<>(other.getMetadata()));
5755
}
5856

5957
@JsonProperty("key")
@@ -120,12 +118,11 @@ public void setDefault(String aDefault) {
120118
}
121119

122120
@JsonProperty("metadata")
123-
public Set<String> getMetadata() {
121+
public List<StagingMetadata> getMetadata() {
124122
return _metadata;
125123
}
126124

127-
@JsonDeserialize(as = LinkedHashSet.class)
128-
public void setMetadata(Set<String> metadata) {
125+
public void setMetadata(List<StagingMetadata> metadata) {
129126
_metadata = metadata;
130127
}
131128

src/test/java/com/imsweb/seerapi/client/staging/StagingTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,4 +252,15 @@ public void testStagingGlossary() throws IOException {
252252
assertThat(matches).isEmpty();
253253
}
254254

255+
@Test
256+
public void testStagingMetadata() throws IOException {
257+
StagingSchema schema = _STAGING.schemaById("eod_public", "2.0", "brain").execute().body();
258+
assertThat(schema).isNotNull();
259+
260+
StagingSchemaInput mgmt = schema.getInputs().stream().filter(i -> i.getKey().equals("mgmt")).findFirst().orElse(null);
261+
assertThat(mgmt).isNotNull();
262+
263+
assertThat(mgmt.getMetadata()).extracting("name").containsExactlyInAnyOrder("COC_REQUIRED", "SEER_REQUIRED", "SSDI");
264+
}
265+
255266
}

0 commit comments

Comments
 (0)