Skip to content

Commit 48e4464

Browse files
Merge pull request #232 from rosette-api/RLPNC-7496-master-specify-record-parameters
RLPNC-7496: Support specifying parameters + universes in Java Bindings
2 parents bb3410b + a1095a4 commit 48e4464

2 files changed

Lines changed: 123 additions & 3 deletions

File tree

json/src/test/java/com/basistech/rosette/apimodel/RecordSimilarityRequestTest.java

Lines changed: 117 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,15 @@ class RecordSimilarityRequestTest {
4343
private static final ObjectMapper MAPPER = ApiModelMixinModule.setupObjectMapper(new ObjectMapper());
4444

4545
private static final String EXPECTED_JSON = "{\"fields\":{\"dob2\":{\"type\":\"rni_date\",\"weight\":0.1},\"primaryName\":{\"type\":\"rni_name\",\"weight\":0.5},\"dob\":{\"type\":\"rni_date\",\"weight\":0.2},\"addr\":{\"type\":\"rni_address\",\"weight\":0.5}},\"properties\":{\"threshold\":0.7,\"includeExplainInfo\":true},\"records\":{\"left\":[{\"dob2\":{\"date\":\"1993/04/16\"},\"primaryName\":{\"text\":\"Ethan R\",\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\"},\"dob\":\"1993-04-16\",\"addr\":\"123 Roadlane Ave\"},{\"primaryName\":{\"text\":\"Evan R\"},\"dob\":{\"date\":\"1993-04-16\"}}],\"right\":[{\"primaryName\":{\"text\":\"Seth R\",\"language\":\"eng\"},\"dob\":{\"date\":\"1993-04-16\"}},{\"dob2\":{\"date\":\"1993/04/16\"},\"primaryName\":\"Ivan R\",\"dob\":{\"date\":\"1993-04-16\"},\"addr\":{\"address\":\"123 Roadlane Ave\"}}]}}";
46+
private static final String EXPECTED_JSON_WITH_PARAMS = "{\"fields\":{\"dob2\":{\"type\":\"rni_date\",\"weight\":0.1},\"primaryName\":{\"type\":\"rni_name\",\"weight\":0.5},\"dob\":{\"type\":\"rni_date\",\"weight\":0.2},\"addr\":{\"type\":\"rni_address\",\"weight\":0.5}},\"properties\":{\"threshold\":0.7,\"includeExplainInfo\":true,\"parameters\":{\"timeDistanceWeight\":\"0.8\",\"stringDistanceWeight\":\"0.1\"}},\"records\":{\"left\":[{\"dob2\":{\"date\":\"1993/04/16\"},\"primaryName\":{\"text\":\"Ethan R\",\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\"},\"dob\":\"1993-04-16\",\"addr\":\"123 Roadlane Ave\"},{\"primaryName\":{\"text\":\"Evan R\"},\"dob\":{\"date\":\"1993-04-16\"}}],\"right\":[{\"primaryName\":{\"text\":\"Seth R\",\"language\":\"eng\"},\"dob\":{\"date\":\"1993-04-16\"}},{\"dob2\":{\"date\":\"1993/04/16\"},\"primaryName\":\"Ivan R\",\"dob\":{\"date\":\"1993-04-16\"},\"addr\":{\"address\":\"123 Roadlane Ave\"}}]}}";
47+
private static final String EXPECTED_JSON_WITH_UNIVERSE = "{\"fields\":{\"dob2\":{\"type\":\"rni_date\",\"weight\":0.1},\"primaryName\":{\"type\":\"rni_name\",\"weight\":0.5},\"dob\":{\"type\":\"rni_date\",\"weight\":0.2},\"addr\":{\"type\":\"rni_address\",\"weight\":0.5}},\"properties\":{\"threshold\":0.7,\"includeExplainInfo\":true,\"parameterUniverse\":\"myParameterUniverse\"},\"records\":{\"left\":[{\"dob2\":{\"date\":\"1993/04/16\"},\"primaryName\":{\"text\":\"Ethan R\",\"entityType\":\"PERSON\",\"language\":\"eng\",\"languageOfOrigin\":\"eng\",\"script\":\"Latn\"},\"dob\":\"1993-04-16\",\"addr\":\"123 Roadlane Ave\"},{\"primaryName\":{\"text\":\"Evan R\"},\"dob\":{\"date\":\"1993-04-16\"}}],\"right\":[{\"primaryName\":{\"text\":\"Seth R\",\"language\":\"eng\"},\"dob\":{\"date\":\"1993-04-16\"}},{\"dob2\":{\"date\":\"1993/04/16\"},\"primaryName\":\"Ivan R\",\"dob\":{\"date\":\"1993-04-16\"},\"addr\":{\"address\":\"123 Roadlane Ave\"}}]}}";
48+
4649
private static final RecordSimilarityRequest EXPECTED_REQUEST = RecordSimilarityRequest.builder()
4750
.fields(Map.of(
48-
"primaryName", RecordSimilarityFieldInfo.builder().type(RecordFieldType.NAME).weight(0.5).build(),
49-
"dob", RecordSimilarityFieldInfo.builder().type(RecordFieldType.DATE).weight(0.2).build(),
51+
"addr", RecordSimilarityFieldInfo.builder().type(RecordFieldType.ADDRESS).weight(0.5).build(),
5052
"dob2", RecordSimilarityFieldInfo.builder().type(RecordFieldType.DATE).weight(0.1).build(),
51-
"addr", RecordSimilarityFieldInfo.builder().type(RecordFieldType.ADDRESS).weight(0.5).build()))
53+
"primaryName", RecordSimilarityFieldInfo.builder().type(RecordFieldType.NAME).weight(0.5).build(),
54+
"dob", RecordSimilarityFieldInfo.builder().type(RecordFieldType.DATE).weight(0.2).build()))
5255
.properties(RecordSimilarityProperties.builder().threshold(0.7).includeExplainInfo(true).build())
5356
.records(RecordSimilarityRecords.builder()
5457
.left(
@@ -85,17 +88,128 @@ class RecordSimilarityRequestTest {
8588
).build()
8689
).build();
8790

91+
private static final RecordSimilarityRequest EXPECTED_REQUEST_WITH_PARAMS = RecordSimilarityRequest.builder()
92+
.fields(Map.of(
93+
"dob2", RecordSimilarityFieldInfo.builder().type(RecordFieldType.DATE).weight(0.1).build(),
94+
"primaryName", RecordSimilarityFieldInfo.builder().type(RecordFieldType.NAME).weight(0.5).build(),
95+
"dob", RecordSimilarityFieldInfo.builder().type(RecordFieldType.DATE).weight(0.2).build(),
96+
"addr", RecordSimilarityFieldInfo.builder().type(RecordFieldType.ADDRESS).weight(0.5).build()))
97+
.properties(RecordSimilarityProperties.builder()
98+
.threshold(0.7)
99+
.includeExplainInfo(true)
100+
.parameters(
101+
Map.of(
102+
"timeDistanceWeight", "0.8",
103+
"stringDistanceWeight", "0.1"
104+
)
105+
)
106+
.build())
107+
.records(RecordSimilarityRecords.builder()
108+
.left(
109+
List.of(
110+
Map.of(
111+
"primaryName", NameField.FieldedName.builder()
112+
.text("Ethan R").entityType("PERSON")
113+
.language(LanguageCode.ENGLISH)
114+
.languageOfOrigin(LanguageCode.ENGLISH)
115+
.script(ISO15924.Latn)
116+
.build(),
117+
"dob", DateField.UnfieldedDate.builder().date("1993-04-16").build(),
118+
"dob2", DateField.FieldedDate.builder().date("1993/04/16").build(),
119+
"addr", AddressField.UnfieldedAddress.builder().address("123 Roadlane Ave").build()
120+
),
121+
Map.of(
122+
"primaryName", NameField.FieldedName.builder().text("Evan R").build(),
123+
"dob", DateField.FieldedDate.builder().date("1993-04-16").build()
124+
)
125+
)
126+
).right(
127+
List.of(
128+
Map.of(
129+
"primaryName", NameField.FieldedName.builder().text("Seth R").language(LanguageCode.ENGLISH).build(),
130+
"dob", DateField.FieldedDate.builder().date("1993-04-16").build()
131+
),
132+
Map.of(
133+
"primaryName", NameField.UnfieldedName.builder().text("Ivan R").build(),
134+
"dob", DateField.FieldedDate.builder().date("1993-04-16").build(),
135+
"dob2", DateField.FieldedDate.builder().date("1993/04/16").build(),
136+
"addr", AddressField.FieldedAddress.builder().address("123 Roadlane Ave").build()
137+
)
138+
)
139+
).build()
140+
).build();
141+
142+
private static final RecordSimilarityRequest EXPECTED_REQUEST_WITH_UNIVERSE = RecordSimilarityRequest.builder()
143+
.fields(Map.of(
144+
"dob", RecordSimilarityFieldInfo.builder().type(RecordFieldType.DATE).weight(0.2).build(),
145+
"primaryName", RecordSimilarityFieldInfo.builder().type(RecordFieldType.NAME).weight(0.5).build(),
146+
"dob2", RecordSimilarityFieldInfo.builder().type(RecordFieldType.DATE).weight(0.1).build(),
147+
"addr", RecordSimilarityFieldInfo.builder().type(RecordFieldType.ADDRESS).weight(0.5).build()))
148+
.properties(RecordSimilarityProperties.builder()
149+
.threshold(0.7)
150+
.includeExplainInfo(true)
151+
.parameterUniverse("myParameterUniverse")
152+
.build())
153+
.records(RecordSimilarityRecords.builder()
154+
.left(
155+
List.of(
156+
Map.of(
157+
"primaryName", NameField.FieldedName.builder()
158+
.text("Ethan R").entityType("PERSON")
159+
.language(LanguageCode.ENGLISH)
160+
.languageOfOrigin(LanguageCode.ENGLISH)
161+
.script(ISO15924.Latn)
162+
.build(),
163+
"dob", DateField.UnfieldedDate.builder().date("1993-04-16").build(),
164+
"dob2", DateField.FieldedDate.builder().date("1993/04/16").build(),
165+
"addr", AddressField.UnfieldedAddress.builder().address("123 Roadlane Ave").build()
166+
),
167+
Map.of(
168+
"primaryName", NameField.FieldedName.builder().text("Evan R").build(),
169+
"dob", DateField.FieldedDate.builder().date("1993-04-16").build()
170+
)
171+
)
172+
).right(
173+
List.of(
174+
Map.of(
175+
"primaryName", NameField.FieldedName.builder().text("Seth R").language(LanguageCode.ENGLISH).build(),
176+
"dob", DateField.FieldedDate.builder().date("1993-04-16").build()
177+
),
178+
Map.of(
179+
"primaryName", NameField.UnfieldedName.builder().text("Ivan R").build(),
180+
"dob", DateField.FieldedDate.builder().date("1993-04-16").build(),
181+
"dob2", DateField.FieldedDate.builder().date("1993/04/16").build(),
182+
"addr", AddressField.FieldedAddress.builder().address("123 Roadlane Ave").build()
183+
)
184+
)
185+
).build()
186+
).build();
187+
88188
@Test
89189
void testDeserialization() throws JsonProcessingException {
90190
final RecordSimilarityRequest request = MAPPER.readValue(EXPECTED_JSON, new TypeReference<>() { });
91191
assertEquals(EXPECTED_REQUEST, request);
192+
193+
final RecordSimilarityRequest requestParams = MAPPER.readValue(EXPECTED_JSON_WITH_PARAMS, new TypeReference<>() { });
194+
assertEquals(EXPECTED_REQUEST_WITH_PARAMS, requestParams);
195+
196+
final RecordSimilarityRequest requestUniverse = MAPPER.readValue(EXPECTED_JSON_WITH_UNIVERSE, new TypeReference<>() { });
197+
assertEquals(EXPECTED_REQUEST_WITH_UNIVERSE, requestUniverse);
92198
}
93199

94200
@Test
95201
void testSerialization() throws JsonProcessingException {
96202
final JsonNode expectedJson = MAPPER.readTree(EXPECTED_JSON);
97203
final JsonNode actualJson = MAPPER.valueToTree(EXPECTED_REQUEST);
98204
assertEquals(expectedJson, actualJson);
205+
206+
final JsonNode expectedParamJson = MAPPER.readTree(EXPECTED_JSON_WITH_PARAMS);
207+
final JsonNode actualParamJson = MAPPER.valueToTree(EXPECTED_REQUEST_WITH_PARAMS);
208+
assertEquals(expectedParamJson, actualParamJson);
209+
210+
final JsonNode expectedUniverseJson = MAPPER.readTree(EXPECTED_JSON_WITH_UNIVERSE);
211+
final JsonNode actualUniverseJson = MAPPER.valueToTree(EXPECTED_REQUEST_WITH_UNIVERSE);
212+
assertEquals(expectedUniverseJson, actualUniverseJson);
99213
}
100214

101215
}

model/src/main/java/com/basistech/rosette/apimodel/recordsimilarity/RecordSimilarityProperties.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package com.basistech.rosette.apimodel.recordsimilarity;
1818

19+
import java.util.Map;
20+
21+
import com.fasterxml.jackson.annotation.JsonInclude;
1922
import javax.validation.Valid;
2023
import javax.validation.constraints.NotNull;
2124
import lombok.Builder;
@@ -25,8 +28,11 @@
2528
@Jacksonized
2629
@Builder
2730
@Value
31+
@JsonInclude(JsonInclude.Include.NON_NULL)
2832
public class RecordSimilarityProperties {
2933
@Builder.Default
3034
@NotNull @Valid Double threshold = 0.0;
3135
@NotNull @Valid Boolean includeExplainInfo;
36+
@Valid Map<String, String> parameters;
37+
@Valid String parameterUniverse;
3238
}

0 commit comments

Comments
 (0)