diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/factory/data/OverwrittenData.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/factory/data/OverwrittenData.java index 35fceddb3..54a1afe06 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/factory/data/OverwrittenData.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/factory/data/OverwrittenData.java @@ -24,6 +24,7 @@ import com.google.gson.JsonObject; import io.micronaut.context.annotation.Prototype; import io.micronaut.http.HttpStatus; +import org.apache.commons.lang3.StringUtils; import org.brapi.v2.model.pheno.BrAPIObservation; import org.breedinginsight.api.model.v1.response.ValidationError; import org.breedinginsight.brapi.v2.constants.BrAPIAdditionalInfoFields; @@ -181,7 +182,7 @@ private boolean isValueMatched() { } private boolean isTimestampMatched() { - if (timestamp == null) { + if (StringUtils.isBlank(timestamp)) { return observation.getObservationTimeStamp() == null; } else { return observationService.parseDateTime(timestamp).equals(observation.getObservationTimeStamp()); diff --git a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/process/ImportTableProcess.java b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/process/ImportTableProcess.java index 0013f0458..6863cd561 100644 --- a/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/process/ImportTableProcess.java +++ b/src/main/java/org/breedinginsight/brapps/importer/services/processors/experiment/appendoverwrite/middleware/process/ImportTableProcess.java @@ -265,7 +265,9 @@ public AppendOverwriteMiddlewareContext process(AppendOverwriteMiddlewareContext BrAPIObservation observation = gson.fromJson(gson.toJson(observationByObsHash.get(observationHash)), BrAPIObservation.class); // Is there a change to the prior data? - if ((!cellData.isBlank() && !cellData.equals(observation.getValue())) || (cell.timestamp != null && !observationService.parseDateTime(cell.timestamp).equals(observation.getObservationTimeStamp()))) { + if ( + isChanged(cellData, observation, cell.timestamp) + ) { // Is prior data protected? /** @@ -380,4 +382,14 @@ public AppendOverwriteMiddlewareContext process(AppendOverwriteMiddlewareContext return this.compensate(context); } } + + private boolean isChanged(String cellData, BrAPIObservation observation, String newTimestamp) { + if (!cellData.isBlank() && !cellData.equals(observation.getValue())){ + return true; + } + if (StringUtils.isBlank(newTimestamp)) { + return (observation.getObservationTimeStamp()!=null); + } + return !observationService.parseDateTime(newTimestamp).equals(observation.getObservationTimeStamp()); + } }