ingo@235: package de.intevation.gnv.exports; ingo@235: ingo@235: import org.apache.log4j.Logger; ingo@235: ingo@235: import com.vividsolutions.jts.io.WKTReader; ingo@235: import com.vividsolutions.jts.io.ParseException; ingo@235: import com.vividsolutions.jts.geom.Point; ingo@235: ingo@235: import de.intevation.gnv.geobackend.base.Result; ingo@235: import de.intevation.gnv.transition.exception.TransitionException; ingo@235: ingo@235: ingo@235: /** ingo@235: * @author Ingo Weinzierl (ingo.weinzierl@intevation.de) ingo@235: */ ingo@235: public class ShapeDataCollector ingo@235: extends DefaultDataCollector ingo@235: { ingo@235: private Logger log = Logger.getLogger(ShapeDataCollector.class); ingo@235: ingo@235: protected WKTReader wktReader = new WKTReader(); ingo@235: ingo@235: public ShapeDataCollector(String[] names) { ingo@235: super(names); ingo@235: } ingo@235: ingo@235: public String[] getData(Result result) ingo@235: throws TransitionException { ingo@235: ingo@235: if (rd == null) ingo@235: init(result); ingo@235: ingo@235: try { ingo@235: String [] entries = new String[names.length+1]; ingo@235: int j = 0; ingo@235: for (int i = 0; i < names.length; i++) { ingo@235: ingo@235: if (names[i].equals("SHAPE")) { ingo@235: Point p = (Point)wktReader.read(result.getString("SHAPE")); ingo@235: ingo@235: entries[j++] = ""+p.getX(); ingo@235: entries[j++] = ""+p.getY(); ingo@235: } ingo@235: else { ingo@235: entries[j++] = result.getString(names[i]); ingo@235: } ingo@235: } ingo@235: ingo@235: return entries; ingo@235: } ingo@235: catch (ParseException pe) { ingo@235: log.error(pe, pe); ingo@235: throw new TransitionException( ingo@235: "Error occured while parsing a Point from WKT."); ingo@235: } ingo@235: } ingo@235: }