1 package de.dlr.shepard.context.references.spatialdatareference;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4
5 import de.dlr.shepard.auth.users.entities.User;
6 import de.dlr.shepard.context.collection.entities.DataObject;
7 import de.dlr.shepard.context.references.spatialdata.entities.SpatialDataReference;
8 import de.dlr.shepard.context.references.spatialdata.io.SpatialDataReferenceIO;
9 import de.dlr.shepard.data.spatialdata.io.FilterCondition;
10 import de.dlr.shepard.data.spatialdata.io.Operator;
11 import de.dlr.shepard.data.spatialdata.model.SpatialDataContainer;
12 import de.dlr.shepard.data.spatialdata.model.geometryFilter.KNearestNeighbor;
13 import java.util.Date;
14 import java.util.List;
15 import java.util.Map;
16 import nl.jqno.equalsverifier.EqualsVerifier;
17 import org.junit.jupiter.api.Test;
18
19 public class SpatialDataReferenceIOTest {
20
21 @Test
22 public void equalsContract() {
23 EqualsVerifier.simple().forClass(SpatialDataReferenceIO.class).verify();
24 }
25
26 @Test
27 public void testConversion() {
28 var date = new Date();
29 var user = new User("arthur");
30 var update = new Date();
31 var updateUser = new User("dutch");
32 var dataObject = new DataObject(2L);
33 dataObject.setShepardId(500L);
34 var container = new SpatialDataContainer(3L);
35 var geometryFilter = new KNearestNeighbor(5, 10.0, 20.0, 30.0);
36 var measurementFilter = List.of((new FilterCondition("temperature,val", Operator.EQUALS, 20)));
37 var startTime = 2L;
38 var endTime = 4L;
39 var metaData = Map.of("track", 1, "layer", 4, "key", Map.of("subKey", "some data"));
40 var limit = 100;
41 var skip = 5;
42
43 var spatialDataReference = new SpatialDataReference(1L);
44 spatialDataReference.setShepardId(341L);
45 spatialDataReference.setCreatedAt(date);
46 spatialDataReference.setCreatedBy(user);
47 spatialDataReference.setUpdatedAt(update);
48 spatialDataReference.setUpdatedBy(updateUser);
49 spatialDataReference.setName("SpatialDataReferenceTest");
50 spatialDataReference.setDataObject(dataObject);
51 spatialDataReference.setSpatialDataContainer(container);
52 spatialDataReference.setGeometryFilter(
53 "{ \"type\": \"K_NEAREST_NEIGHBOR\", \"k\": 5, \"x\": 10, \"y\": 20, \"z\": 30}"
54 );
55 spatialDataReference.setMeasurementsFilter(
56 "[{ \"key\": \"temperature,val\", \"operator\": \"EQUALS\", \"value\": 20 }]"
57 );
58 spatialDataReference.setStartTime(startTime);
59 spatialDataReference.setEndTime(endTime);
60 spatialDataReference.setMetadata("{ \"track\":1, \"layer\":4, \"key\":{ \"subKey\": \"some data\" } }");
61 spatialDataReference.setLimit(limit);
62 spatialDataReference.setSkip(skip);
63
64 var converted = new SpatialDataReferenceIO(spatialDataReference);
65 assertEquals(spatialDataReference.getShepardId(), converted.getId());
66 assertEquals(spatialDataReference.getCreatedAt(), converted.getCreatedAt());
67 assertEquals("arthur", converted.getCreatedBy());
68 assertEquals(spatialDataReference.getUpdatedAt(), converted.getUpdatedAt());
69 assertEquals("dutch", converted.getUpdatedBy());
70 assertEquals(spatialDataReference.getName(), converted.getName());
71 assertEquals(dataObject.getShepardId(), converted.getDataObjectId());
72 assertEquals(container.getId(), converted.getSpatialDataContainerId());
73 assertEquals(geometryFilter, converted.getGeometryFilter());
74 assertEquals(measurementFilter, converted.getMeasurementsFilter());
75 assertEquals(spatialDataReference.getStartTime(), converted.getStartTime());
76 assertEquals(spatialDataReference.getEndTime(), converted.getEndTime());
77 assertEquals(metaData, converted.getMetadataFilter());
78 assertEquals(spatialDataReference.getLimit(), converted.getLimit());
79 assertEquals(spatialDataReference.getSkip(), converted.getSkip());
80 }
81
82 @Test
83 public void testConversion_ContainerNull() {
84 var date = new Date();
85 var user = new User("arthur");
86 var update = new Date();
87 var updateUser = new User("dutch");
88 var dataObject = new DataObject(2L);
89 dataObject.setShepardId(500L);
90 var geometryFilter = new KNearestNeighbor(5, 10.0, 20.0, 30.0);
91 var measurementFilter = List.of((new FilterCondition("temperature,val", Operator.EQUALS, 20)));
92 var startTime = 2L;
93 var endTime = 4L;
94 var metaData = Map.of("track", 1, "layer", 4, "key", Map.of("subKey", "some data"));
95 var limit = 100;
96 var skip = 5;
97
98 var spatialDataReference = new SpatialDataReference(1L);
99 spatialDataReference.setShepardId(341L);
100 spatialDataReference.setCreatedAt(date);
101 spatialDataReference.setCreatedBy(user);
102 spatialDataReference.setUpdatedAt(update);
103 spatialDataReference.setUpdatedBy(updateUser);
104 spatialDataReference.setName("SpatialDataReferenceTest");
105 spatialDataReference.setDataObject(dataObject);
106 spatialDataReference.setGeometryFilter(
107 "{ \"type\": \"K_NEAREST_NEIGHBOR\", \"k\": 5, \"x\": 10, \"y\": 20, \"z\": 30}"
108 );
109 spatialDataReference.setMeasurementsFilter(
110 "[{ \"key\": \"temperature,val\", \"operator\": \"EQUALS\", \"value\": 20 }]"
111 );
112 spatialDataReference.setStartTime(startTime);
113 spatialDataReference.setEndTime(endTime);
114 spatialDataReference.setMetadata("{ \"track\":1, \"layer\":4, \"key\":{ \"subKey\": \"some data\" } }");
115 spatialDataReference.setLimit(limit);
116 spatialDataReference.setSkip(skip);
117
118 var converted = new SpatialDataReferenceIO(spatialDataReference);
119 assertEquals(spatialDataReference.getShepardId(), converted.getId());
120 assertEquals(spatialDataReference.getCreatedAt(), converted.getCreatedAt());
121 assertEquals("arthur", converted.getCreatedBy());
122 assertEquals(spatialDataReference.getUpdatedAt(), converted.getUpdatedAt());
123 assertEquals("dutch", converted.getUpdatedBy());
124 assertEquals(spatialDataReference.getName(), converted.getName());
125 assertEquals(dataObject.getShepardId(), converted.getDataObjectId());
126 assertEquals(geometryFilter, converted.getGeometryFilter());
127 assertEquals(measurementFilter, converted.getMeasurementsFilter());
128 assertEquals(spatialDataReference.getStartTime(), converted.getStartTime());
129 assertEquals(spatialDataReference.getEndTime(), converted.getEndTime());
130 assertEquals(metaData, converted.getMetadataFilter());
131 assertEquals(spatialDataReference.getLimit(), converted.getLimit());
132 assertEquals(spatialDataReference.getSkip(), converted.getSkip());
133 assertEquals(-1, converted.getSpatialDataContainerId());
134 }
135 }