Skip to content

Commit db4c75d

Browse files
committed
[SML] Fix time range in conversion from generic feature to SML object
1 parent 277880c commit db4c75d

File tree

2 files changed

+20
-7
lines changed
  • lib-ogc/sensorml-core/src/main/java/org/vast/sensorML
  • sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/sensorml

2 files changed

+20
-7
lines changed

lib-ogc/sensorml-core/src/main/java/org/vast/sensorML/SMLBuilders.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import net.opengis.gml.v32.AbstractGeometry;
3636
import net.opengis.gml.v32.Point;
3737
import net.opengis.gml.v32.TimeIndeterminateValue;
38+
import net.opengis.gml.v32.TimePeriod;
3839
import net.opengis.gml.v32.impl.ReferenceImpl;
3940
import net.opengis.sensorml.v20.AbstractPhysicalProcess;
4041
import net.opengis.sensorml.v20.AbstractProcess;
@@ -245,6 +246,12 @@ public B addClassifier(TermBuilder term)
245246
return addClassifier(term.build());
246247
}
247248

249+
public B validTimePeriod(TimePeriod tp)
250+
{
251+
instance.addValidTimeAsTimePeriod(tp);
252+
return (B)this;
253+
}
254+
248255
public B validTimePeriod(OffsetDateTime begin, OffsetDateTime end)
249256
{
250257
var beginPos = gmlFac.newTimePosition();

sensorhub-service-consys/src/main/java/org/sensorhub/impl/service/consys/sensorml/SMLConverter.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
package org.sensorhub.impl.service.consys.sensorml;
1616

17-
import java.time.ZoneOffset;
1817
import javax.xml.namespace.QName;
18+
import org.vast.ogc.gml.GMLUtils;
1919
import org.vast.ogc.gml.IFeature;
2020
import org.vast.ogc.xlink.IXlinkReference;
2121
import org.vast.sensorML.SMLBuilders.AbstractProcessBuilder;
@@ -25,6 +25,7 @@
2525
import org.vast.sensorML.SMLFactory;
2626
import org.vast.sensorML.SMLHelper;
2727
import net.opengis.gml.v32.Point;
28+
import net.opengis.gml.v32.TimePeriod;
2829
import net.opengis.sensorml.v20.AbstractProcess;
2930
import net.opengis.sensorml.v20.Deployment;
3031

@@ -85,9 +86,8 @@ public AbstractProcess genericFeatureToSystem(IFeature f)
8586
var validTime = f.getValidTime();
8687
if (f.getValidTime() != null)
8788
{
88-
builder.validTimePeriod(
89-
validTime.begin().atOffset(ZoneOffset.UTC),
90-
validTime.end().atOffset(ZoneOffset.UTC));
89+
var timePrimitive = GMLUtils.timeExtentToTimePrimitive(validTime, true);
90+
builder.validTimePeriod((TimePeriod)timePrimitive);
9191
}
9292

9393
if (f.getGeometry() != null && builder instanceof PhysicalSystemBuilder)
@@ -154,9 +154,8 @@ else if (SWEConstants.DEF_PROCEDURE.equals(type) ||
154154
var validTime = f.getValidTime();
155155
if (f.getValidTime() != null)
156156
{
157-
builder.validTimePeriod(
158-
validTime.begin().atOffset(ZoneOffset.UTC),
159-
validTime.end().atOffset(ZoneOffset.UTC));
157+
var timePrimitive = GMLUtils.timeExtentToTimePrimitive(validTime, true);
158+
builder.validTimePeriod((TimePeriod)timePrimitive);
160159
}
161160

162161
return builder.build();
@@ -176,6 +175,13 @@ public Deployment genericFeatureToDeployment(IFeature f)
176175
.name(f.getName())
177176
.description(f.getDescription());
178177

178+
var validTime = f.getValidTime();
179+
if (f.getValidTime() != null)
180+
{
181+
var timePrimitive = GMLUtils.timeExtentToTimePrimitive(validTime, true);
182+
builder.validTimePeriod((TimePeriod)timePrimitive);
183+
}
184+
179185
if (f.getGeometry() != null)
180186
((DeploymentBuilder)builder).location(f.getGeometry());
181187
}

0 commit comments

Comments
 (0)