Revision 103 org.gvsig.gazetteer/trunk/org.gvsig.gazetteer/org.gvsig.gazetteer.lib/src/main/java/org/gvsig/gazetteer/adl/parsers/AdlFeatureParser.java

View differences:

AdlFeatureParser.java
40 40
*   dac@iver.es
41 41
*/
42 42
package org.gvsig.gazetteer.adl.parsers;
43
import java.awt.geom.Point2D;
44

  
43
import org.apache.commons.lang3.StringUtils;
45 44
import org.gvsig.catalog.metadataxml.XMLNode;
46 45
import org.gvsig.catalog.metadataxml.XMLTree;
46
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
47
import org.gvsig.fmap.geom.GeometryLocator;
48
import org.gvsig.fmap.geom.GeometryManager;
49
import org.gvsig.fmap.geom.exception.CreateGeometryException;
50
import org.gvsig.fmap.geom.primitive.Point;
47 51
import org.gvsig.gazetteer.querys.Feature;
52
import org.slf4j.Logger;
53
import org.slf4j.LoggerFactory;
48 54

  
49 55

  
50 56
/**
......
54 60
 */
55 61
public class AdlFeatureParser {
56 62

  
63
    private static final Logger logger =
64
        LoggerFactory.getLogger(AdlFeatureParser.class);
57 65
/**
58
 * @return 
59
 * @param node 
66
 * @return
67
 * @param node
68
 * @throws NumberFormatException
69
 * @throws CreateGeometryException
60 70
 */
61
    public static Feature[] parse(XMLNode node) {        
71
    public static Feature[] parse(XMLNode node) {
72
        GeometryManager geomManager = GeometryLocator.getGeometryManager();
73

  
62 74
        XMLNode[] nodeFeatures = XMLTree.searchMultipleNode(node,"query-response->standard-reports->gazetteer-standard-report");
63 75
        Feature[] features = new Feature[nodeFeatures.length];
64
        
76

  
65 77
        for (int i=0 ; i<nodeFeatures.length ; i++){
66 78
            String id = XMLTree.searchNodeValue(nodeFeatures[i],"identifier");
67 79
            String name = XMLTree.searchNodeValue(nodeFeatures[i],"names->name");
68 80
            String description = XMLTree.searchNodeValue(nodeFeatures[i],"display-name");
69
            Point2D.Double point = new Point2D.Double(Double.parseDouble(XMLTree.searchNodeValue(nodeFeatures[i],"bounding-box->gml:coord->gml:X")),
70
                    Double.parseDouble(XMLTree.searchNodeValue(nodeFeatures[i],"bounding-box->gml:coord->gml:Y")));
81
            Point point = null;
82
            double x = Double.parseDouble(XMLTree.searchNodeValue(nodeFeatures[i],"bounding-box->gml:coord->gml:X"));
83
            double y = Double.parseDouble(XMLTree.searchNodeValue(nodeFeatures[i],"bounding-box->gml:coord->gml:Y"));
84
            try {
85
                point = geomManager.createPoint(x, y, SUBTYPES.GEOM2D);
86
            } catch (CreateGeometryException | NumberFormatException e) {
87
                StringBuilder builder = new StringBuilder();
88
                builder.append("Can't create point: (");
89
                builder.append(x);
90
                builder.append(",");
91
                builder.append(y);
92
                builder.append(")");
93
                logger.warn(builder.toString());
94
            }
71 95
            features[i] = new Feature(id,name,description,point);
72 96
        }
73
        
97

  
74 98
        return features;
75
    } 
99
    }
76 100
 }

Also available in: Unified diff