package org.om.core.impl.persistence.result;
import org.om.core.api.annotation.MissingStrategy;
import org.om.core.api.mapping.MappedField;
import org.om.core.api.mapping.field.PropertyMapping;
import org.om.core.api.persistence.result.PersistenceResult;
public class MissingPersistenceResult {
public static PersistenceResult createMissing(MappedField mappedField) {
final MissingStrategy strategy = mappedField.getMissingStrategy();
final boolean hasDefaultOrNullReturn = strategy == MissingStrategy.DefaultValue || strategy == MissingStrategy.ReturnNull;
if (hasDefaultOrNullReturn) {
Object value = null;
if (strategy == MissingStrategy.DefaultValue)
value = ((PropertyMapping) mappedField.getMapping()).getDefaultValue();
return new ImmutablePersistenceResult(value);
}
return new ExceptionThrowingPersistenceResult(mappedField.getMissingException());
}
}