public static boolean isGeotagged(ExtensibleElement element) { if (element.getExtensions(QNAME_SIMPLE_POINT).size() > 0) return true; if (element.getExtensions(QNAME_SIMPLE_LINE).size() > 0) return true; if (element.getExtensions(QNAME_SIMPLE_BOX).size() > 0) return true; if (element.getExtensions(QNAME_SIMPLE_POLYGON).size() > 0) return true; if (element.getExtensions(QNAME_WHERE).size() > 0) return true; if (element.getExtensions(QNAME_W3C_POINT).size() > 0) return true; if (element.getExtensions(QNAME_W3C_LAT).size() > 0 && element.getExtensions(QNAME_W3C_LONG).size() > 0) return true; return false; }
public List<Element> getExtensions(String uri) { return getExtInternal().getExtensions(uri); }
public <T extends Element> List<T> getExtensions(QName qname) { return getExtInternal().getExtensions(qname); }
public List<Element> getExtensions() { return getExtInternal().getExtensions(); }
public List<Element> getExtensions() { return getExtInternal().getExtensions(); }
public List<Element> getExtensions(String uri) { return getExtInternal().getExtensions(uri); }
public <T extends Element> List<T> getExtensions(QName qname) { return getExtInternal().getExtensions(qname); }
private static void getSimplePosition(ExtensibleElement element, List<Position> list) { List<Element> elements = element.getExtensions(SIMPLE_GEO_NS); for (Element el : elements) { Position pos = getAsPosition(el); if (pos != null) { getPositionAttributes(el, pos); list.add(pos); } } }
private static void getW3CPosition(ExtensibleElement element, List<Position> list) { getSimpleW3CPosition(element, list); List<ExtensibleElement> points = element.getExtensions(QNAME_W3C_POINT); for (ExtensibleElement point : points) getSimpleW3CPosition(point, list); }
private static void getGMLPosition(ExtensibleElement element, List<Position> list) { List<ExtensibleElement> elements = element.getExtensions(QNAME_WHERE); for (ExtensibleElement where : elements) { Position pos = null; List<ExtensibleElement> children = where.getElements(); for (ExtensibleElement el : children) { pos = getAsPosition(el); if (pos != null) { getPositionAttributes(el, pos); list.add(pos); } } } }
/** * Return false if the element contains any extension elements that are not supported */ public static boolean checkElementNamespaces(Element element, List<String> ignore) { List<QName> attrs = element.getExtensionAttributes(); for (QName qname : attrs) { String ns = qname.getNamespaceURI(); if (!ignore.contains(ns)) return false; } if (element instanceof ExtensibleElement) { ExtensibleElement ext = (ExtensibleElement)element; List<Element> extensions = ext.getExtensions(); for (Element el : extensions) { QName qname = el.getQName(); String ns = qname.getNamespaceURI(); if (!ignore.contains(ns)) return false; if (!checkElementNamespaces(el, ignore)) return false; } } return true; }
private static void writeExtensions(ExtensibleElement element, JSONStream jstream, boolean startsep) throws IOException { List<QName> attributes = element.getExtensionAttributes(); writeList("extensions", element.getExtensions(), jstream); if (attributes.size() > 0) { jstream.writeField("attributes"); jstream.startObject(); for (int n = 0; n < attributes.size(); n++) { QName qname = attributes.get(n); jstream.writeField(getName(qname)); if ("".equals(qname.getPrefix()) || "xml".equals(qname.getPrefix())) { jstream.writeQuoted(element.getAttributeValue(qname)); } else { jstream.startObject(); jstream.writeField("attributes"); jstream.startObject(); jstream.writeField("xmlns:" + qname.getPrefix()); jstream.writeQuoted(qname.getNamespaceURI()); jstream.endObject(); jstream.writeField("value"); jstream.writeQuoted(element.getAttributeValue(qname)); jstream.endObject(); } } jstream.endObject(); } }