package org.activityinfo.core.shared.importing.validation; import org.activityinfo.model.resource.ResourceId; import org.activityinfo.core.shared.Pair; import org.activityinfo.core.shared.importing.strategy.InstanceScorer; public class ValidationResult { public static enum State { OK, MISSING, ERROR, CONFIDENCE } public static final ValidationResult MISSING = new ValidationResult(State.MISSING) { }; public static final ValidationResult OK = new ValidationResult(State.OK) { }; private final State state; private Pair<ResourceId, ResourceId> rangeWithInstanceId; private ResourceId instanceId; private String typeConversionErrorMessage; private String convertedValue; private double confidence; private ValidationResult(State state) { this.state = state; } public static ValidationResult error(String message) { ValidationResult result = new ValidationResult(State.ERROR); result.typeConversionErrorMessage = message; return result; } public static ValidationResult converted(String value, double confidence) { ValidationResult result = new ValidationResult(State.CONFIDENCE); result.convertedValue = value; result.confidence = confidence; return result; } public boolean hasTypeConversionError() { return typeConversionErrorMessage != null; } public String getTypeConversionErrorMessage() { return typeConversionErrorMessage; } public String getConvertedValue() { return convertedValue; } public double getConfidence() { return confidence; } public boolean wasConverted() { return convertedValue != null; } public State getState() { return state; } public boolean shouldPersist() { return state == State.OK || (state == State.CONFIDENCE && confidence >= InstanceScorer.MINIMUM_SCORE); } public ResourceId getInstanceId() { return instanceId; } public void setInstanceId(ResourceId instanceId) { this.instanceId = instanceId; } public Pair<ResourceId, ResourceId> getRangeWithInstanceId() { return rangeWithInstanceId; } public void setRangeWithInstanceId(Pair<ResourceId, ResourceId> rangeWithInstanceId) { this.rangeWithInstanceId = rangeWithInstanceId; } }