
com.revolsys.gis.esri.gdb.xml.model.EsriGdbXmlParser Maven / Gradle / Ivy
The newest version!
package com.revolsys.gis.esri.gdb.xml.model;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.Resource;
import com.revolsys.gis.esri.gdb.xml.EsriGeodatabaseXmlConstants;
import com.revolsys.gis.esri.gdb.xml.model.enums.FieldType;
import com.revolsys.gis.esri.gdb.xml.model.enums.MergePolicyType;
import com.revolsys.gis.esri.gdb.xml.model.enums.RelCardinality;
import com.revolsys.gis.esri.gdb.xml.model.enums.RelClassKey;
import com.revolsys.gis.esri.gdb.xml.model.enums.RelKeyRole;
import com.revolsys.gis.esri.gdb.xml.model.enums.RelKeyType;
import com.revolsys.gis.esri.gdb.xml.model.enums.RelNotification;
import com.revolsys.gis.esri.gdb.xml.model.enums.GeometryType;
import com.revolsys.gis.esri.gdb.xml.model.enums.SplitPolicyType;
import com.revolsys.gis.esri.gdb.xml.model.enums.WorkspaceType;
import com.revolsys.xml.io.XmlProcessor;
public class EsriGdbXmlParser extends XmlProcessor implements
EsriGeodatabaseXmlConstants {
private static final Map> TAG_NAME_CLASS_MAP = new HashMap>();
static {
registerEnumConverter(FieldType.class);
registerEnumConverter(MergePolicyType.class);
registerEnumConverter(RelCardinality.class);
registerEnumConverter(RelClassKey.class);
registerEnumConverter(RelKeyRole.class);
registerEnumConverter(RelKeyType.class);
registerEnumConverter(RelNotification.class);
registerEnumConverter(SplitPolicyType.class);
registerEnumConverter(WorkspaceType.class);
registerEnumConverter(GeometryType.class);
TAG_NAME_CLASS_MAP.put(CHILDREN.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(SUBTYPE.getLocalPart(), Subtype.class);
TAG_NAME_CLASS_MAP.put(FIELD_INFOS.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(SUBTYPE_FIELD_INFO.getLocalPart(),
SubtypeFieldInfo.class);
TAG_NAME_CLASS_MAP.put(RELATIONSHIP_CLASS_NAMES.getLocalPart(),
ArrayList.class);
TAG_NAME_CLASS_MAP.put(CODED_VALUE.getLocalPart(), CodedValue.class);
TAG_NAME_CLASS_MAP.put(CODED_VALUE_DOMAIN.getLocalPart(),
CodedValueDomain.class);
TAG_NAME_CLASS_MAP.put(CODED_VALUES.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(DATA_ELEMENT.getLocalPart(), DataElement.class);
TAG_NAME_CLASS_MAP.put(DATASET_DEFINITIONS.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(DE_DATASET.getLocalPart(), DEDataset.class);
TAG_NAME_CLASS_MAP.put(DE_GEO_DATASET.getLocalPart(), DEGeoDataset.class);
TAG_NAME_CLASS_MAP.put(DE_FEATURE_DATASET.getLocalPart(),
DEFeatureDataset.class);
TAG_NAME_CLASS_MAP.put(DE_FEATURE_CLASS.getLocalPart(),
DEFeatureClass.class);
TAG_NAME_CLASS_MAP.put(DE_TABLE.getLocalPart(), DETable.class);
TAG_NAME_CLASS_MAP.put(DOMAIN.getLocalPart(), Domain.class);
TAG_NAME_CLASS_MAP.put(DOMAINS.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(ENVELOPE.getLocalPart(), Envelope.class);
TAG_NAME_CLASS_MAP.put(ENVELOPE_N.getLocalPart(), EnvelopeN.class);
TAG_NAME_CLASS_MAP.put(SPATIAL_REFERENCE.getLocalPart(),
SpatialReference.class);
TAG_NAME_CLASS_MAP.put(FIELD_ARRAY.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(FIELDS.getLocalPart(), null);
TAG_NAME_CLASS_MAP.put(FIELD.getLocalPart(), Field.class);
TAG_NAME_CLASS_MAP.put(INDEX_ARRAY.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(INDEXES.getLocalPart(), null);
TAG_NAME_CLASS_MAP.put(METADATA.getLocalPart(), null);
TAG_NAME_CLASS_MAP.put(INDEX.getLocalPart(), Index.class);
TAG_NAME_CLASS_MAP.put(GEOMETRY_DEF.getLocalPart(), GeometryDef.class);
TAG_NAME_CLASS_MAP.put(CONTROLLER_MEMBERSHIP.getLocalPart(),
GeometryDef.class);
TAG_NAME_CLASS_MAP.put(PROPERTY_ARRAY.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(PROPERTY_SET.getLocalPart(), null);
TAG_NAME_CLASS_MAP.put(PROPERTY_SET_PROPERTY.getLocalPart(),
PropertySetProperty.class);
TAG_NAME_CLASS_MAP.put(EXTENT.getLocalPart(), EnvelopeN.class);
TAG_NAME_CLASS_MAP.put(GEOGRAPHIC_COORDINATE_SYSTEM.getLocalPart(),
GeographicCoordinateSystem.class);
TAG_NAME_CLASS_MAP.put(PROJECTED_COORDINATE_SYSTEM.getLocalPart(),
ProjectedCoordinateSystem.class);
TAG_NAME_CLASS_MAP.put(SUBTYPES.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(SUBTYPES.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(WORKSPACE_DATA.getLocalPart(), ArrayList.class);
TAG_NAME_CLASS_MAP.put(WORKSPACE_DEFINITION.getLocalPart(),
WorkspaceDefinition.class);
TAG_NAME_CLASS_MAP.put(WORKSPACE.getLocalPart(), Workspace.class);
}
@SuppressWarnings("unchecked")
public static T parse(final Resource resource) {
final EsriGdbXmlParser parser = new EsriGdbXmlParser();
return (T)parser.process(resource);
}
@SuppressWarnings("unchecked")
public static T parse(final String text) {
final byte[] bytes = text.getBytes();
final ByteArrayResource resource = new ByteArrayResource(bytes);
return (T)parse(resource);
}
public EsriGdbXmlParser() {
super("http://www.esri.com/schemas/ArcGIS/10.1", TAG_NAME_CLASS_MAP);
}
public List processControllerMemberships(
final XMLStreamReader parser) throws XMLStreamException, IOException {
final List controllerMemberships = new ArrayList();
while (parser.nextTag() == XMLStreamConstants.START_ELEMENT) {
final Object value = process(parser);
if (value instanceof ControllerMembership) {
final ControllerMembership controllerMembership = (ControllerMembership)value;
controllerMemberships.add(controllerMembership);
}
}
return controllerMemberships;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy