package org.gofleet.openLS.ddbb.utils; import java.sql.SQLException; import java.util.ArrayList; import net.opengis.gml.v_3_1_1.DirectPositionType; import net.opengis.gml.v_3_1_1.PointType; import net.opengis.xls.v_1_2_0.AddressType; import net.opengis.xls.v_1_2_0.NamedPlaceClassification; import net.opengis.xls.v_1_2_0.NamedPlaceType; import net.opengis.xls.v_1_2_0.StreetAddressType; import net.opengis.xls.v_1_2_0.StreetNameType; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.postgis.PGgeometry; import org.postgis.Point; import org.postgresql.jdbc4.Jdbc4Array; /** * * @author lroman */ public abstract class PostGisUtils { static Log LOG = LogFactory.getLog(PostGisUtils.class); public static PointType getReferencedPoint(PGgeometry g) { Point center = g.getGeometry().getFirstPoint(); ArrayList<Double> list = new ArrayList<Double>(); list.add(center.getX()); list.add(center.getY()); PointType point = new PointType(); DirectPositionType pos = new DirectPositionType(); pos.setValue(list); point.setPos(pos); return point; } public static AddressType getAddress(Jdbc4Array address) throws SQLException { LOG.trace("Address returned" + address.toString()); String[] fields = StringUtils.split(address.toString(), ","); AddressType value = new AddressType(); value.setCountryCode(fields[fields.length - 1]); StreetAddressType street_ = new StreetAddressType(); StreetNameType streetName = new StreetNameType(); streetName.setValue(fields[0].substring(1, fields[0].length() - 1)); street_.getStreet().add(streetName); value.setStreetAddress(street_); NamedPlaceType namedPlace = new NamedPlaceType(); namedPlace.setType(NamedPlaceClassification.MUNICIPALITY); namedPlace.setValue(fields[2].substring(1, fields[2].length() - 1)); namedPlace = new NamedPlaceType(); namedPlace.setType(NamedPlaceClassification.MUNICIPALITY_SUBDIVISION); namedPlace.setValue(fields[1].substring(1, fields[1].length() - 2)); namedPlace = new NamedPlaceType(); namedPlace.setType(NamedPlaceClassification.COUNTRY_SUBDIVISION); namedPlace.setValue(fields[3].substring(1, fields[3].length() - 3)); value.getPlace().add(namedPlace); return value; } }