package nl.ipo.cds.etl.operations.transform;
import nl.ipo.cds.attributemapping.operations.annotation.Before;
import nl.ipo.cds.attributemapping.operations.annotation.Execute;
import nl.ipo.cds.attributemapping.operations.annotation.Input;
import nl.ipo.cds.attributemapping.operations.annotation.MappingOperation;
import org.deegree.cs.coordinatesystems.ICRS;
import org.deegree.cs.persistence.CRSManager;
import org.deegree.geometry.Geometry;
import org.deegree.geometry.GeometryFactory;
@MappingOperation (propertiesClass = MakePointTransform.Settings.class)
public class MakePointTransform {
private GeometryFactory factory;
private ICRS crs;
@Before
public void createFactory (final Settings settings) {
factory = new GeometryFactory ();
// Get the CRS:
final String crsString = settings == null ? null : settings.getCrs ();
if (crsString != null) {
crs = CRSManager.getCRSRef (crsString);
} else {
crs = null;
}
}
@Execute
public Geometry execute (final @Input("x") Double x, final @Input("y") Double y) {
if (x == null || y == null) {
return null;
}
return factory.createPoint (null, x, y, crs);
}
public static class Settings {
private String crs = "EPSG:28992";
public String getCrs () {
return crs;
}
public void setCrs (final String crs) {
this.crs = crs;
}
}
}