You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2007/09/01 00:29:39 UTC

svn commit: r571625 - /incubator/abdera/java/trunk/extensions/geo/src/main/java/org/apache/abdera/ext/geo/GeoHelper.java

Author: jmsnell
Date: Fri Aug 31 15:29:37 2007
New Revision: 571625

URL: http://svn.apache.org/viewvc?rev=571625&view=rev
Log:
Helper method to get a position from an element

Modified:
    incubator/abdera/java/trunk/extensions/geo/src/main/java/org/apache/abdera/ext/geo/GeoHelper.java

Modified: incubator/abdera/java/trunk/extensions/geo/src/main/java/org/apache/abdera/ext/geo/GeoHelper.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/extensions/geo/src/main/java/org/apache/abdera/ext/geo/GeoHelper.java?rev=571625&r1=571624&r2=571625&view=diff
==============================================================================
--- incubator/abdera/java/trunk/extensions/geo/src/main/java/org/apache/abdera/ext/geo/GeoHelper.java (original)
+++ incubator/abdera/java/trunk/extensions/geo/src/main/java/org/apache/abdera/ext/geo/GeoHelper.java Fri Aug 31 15:29:37 2007
@@ -26,6 +26,7 @@
 import org.apache.abdera.model.Element;
 import org.apache.abdera.model.Entry;
 import org.apache.abdera.model.ExtensibleElement;
+import org.apache.abdera.util.Constants;
 
 /**
  * Basic support for the GeoRSS extensions to Atom: http://georss.org/1
@@ -189,6 +190,58 @@
     return _getPositions(entry).iterator();
   }
   
+  public static Position getAsPosition(Element element) {
+    Position pos = null;
+    QName qname = element.getQName();
+    String text = element.getText();
+    if (qname.equals(QNAME_GML_POINT)) {
+      element = traverse(
+        (ExtensibleElement)element, 
+        QNAME_GML_POS);
+      if (element != null && text != null) {
+        pos = new Point(text.trim());
+      }
+    } else if (qname.equals(QNAME_GML_LINESTRING)) {
+      element = traverse(
+          (ExtensibleElement)element,
+        QNAME_GML_POSLIST);
+      if (element != null && text != null) {
+        pos = new Line(text.trim());
+      }
+    } else if (qname.equals(QNAME_GML_POLYGON)) {
+      element = traverse(
+          (ExtensibleElement)element, 
+        QNAME_GML_EXTERIOR, 
+        QNAME_GML_LINEARRING, 
+        QNAME_GML_POSLIST);
+      if (element != null && text != null) {
+        pos = new Polygon(text.trim());
+      }
+    } else if (qname.equals(QNAME_GML_ENVELOPE)) {
+      String lc = ((ExtensibleElement)element).getSimpleExtension(QNAME_GML_LOWERCORNER);
+      String uc = ((ExtensibleElement)element).getSimpleExtension(QNAME_GML_UPPERCORNER);
+      if (lc != null && uc != null) {
+        Coordinate c1 = new Coordinate(lc);
+        Coordinate c2 = new Coordinate(uc);
+        pos = new Box(c1,c2);
+      }
+    } else if (qname.equals(QNAME_SIMPLE_POINT) && text != null) {
+      pos = new Point(text.trim());
+    } else if (qname.equals(QNAME_SIMPLE_LINE) && text != null) {
+      pos = new Line(text.trim());
+    } else if (qname.equals(QNAME_SIMPLE_BOX) && text != null) {
+      pos = new Box(text.trim());
+    } else if (qname.equals(QNAME_SIMPLE_POLYGON) && text != null) {
+      pos = new Polygon(text.trim());
+    } else if (qname.equals(QNAME_W3C_POINT) || 
+               qname.equals(Constants.ENTRY)) {
+      List<Position> list = new ArrayList<Position>();
+      getW3CPosition((ExtensibleElement)element, list);
+      if (list != null && list.size() > 0) pos = list.get(0);
+    }
+    return pos;
+  }
+  
   public static Position[] getPositions(Entry entry) {
     List<Position> positions = _getPositions(entry);
     return positions.toArray(new Position[positions.size()]);
@@ -197,20 +250,7 @@
   private static void getSimplePosition(Entry entry, List<Position> list) {
     List<Element> elements = entry.getExtensions(SIMPLE_GEO_NS);
     for (Element element : elements) {
-      Position pos = null;
-      QName qname = element.getQName();
-      String text = element.getText();
-      if (text != null) {
-        if (qname.equals(QNAME_SIMPLE_POINT)) {
-          pos = new Point(text.trim());
-        } else if (qname.equals(QNAME_SIMPLE_LINE)) {
-          pos = new Line(text.trim());
-        } else if (qname.equals(QNAME_SIMPLE_BOX)) {
-          pos = new Box(text.trim());
-        } else if (qname.equals(QNAME_SIMPLE_POLYGON)) {
-          pos = new Polygon(text.trim());
-        }
-      }
+      Position pos = getAsPosition(element);
       if (pos != null) {
         getPositionAttributes(element, pos);
         list.add(pos);
@@ -224,48 +264,7 @@
       Position pos = null;
       List<ExtensibleElement> children = where.getElements();
       for (ExtensibleElement element : children) {
-        QName qname = element.getQName();
-        if (qname.equals(QNAME_GML_POINT)) {
-          element = traverse(
-            element, 
-            QNAME_GML_POS);
-          if (element != null) {
-            String text = element.getText();
-            if (text != null) {
-              pos = new Point(text.trim());
-            }
-          }
-        } else if (qname.equals(QNAME_GML_LINESTRING)) {
-          element = traverse(
-            element,
-            QNAME_GML_POSLIST);
-          if (element != null) {
-            String text = element.getText();
-            if (text != null) {
-              pos = new Line(text.trim());
-            }
-          }
-        } else if (qname.equals(QNAME_GML_POLYGON)) {
-          element = traverse(
-            element, 
-            QNAME_GML_EXTERIOR, 
-            QNAME_GML_LINEARRING, 
-            QNAME_GML_POSLIST);
-          if (element != null) {
-            String text = element.getText();
-            if (text != null) {
-              pos = new Polygon(text.trim());
-            }
-          }
-        } else if (qname.equals(QNAME_GML_ENVELOPE)) {
-          String lc = element.getSimpleExtension(QNAME_GML_LOWERCORNER);
-          String uc = element.getSimpleExtension(QNAME_GML_UPPERCORNER);
-          if (lc != null && uc != null) {
-            Coordinate c1 = new Coordinate(lc);
-            Coordinate c2 = new Coordinate(uc);
-            pos = new Box(c1,c2);
-          }
-        }
+        pos = getAsPosition(element);
         if (pos != null) {
           getPositionAttributes(element, pos);
           list.add(pos);