use of org.isotc211.x2005.gmd.EXVerticalExtentDocument in project arctic-sea by 52North.
the class Iso19139GmdEncoder method encodeEXVerticalExtent.
private XmlObject encodeEXVerticalExtent(EXVerticalExtent exVerticalExtent, EncodingContext context) throws EncodingException {
EXVerticalExtentType exvet = EXVerticalExtentType.Factory.newInstance();
if (exVerticalExtent.isSetId()) {
exvet.setId(exVerticalExtent.getId());
}
if (exVerticalExtent.isSetUuid()) {
exvet.setUuid(exVerticalExtent.getUuid());
}
// min value
Nillable<Double> minNillable = exVerticalExtent.getMinimumValue();
RealPropertyType rptMinValue = exvet.addNewMinimumValue();
if (minNillable.isPresent()) {
rptMinValue.setReal(minNillable.get());
} else {
rptMinValue.setNil();
if (minNillable.hasReason()) {
rptMinValue.setNilReason(minNillable.getNilReason().get());
} else {
rptMinValue.setNilReason(Nillable.missing().get());
}
}
// max value
Nillable<Double> maxNillable = exVerticalExtent.getMaximumValue();
RealPropertyType rptMinMaxValue = exvet.addNewMaximumValue();
if (maxNillable.isPresent()) {
rptMinMaxValue.setReal(maxNillable.get());
} else {
rptMinMaxValue.setNil();
if (maxNillable.hasReason()) {
rptMinMaxValue.setNilReason(maxNillable.getNilReason().get());
} else {
rptMinMaxValue.setNilReason(Nillable.missing().get());
}
}
// verticalCRS
SCCRSPropertyType sccrspt = exvet.addNewVerticalCRS();
Referenceable<ScCRS> verticalCRS = exVerticalExtent.getVerticalCRS();
if (verticalCRS.isReference()) {
Reference reference = verticalCRS.getReference();
reference.getActuate().map(Actuate::toString).map(ActuateType.Enum::forString).ifPresent(sccrspt::setActuate);
reference.getArcrole().ifPresent(sccrspt::setArcrole);
reference.getHref().map(URI::toString).ifPresent(sccrspt::setHref);
reference.getRole().ifPresent(sccrspt::setRole);
reference.getShow().map(Show::toString).map(ShowType.Enum::forString).ifPresent(sccrspt::setShow);
reference.getTitle().ifPresent(sccrspt::setTitle);
reference.getType().map(Type::toString).map(TypeType.Enum::forString).ifPresent(sccrspt::setType);
} else {
if (verticalCRS.isInstance()) {
Nillable<ScCRS> nillable = verticalCRS.getInstance();
if (nillable.isPresent()) {
XmlObject xml = encodeObjectToXml(GmlConstants.NS_GML_32, nillable.get().getAbstractCrs());
if (xml != null && xml instanceof AbstractCRSType) {
final XmlObject substituteElement = XmlHelper.substituteElement(sccrspt.addNewAbstractCRS(), xml);
substituteElement.set(xml);
} else {
sccrspt.setNil();
sccrspt.setNilReason(Nillable.missing().get());
}
} else {
sccrspt.setNil();
if (nillable.hasReason()) {
sccrspt.setNilReason(nillable.getNilReason().get());
} else {
sccrspt.setNilReason(Nillable.missing().get());
}
}
}
}
if (context.has(XmlBeansEncodingFlags.PROPERTY_TYPE)) {
EXVerticalExtentPropertyType exvept = EXVerticalExtentPropertyType.Factory.newInstance(getXmlOptions());
exvept.setEXVerticalExtent(exvet);
return exvept;
} else if (context.has(XmlBeansEncodingFlags.DOCUMENT)) {
EXVerticalExtentDocument exved = EXVerticalExtentDocument.Factory.newInstance(getXmlOptions());
exved.setEXVerticalExtent(exvet);
return exved;
}
return exvet;
}
Aggregations