use of net.geoprism.registry.io.TermValueException in project geoprism-registry by terraframe.
the class VertexServerGeoObject method toGeoObject.
@Override
public GeoObject toGeoObject(Date date) {
Map<String, Attribute> attributeMap = GeoObject.buildAttributeMap(type.getType());
GeoObject geoObj = new GeoObject(type.getType(), type.getGeometryType(), attributeMap);
Map<String, AttributeType> attributes = type.getAttributeMap();
attributes.forEach((attributeName, attribute) -> {
if (attributeName.equals(DefaultAttribute.TYPE.getName())) {
// Ignore
} else if (vertex.hasAttribute(attributeName)) {
Object value = vertex.getObjectValue(attributeName, date);
if (value != null) {
if (attribute instanceof AttributeTermType) {
Classifier classifier = Classifier.get((String) value);
try {
geoObj.setValue(attributeName, classifier.getClassifierId());
} catch (UnknownTermException e) {
TermValueException ex = new TermValueException();
ex.setAttributeLabel(e.getAttribute().getLabel().getValue());
ex.setCode(e.getCode());
throw e;
}
} else if (attribute instanceof AttributeClassificationType) {
String classificationTypeCode = ((AttributeClassificationType) attribute).getClassificationType();
ClassificationType classificationType = ClassificationType.getByCode(classificationTypeCode);
Classification classification = Classification.getByOid(classificationType, (String) value);
try {
geoObj.setValue(attributeName, classification.toTerm());
} catch (UnknownTermException e) {
TermValueException ex = new TermValueException();
ex.setAttributeLabel(e.getAttribute().getLabel().getValue());
ex.setCode(e.getCode());
throw e;
}
} else {
geoObj.setValue(attributeName, value);
}
}
}
});
geoObj.setUid(vertex.getObjectValue(RegistryConstants.UUID));
geoObj.setCode(vertex.getObjectValue(DefaultAttribute.CODE.getName()));
geoObj.setGeometry(this.getGeometry());
geoObj.setDisplayLabel(this.getDisplayLabel());
geoObj.setExists(this.getExists(date));
geoObj.setInvalid(this.getInvalid());
if (// && !vertex.isAppliedToDB())
vertex.isNew()) {
geoObj.setUid(RegistryIdService.getInstance().next());
}
return geoObj;
}
Aggregations