Skip to content

Commit

Permalink
Fix insert result of empty value field
Browse files Browse the repository at this point in the history
  • Loading branch information
Carsten Hollmann committed Jun 30, 2021
1 parent 0c3971f commit eebbdfd
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -420,24 +420,28 @@ private Value<?> parseSweAbstractSimpleType(SweAbstractDataComponent dataCompone
throws CodedException {
Value<?> observedValue = null;
if (dataComponent instanceof SweQuantity) {
observedValue = new QuantityValue(Double.parseDouble(token));
observedValue = checkTokenNull(token) ? new QuantityValue() : new QuantityValue(Double.parseDouble(token));
observedValue.setUnit(((SweQuantity) dataComponent).getUom());
} else if (dataComponent instanceof SweBoolean) {
observedValue = new BooleanValue(Boolean.parseBoolean(token));
observedValue = checkTokenNull(token) ? new BooleanValue() : new BooleanValue(Boolean.parseBoolean(token));
} else if (dataComponent instanceof SweText) {
observedValue = new TextValue(token);
observedValue = checkTokenNull(token) ? new TextValue() : new TextValue(token);
} else if (dataComponent instanceof SweCategory) {
observedValue = new CategoryValue(token);
observedValue = checkTokenNull(token) ? new CategoryValue() : new CategoryValue(token);
observedValue.setUnit(((SweCategory) dataComponent).getCodeSpace());
} else if (dataComponent instanceof SweCount) {
observedValue = new CountValue(Integer.parseInt(token));
observedValue = checkTokenNull(token) ? new CountValue() : new CountValue(Integer.parseInt(token));
} else {
throw new NoApplicableCodeException().withMessage(SWE_FILE_NOT_SUPPORTTED_LOG_TEMPLATE,
dataComponent != null ? dataComponent.getClass().getName() : NULL);
}
return observedValue;
}

private boolean checkTokenNull(String token) {
return token == null || token.isEmpty() || token.equalsIgnoreCase(NULL) || token.equalsIgnoreCase("NaN");
}

private Value<?> parseSweDataRecord(SweDataRecord record, List<String> block, IncDecInteger tokenIndex,
ParameterHolder parameterHolder) throws CodedException {
boolean tokenIndexIncreased = false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,7 @@ private String getValueAsStringForObservedProperty(final DataEntity<?> observati
return value;
}
}
} else if (observedProperty.equals(definition)) {
} else if (observedProperty.equals(definition) && observation.hasValue()) {
if (observation instanceof QuantityDataEntity) {
return String.valueOf(((QuantityDataEntity) observation).getValue());
} else if (observation instanceof BooleanDataEntity) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;

import java.math.BigDecimal;
import java.net.URI;
Expand Down Expand Up @@ -754,7 +755,12 @@ protected void checkValue(OmObservation omObservation, DateTime time, Double obs
TimeInstant timeInstant = (TimeInstant) value.getPhenomenonTime();
assertThat(timeInstant.getValue().toDate(), is(time.toDate()));
QuantityValue quantityValue = (QuantityValue) value.getValue();
assertThat(quantityValue.getValue().doubleValue(), is(obsVal));
if (obsVal != null) {
assertTrue(quantityValue.isSetValue());
assertThat(quantityValue.getValue().doubleValue(), is(obsVal));
} else {
assertFalse(quantityValue.isSetValue());
}
assertThat(quantityValue.getUnit(), is(obsUnit));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
import org.n52.shetland.ogc.sos.request.InsertResultTemplateRequest;
import org.n52.shetland.ogc.sos.response.InsertResultResponse;
import org.n52.shetland.ogc.sos.response.InsertResultTemplateResponse;
import org.n52.shetland.ogc.swe.SweConstants;
import org.n52.shetland.ogc.swe.SweDataRecord;
import org.n52.shetland.ogc.swe.SweField;
import org.n52.shetland.ogc.swe.encoding.SweTextEncoding;
Expand All @@ -54,11 +53,11 @@
import org.n52.sos.event.events.ResultTemplateInsertion;
import org.n52.svalbard.encode.exception.EncodingException;

import net.opengis.swe.x20.DataRecordDocument;
import net.opengis.swe.x20.TextEncodingDocument;

public class InsertResultInsertDAOTest extends AbstractObservationInsertDAOTest {

private static final DateTime TIME4 = new DateTime("2013-07-18T03:00:00Z");;
private static final Double VAL4 = null;

@Before
public void setUp() throws OwsExceptionReport, ConverterException, EncodingException {
super.setUp();
Expand All @@ -81,15 +80,16 @@ public void testInsertResult() throws OwsExceptionReport, InterruptedException,
insertResultTemplate(RESULT_TEMPLATE, PROCEDURE3, OFFERING3, OBSPROP3, FEATURE3);
InsertResultRequest req = new InsertResultRequest();
req.setTemplateIdentifier(RESULT_TEMPLATE);
req.setResultValues(makeResultValueString(CollectionHelper.list(TIME1, TIME2, TIME3),
CollectionHelper.list(VAL1, VAL2, VAL3)));
req.setResultValues(makeResultValueString(CollectionHelper.list(TIME1, TIME2, TIME3, TIME4),
CollectionHelper.list(VAL1, VAL2, VAL3, VAL4)));
InsertResultResponse resp = insertResultDAO.insertResult(req);
this.serviceEventBus.submit(new ResultInsertion(req, resp));
assertInsertionAftermathBeforeAndAfterCacheReload();

checkObservation(OFFERING1, PROCEDURE3, OBSPROP3, TIME1, PROCEDURE3, OBSPROP3, FEATURE3, VAL1, TEMP_UNIT);
checkObservation(OFFERING2, PROCEDURE3, OBSPROP3, TIME2, PROCEDURE3, OBSPROP3, FEATURE3, VAL2, TEMP_UNIT);
checkObservation(OFFERING3, PROCEDURE3, OBSPROP3, TIME3, PROCEDURE3, OBSPROP3, FEATURE3, VAL3, TEMP_UNIT);
checkObservation(OFFERING3, PROCEDURE3, OBSPROP3, TIME4, PROCEDURE3, OBSPROP3, FEATURE3, VAL4, TEMP_UNIT);
}

private void insertResultTemplate(String identifier, String procedureId, String offeringId, String obsPropId,
Expand Down Expand Up @@ -145,7 +145,9 @@ private String makeResultValueString(List<DateTime> times, List<Double> values)
}
sb.append(times.get(i));
sb.append(TOKEN_SEPARATOR);
sb.append(values.get(i));
if (values.get(i) != null) {
sb.append(values.get(i));
}
}
return sb.toString();
}
Expand Down

0 comments on commit eebbdfd

Please sign in to comment.