diff --git a/geoportal_1/src/main/java/org/geotools/data/store/ContentFeatureStore.java b/geoportal_1/src/main/java/org/geotools/data/store/ContentFeatureStore.java new file mode 100644 index 0000000..5f18350 --- /dev/null +++ b/geoportal_1/src/main/java/org/geotools/data/store/ContentFeatureStore.java @@ -0,0 +1,463 @@ +/* + * GeoTools - The Open Source Java GIS Toolkit + * http://geotools.org + * + * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + */ +package org.geotools.data.store; + +import java.io.IOException; +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +import org.geotools.data.FeatureLocking; +import org.geotools.data.FeatureReader; +import org.geotools.data.FeatureWriter; +import org.geotools.data.FilteringFeatureWriter; +import org.geotools.data.InProcessLockingManager; +import org.geotools.data.LockingManager; +import org.geotools.data.Query; +import org.geotools.data.Transaction; +import org.geotools.data.simple.SimpleFeatureCollection; +import org.geotools.data.simple.SimpleFeatureStore; +import org.geotools.factory.Hints; +import org.geotools.feature.FeatureCollection; +import org.geotools.feature.FeatureIterator; +import org.geotools.feature.NameImpl; +import org.geotools.filter.identity.FeatureIdImpl; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.feature.type.AttributeDescriptor; +import org.opengis.feature.type.Name; +import org.opengis.filter.Filter; +import org.opengis.filter.identity.FeatureId; + +/** + * Abstract implementation of FeatureStore. + *

+ * List its base class {@link ContentFeatureSource}, this feature store works off + * of operations provided by {@link FeatureCollection}. + *

+ *

+ * The {@link #addFeatures(SimpleFeatureCollection)} method is used to add features to + * the feature store. The method should return the "persistent" feature id's + * which are generated after the feature has been added to persistent storage. + * Often the persistent fid is different from the fid specified by the actual + * feature being inserted. For this reason {@link SimpleFeature#getUserData()} is + * used to report back persistent fids. It is up to the implementor of the + * feature collection to report this value back after a feature has been inserted. + * As an example, consider an implementation of {@link FeatureCollection#add(Object)}. + *

+ *  boolean add( Object o ) {
+ *    SimpleFeature feature = (SimpleFeature) o;
+ *    
+ *    //1.add the feature to storage
+ *    ...
+ *    
+ *    //2. derive the persistent fid
+ *    String fid = ...;
+ *    
+ *    //3. set the user data
+ *    feature.getUserData().put( "fid", fid );
+ *  
+ *  }
+ * 
+ *

+ * + * @author Justin Deoliveira, The Open Planning Project + * + * + * + * + * @source $URL$ + */ +public abstract class ContentFeatureStore extends ContentFeatureSource implements + SimpleFeatureStore, + FeatureLocking { + + /** + * writer flags + */ + protected final int WRITER_ADD = ContentDataStore.WRITER_ADD; + protected final int WRITER_UPDATE = ContentDataStore.WRITER_UPDATE; + + /** + * Creates the content feature store. + * + * @param entry The entry for the feature store. + * @param query The defining query. + */ + public ContentFeatureStore(ContentEntry entry,Query query) { + super(entry,query); + } + + /** + * Returns a writer over features specified by a filter. + * + * @param filter The filter + */ + public final FeatureWriter getWriter( Filter filter ) throws IOException { + return getWriter( filter, WRITER_ADD | WRITER_UPDATE ); + } + + /** + * Returns a writer over features specified by a filter. + * + * @param filter The filter + * @param flags flags specifying writing mode + */ + public final FeatureWriter getWriter( Filter filter, int flags ) throws IOException { + return getWriter( new Query( getSchema().getTypeName(), filter ), flags ); + } + + /** + * Returns a writer over features specified by a query. + * + * @param query The query + */ + public final FeatureWriter getWriter( Query query ) throws IOException { + return getWriter( query, WRITER_ADD | WRITER_UPDATE ); + } + + /** + * Returns a writer over features specified by a query. + * + * @param query The query + * @param flags flags specifying writing mode + */ + public final FeatureWriter getWriter( Query query, int flags ) throws IOException { + query = joinQuery( query ); + query = resolvePropertyNames(query); + + FeatureWriter writer; + + if (!canTransact() && transaction != null && transaction != Transaction.AUTO_COMMIT) { + DiffTransactionState state = (DiffTransactionState) getTransaction().getState(getEntry()); + FeatureReader reader = getReader(query); + writer = new DiffContentFeatureWriter(this, state.getDiff(), reader); + } else { + writer = getWriterInternal(query, flags); + + // events + if (canTransact() && !canEvent()){ + writer = new EventContentFeatureWriter(this, writer ); + } + // filtering + if (!canFilter()) { + if (query.getFilter() != null && query.getFilter() != Filter.INCLUDE) { + writer = new FilteringFeatureWriter(writer, query.getFilter()); + } + } + + // Use InProcessLockingManager to assert write locks? + if (!canLock()) { + LockingManager lockingManager = getDataStore().getLockingManager(); + writer = ((InProcessLockingManager) lockingManager).checkedWriter(writer, + transaction); + } + } + + // Finished + return writer; + } + + /** + * + * Subclass method for returning a native writer from the datastore. + *

+ * It is important to note that if the native writer intends to handle any + * of the following natively: + *

    + *
  • reprojection
  • + *
  • filtering
  • + *
  • max feature limiting
  • + *
  • sorting
  • + *
  • locking
  • + *
+ * Then it *must* set the corresponding flags to true: + *
    + *
  • {@link #canReproject()}
  • + *
  • {@link #canFilter()}
  • + *
  • {@link #canLimit()}
  • + *
  • {@link #canSort()}
  • + *
  • {@link #canLock()}
  • + *
+ *

+ * + */ + protected abstract FeatureWriter getWriterInternal( Query query, int flags ) + throws IOException; + + /** + * Adds a collection of features to the store. + *

+ * This method operates by getting an appending feature writer and writing + * all the features in collection to it. Directly after a feature + * is written its id is obtained and added to the returned set. + *

+ */ + public List addFeatures(Collection collection) + throws IOException { + + // gather up id's + List ids = new LinkedList(); + + FeatureWriter writer = getWriterAppend(); + try { + for ( Iterator f = collection.iterator(); f.hasNext(); ) { + FeatureId id = addFeature((SimpleFeature) f.next(), writer); + ids.add( id ); + } + } finally { + writer.close(); + } + + return ids; + } + + /** + * Adds a collection of features to the store. + *

+ * This method calls through to {@link #addFeatures(Collection)}. + *

+ * @param featureCollection + */ + public List addFeatures(FeatureCollection featureCollection) + throws IOException { + // gather up id's + List ids = new LinkedList(); + + FeatureWriter writer = getWriterAppend(); + FeatureIterator f = featureCollection.features(); + try { + while (f.hasNext()) { + SimpleFeature feature = (SimpleFeature) f.next(); + FeatureId id = addFeature(feature, writer); + ids.add( id ); + } + } finally { + writer.close(); + f.close(); + } + return ids; + } + + /** + * Utility method that ensures we are going to write only in append mode + * @return + * @throws IOException + */ + private FeatureWriter getWriterAppend() throws IOException { + FeatureWriter writer = getWriter( Filter.INCLUDE, WRITER_ADD ); + while(writer.hasNext()) { + writer.next(); + } + return writer; + } + + FeatureId addFeature(SimpleFeature feature, FeatureWriter writer) throws IOException { + // grab next feature and populate it + // JD: worth a note on how we do this... we take a "pull" approach + // because the raw schema we are inserting into may not match the + // schema of the features we are inserting + SimpleFeature toWrite = writer.next(); + for ( int i = 0; i < toWrite.getType().getAttributeCount(); i++ ) { + String name = toWrite.getType().getDescriptor(i).getLocalName(); + if (feature.getAttribute(name)!=null){ + toWrite.setAttribute( name, feature.getAttribute(name)); + } + else { + //Allen added a quick and dirty workaround for ArcGIS misshaped wfs response + if (feature.getAttribute("Shape")!=null && name.equals("the_geom")){ + toWrite.setAttribute( name, feature.getAttribute("Shape")); + } + else{ + toWrite.setAttribute( name, feature.getAttribute(name)); + } + } + + } + + // copy over the user data + if(feature.getUserData().size() > 0) { + toWrite.getUserData().putAll(feature.getUserData()); + } + + // pass through the fid if the user asked so + boolean useExisting = Boolean.TRUE.equals(feature.getUserData().get(Hints.USE_PROVIDED_FID)); + if(getQueryCapabilities().isUseProvidedFIDSupported() && useExisting) { + ((FeatureIdImpl) toWrite.getIdentifier()).setID(feature.getID()); + } + + //perform the write + writer.write(); + + // copy any metadata from the feature that was actually written + feature.getUserData().putAll( toWrite.getUserData() ); + + // add the id to the set of inserted + FeatureId id = toWrite.getIdentifier(); + return id; + } + + /** + * Sets the feature of the source. + *

+ * This method operates by first clearing the contents of the feature + * store ({@link #removeFeatures(Filter)}), and then obtaining an appending + * feature writer and writing all features from reader to it. + *

+ */ + public final void setFeatures(FeatureReader reader) throws IOException { + //remove features + removeFeatures( Filter.INCLUDE ); + + //grab a feature writer for insert + FeatureWriter writer = getWriter( Filter.INCLUDE, WRITER_ADD ); + try { + while( reader.hasNext() ) { + SimpleFeature feature = reader.next(); + + // grab next feature and populate it + // JD: worth a note on how we do this... we take a "pull" approach + // because the raw schema we are inserting into may not match the + // schema of the features we are inserting + SimpleFeature toWrite = writer.next(); + for ( int i = 0; i < toWrite.getType().getAttributeCount(); i++ ) { + String name = toWrite.getType().getDescriptor(i).getLocalName(); + toWrite.setAttribute( name, feature.getAttribute(name)); + } + + //perform the write + writer.write(); + } + } + finally { + writer.close(); + } + } + + public void modifyFeatures(AttributeDescriptor[] type, Object[] value, Filter filter) + throws IOException { + Name attributeNames[] = new Name[ type.length ]; + for( int i=0; i < type.length; i ++){ + attributeNames[i] = type[i].getName(); + } + modifyFeatures( attributeNames, value, filter ); + } + + /** + * Modifies/updates the features of the store which match the specified filter. + *

+ * This method operates by obtaining an updating feature writer based on the + * specified filter and writing the updated values to it. + *

+ *

+ * The filter must not be null, in this case this method + * will throw an {@link IllegalArgumentException}. + *

+ */ + public void modifyFeatures(Name[] type, Object[] value, Filter filter) + throws IOException { + if ( filter == null ) { + String msg = "Must specify a filter, must not be null."; + throw new IllegalArgumentException( msg ); + } + filter = resolvePropertyNames(filter); + + //grab a feature writer + FeatureWriter writer = getWriter( filter, WRITER_UPDATE ); + try { + while( writer.hasNext() ) { + SimpleFeature toWrite = writer.next(); + + for ( int i = 0; i < type.length; i++ ) { + toWrite.setAttribute( type[i], value[i] ); + } + + writer.write(); + } + + } + finally { + writer.close(); + } + } + + final public void modifyFeatures(String name, Object attributeValue, Filter filter) + throws IOException { + modifyFeatures(new Name[] { new NameImpl(name), }, new Object[] { attributeValue, }, filter); + } + + final public void modifyFeatures(String[] names, Object[] values, Filter filter) throws IOException { + Name attributeNames[] = new Name[names.length]; + for (int i = 0; i < names.length; i++) { + attributeNames[i] = new NameImpl(names[i]); + } + modifyFeatures(attributeNames, values, filter); + } + + /** + * Calls through to {@link #modifyFeatures(Name[], Object[], Filter)}. + */ + public final void modifyFeatures(AttributeDescriptor type, Object value, Filter filter) + throws IOException { + + modifyFeatures( new Name[]{ type.getName() }, new Object[]{ value }, filter ); + } + + /** + * Calls through to {@link #modifyFeatures(Name[], Object[], Filter)}. + */ + public final void modifyFeatures(Name name, Object value, Filter filter) + throws IOException { + + modifyFeatures( new Name[]{ name }, new Object[]{ value }, filter ); + } + + /** + * Removes the features from the store which match the specified filter. + *

+ * This method operates by obtaining an updating feature writer based on + * the specified filter and removing every feature from it. + *

+ *

+ * The filter must not be null, in this case this method + * will throw an {@link IllegalArgumentException}. + *

+ */ + public void removeFeatures(Filter filter) throws IOException { + if ( filter == null ) { + String msg = "Must specify a filter, must not be null."; + throw new IllegalArgumentException( msg ); + } + filter = resolvePropertyNames(filter); + + //grab a feature writer + FeatureWriter writer = getWriter( filter, WRITER_UPDATE ); + try { + //remove everything + while( writer.hasNext() ) { + writer.next(); + writer.remove(); + } + + } + finally { + writer.close(); + } + } + +} diff --git a/geoportal_1/src/main/java/org/geotools/data/wfs/v1_1_0/parsers/XmlSimpleFeatureParser.java b/geoportal_1/src/main/java/org/geotools/data/wfs/v1_1_0/parsers/XmlSimpleFeatureParser.java new file mode 100644 index 0000000..6bcec98 --- /dev/null +++ b/geoportal_1/src/main/java/org/geotools/data/wfs/v1_1_0/parsers/XmlSimpleFeatureParser.java @@ -0,0 +1,801 @@ +/* + * GeoTools - The Open Source Java GIS Toolkit + * http://geotools.org + * + * (C) 2008, Open Source Geospatial Foundation (OSGeo) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + */ +package org.geotools.data.wfs.v1_1_0.parsers; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import java.util.logging.Logger; + +import javax.xml.namespace.QName; + +import org.geotools.data.DataSourceException; +import org.geotools.data.wfs.protocol.wfs.GetFeatureParser; +import org.geotools.data.wfs.protocol.wfs.WFSProtocol; +import org.geotools.data.wfs.protocol.wfs.WFSResponse; +import org.geotools.data.wfs.v1_1_0.WFS_1_1_0_DataStore; +import org.geotools.feature.simple.SimpleFeatureBuilder; +import org.geotools.gml3.GML; +import org.geotools.referencing.CRS; +import org.geotools.referencing.crs.DefaultGeographicCRS; +import org.geotools.util.Converters; +import org.geotools.util.logging.Logging; +import org.geotools.wfs.WFS; +import org.opengis.feature.simple.SimpleFeature; +import org.opengis.feature.simple.SimpleFeatureType; +import org.opengis.feature.type.AttributeDescriptor; +import org.opengis.feature.type.AttributeType; +import org.opengis.feature.type.GeometryType; +import org.opengis.referencing.FactoryException; +import org.opengis.referencing.NoSuchAuthorityCodeException; +import org.opengis.referencing.crs.CoordinateReferenceSystem; +import org.xmlpull.mxp1.MXParser; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserException; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.Geometry; +import com.vividsolutions.jts.geom.GeometryFactory; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.MultiLineString; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; + +/** + * A {@link GetFeatureParser} implementation that uses plain xml pull to parse a GetFeature + * response. + * + * @author Gabriel Roldan (TOPP) + * @version $Id$ + * @since 2.5.x + * + * + * + * @source $URL$ + * http://svn.geotools.org/trunk/modules/plugin/wfs/src/main/java/org/geotools/wfs/v_1_1_0 + * /data/XmlSimpleFeatureParser.java $ //@deprecated should be removed as long as + * {@link StreamingParserFeatureReader} works well + */ +@SuppressWarnings("nls") +public class XmlSimpleFeatureParser implements GetFeatureParser { + + private static final Logger LOGGER = Logging.getLogger("org.geotools.data.wfs"); + + private static final GeometryFactory geomFac = new GeometryFactory(); + + private static final String Placeholder_ArcgisServer_FeatureID = new String("Placeholder_AGS_FeatureId"); + + private InputStream inputStream; + + private XmlPullParser parser; + + private SimpleFeatureType targetType; + + private SimpleFeatureBuilder builder; + + private String featureNamespace; + + final String featureName; + + private final Map expectedProperties; + + private int numberOfFeatures = -1; + + private final String axisOrder; + + public XmlSimpleFeatureParser(final InputStream getFeatureResponseStream, + final SimpleFeatureType targetType, QName featureDescriptorName, + String axisOrder, final Map mappedURIs) + throws IOException { + this.inputStream = getFeatureResponseStream; + this.featureNamespace = featureDescriptorName.getNamespaceURI(); + if(mappedURIs.containsKey(this.featureNamespace)) { + this.featureNamespace = mappedURIs.get(this.featureNamespace); + } + this.featureName = featureDescriptorName.getLocalPart(); + this.targetType = targetType; + this.builder = new SimpleFeatureBuilder(targetType); + this.axisOrder = axisOrder; + + try { + // parse root element + parser = new MXParser(); + parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); + parser.setInput(inputStream, "UTF-8"); + parser.nextTag(); + parser.require(XmlPullParser.START_TAG, WFS.NAMESPACE, WFS.FeatureCollection + .getLocalPart()); + + String nof = parser.getAttributeValue(null, "numberOfFeatures"); + if (nof != null) { + try { + this.numberOfFeatures = Integer.valueOf(nof); + } catch (NumberFormatException nfe) { + LOGGER.warning("Can't parse numberOfFeatures out of " + nof); + } + } + } catch (XmlPullParserException e) { + throw new DataSourceException(e); + } + + // HACK! use a case insensitive set to compare the comming attribute names with the ones in + // the schema. Rationale being that the FGDC CubeWerx server has a missmatch in the case of + // property names between what it states in a DescribeFeatureType and in a GetFeature + // requests + expectedProperties = new TreeMap(String.CASE_INSENSITIVE_ORDER); + for (AttributeDescriptor desc : targetType.getAttributeDescriptors()) { + expectedProperties.put(desc.getLocalName(), desc); + } + } + + public int getNumberOfFeatures() { + return numberOfFeatures; + } + + public void close() throws IOException { + if (this.inputStream != null) { + try { + this.parser.setInput(null); + this.parser = null; + this.inputStream.close(); + this.inputStream = null; + } catch (XmlPullParserException e) { + throw new DataSourceException(e); + } + } + } + + public SimpleFeature parse() throws IOException { + String fid; + try { + fid = seekFeature(); + if (fid == null) { + return null; + } + int tagType; + String tagNs; + String tagName; + Object attributeValue; + while (true) { + tagType = parser.next(); + if (XmlPullParser.END_DOCUMENT == tagType) { + close(); + return null; + } + tagNs = parser.getNamespace(); + tagName = parser.getName(); + if (XmlPullParser.END_TAG == tagType && featureNamespace.equals(tagNs) + && featureName.equals(tagName)) { + // found end of current feature + break; + } + if (XmlPullParser.START_TAG == tagType) { + AttributeDescriptor descriptor = expectedProperties.get(tagName); + if (descriptor != null) { + attributeValue = parseAttributeValue(); + + if ( isArcGISServerFeatureID(descriptor) && fid.equals(Placeholder_ArcgisServer_FeatureID)){ + fid = attributeValue.toString(); + } + + builder.set(descriptor.getLocalName(), attributeValue); + } + } + } + } catch (XmlPullParserException e) { + throw new DataSourceException(e); + } + SimpleFeature feature = builder.buildFeature(fid); + return feature; + } + + private Boolean isArcGISServerFeatureID(AttributeDescriptor descriptor){ + if (descriptor.getName().toString().equals("FID")||descriptor.getName().toString().equals("OBJECTID")||descriptor.getName().toString().equals("OID")){ + //Shapefile from ArcGIS Server GetFeatures request could have 3 types of unique id, + //depending on whether coming from a stand alone shapefile, feature class in geodatabase, + //or stand alone dBase Table. + return true; + } + else + return false; + + } + + + /** + * Parses the value of the current attribute, parser cursor shall be on a feature attribute + * START_TAG event. + * + * @return + * @throws IOException + * @throws XmlPullParserException + * @throws FactoryException + * @throws NoSuchAuthorityCodeException + */ + @SuppressWarnings("unchecked") + private Object parseAttributeValue() throws XmlPullParserException, IOException { + final String name = parser.getName(); + final AttributeDescriptor attribute = expectedProperties.get(name); + final AttributeType type = attribute.getType(); + Object parsedValue; + if (type instanceof GeometryType) { + parser.nextTag(); + try { + parsedValue = parseGeom(); + } catch (NoSuchAuthorityCodeException e) { + throw new DataSourceException(e); + } catch (FactoryException e) { + throw new DataSourceException(e); + } + } else { + String rawTextValue = parser.nextText(); + Class binding = type.getBinding(); + parsedValue = Converters.convert(rawTextValue, binding); + } + return parsedValue; + } + + /** + *

+ * Precondition: parser cursor positioned on a geometry property (ej, {@code gml:Point}, etc) + *

+ *

+ * Postcondition: parser gets positioned at the end tag of the element it started parsing the + * geometry at + *

+ * + * @return + * @throws FactoryException + * @throws NoSuchAuthorityCodeException + * @throws IOException + * @throws XmlPullParserException + */ + private Geometry parseGeom() throws NoSuchAuthorityCodeException, FactoryException, + XmlPullParserException, IOException { + final QName startingGeometryTagName = new QName(parser.getNamespace(), parser.getName()); + int dimension = crsDimension(2); + CoordinateReferenceSystem crs = crs(DefaultGeographicCRS.WGS84); + + Geometry geom; + if (GML.Point.equals(startingGeometryTagName)) { + geom = parsePoint(dimension, crs); + } else if (GML.LineString.equals(startingGeometryTagName)) { + geom = parseLineString(dimension, crs); + } else if (GML.Polygon.equals(startingGeometryTagName)) { + geom = parsePolygon(dimension, crs); + } else if (GML.MultiPoint.equals(startingGeometryTagName)) { + geom = parseMultiPoint(dimension, crs); + } else if (GML.MultiLineString.equals(startingGeometryTagName)) { + geom = parseMultiLineString(dimension, crs); + } else if (GML.MultiSurface.equals(startingGeometryTagName)) { + geom = parseMultiSurface(dimension, crs); + } else if (GML.MultiCurve.equals(startingGeometryTagName)) { + geom = parseMultiCurve(dimension, crs); + } else if (GML.MultiPolygon.equals(startingGeometryTagName)) { + geom = parseMultiPolygon(dimension, crs); + } else { + throw new IllegalStateException("Unrecognized geometry element " + + startingGeometryTagName); + } + + parser.require(XmlPullParser.END_TAG, startingGeometryTagName.getNamespaceURI(), + startingGeometryTagName.getLocalPart()); + + return geom; + } + + /** + * Parses a MultiPoint. + *

+ * Precondition: parser positioned at a {@link GML#MultiPoint MultiPoint} start tag + *

+ *

+ * Postcondition: parser positioned at the {@link GML#MultiPoint MultiPoint} end tag of the + * starting tag + *

+ * + * @throws IOException + * @throws XmlPullParserException + * @throws IOException + * @throws XmlPullParserException + * @throws FactoryException + * @throws NoSuchAuthorityCodeException + * @throws FactoryException + * @throws NoSuchAuthorityCodeException + */ + private Geometry parseMultiPoint(int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + Geometry geom; + parser.nextTag(); + final QName memberTag = new QName(parser.getNamespace(), parser.getName()); + List points = new ArrayList(4); + if (GML.pointMembers.equals(memberTag)) { + while (true) { + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType() + && GML.pointMembers.getLocalPart().equals(parser.getName())) { + // we're done + break; + } + Point p = parsePoint(dimension, crs); + points.add(p); + } + parser.nextTag(); + } else if (GML.pointMember.equals(memberTag)) { + while (true) { + parser.nextTag(); + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.Point.getLocalPart()); + + Point p = parsePoint(dimension, crs); + points.add(p); + parser.nextTag(); + parser + .require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.pointMember + .getLocalPart()); + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType() + && GML.MultiPoint.getLocalPart().equals(parser.getName())) { + // we're done + break; + } + } + } + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.MultiPoint.getLocalPart()); + + geom = geomFac.createMultiPoint(points.toArray(new Point[points.size()])); + return geom; + } + + /** + * Parses a MultiLineString. + *

+ * Precondition: parser positioned at a {@link GML#MultiLineString MultiLineString} start tag + *

+ *

+ * Postcondition: parser positioned at the {@link GML#MultiLineString MultiLineString} end tag + * of the starting tag + *

+ * + * @throws IOException + * @throws XmlPullParserException + * @throws FactoryException + * @throws NoSuchAuthorityCodeException + */ + private MultiLineString parseMultiLineString(int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + MultiLineString geom; + + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.MultiLineString.getLocalPart()); + + List lines = new ArrayList(2); + + while (true) { + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType() + && GML.MultiLineString.getLocalPart().equals(parser.getName())) { + // we're done + break; + } + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.lineStringMember + .getLocalPart()); + parser.nextTag(); + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.LineString.getLocalPart()); + + LineString line = parseLineString(dimension, crs); + lines.add(line); + parser.nextTag(); + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.lineStringMember + .getLocalPart()); + } + + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.MultiLineString.getLocalPart()); + + geom = geomFac.createMultiLineString(lines.toArray(new LineString[lines.size()])); + return geom; + } + + /** + * Parses a MultiPolygon out of a MultiSurface element (because our geometry model only supports + * MultiPolygon). + *

+ * Precondition: parser positioned at a {@link GML#MultiSurface MultiSurface} start tag + *

+ *

+ * Postcondition: parser positioned at the {@link GML#MultiSurface MultiSurface} end tag of the + * starting tag + *

+ */ + private Geometry parseMultiSurface(int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + Geometry geom; + parser.nextTag(); + final QName memberTag = new QName(parser.getNamespace(), parser.getName()); + List polygons = new ArrayList(2); + if (GML.surfaceMembers.equals(memberTag)) { + while (true) { + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType() + && GML.surfaceMembers.getLocalPart().equals(parser.getName())) { + // we're done + break; + } + Polygon p = parsePolygon(dimension, crs); + polygons.add(p); + } + parser.nextTag(); + } else if (GML.surfaceMember.equals(memberTag)) { + while (true) { + parser.nextTag(); + Polygon p = parsePolygon(dimension, crs); + polygons.add(p); + parser.nextTag(); + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.surfaceMember + .getLocalPart()); + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType() + && GML.MultiSurface.getLocalPart().equals(parser.getName())) { + // we're done + break; + } + } + } + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.MultiSurface.getLocalPart()); + + geom = geomFac.createMultiPolygon(polygons.toArray(new Polygon[polygons.size()])); + return geom; + } + + /** + * Parses a MultiLineString out of a MultiCurve element (because our geometry model only supports + * MultiLineString). + *

+ * Precondition: parser positioned at a {@link GML#MultiSurface MultiCurve} start tag + *

+ *

+ * Postcondition: parser positioned at the {@link GML#MultiSurface MultiCurve} end tag of the + * starting tag + *

+ */ + private Geometry parseMultiCurve(int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + Geometry geom; + parser.nextTag(); + final QName memberTag = new QName(parser.getNamespace(), parser.getName()); + List lineStrings = new ArrayList(2); + if (GML.curveMembers.equals(memberTag)) { + while (true) { + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType() + && GML.curveMembers.getLocalPart().equals(parser.getName())) { + // we're done + break; + } + LineString l = parseLineString(dimension, crs); + lineStrings.add(l); + } + parser.nextTag(); + } else if (GML.curveMember.equals(memberTag)) { + while (true) { + parser.nextTag(); + LineString l = parseLineString(dimension, crs); + lineStrings.add(l); + parser.nextTag(); + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.curveMember + .getLocalPart()); + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType() + && GML.MultiCurve.getLocalPart().equals(parser.getName())) { + // we're done + break; + } + } + } + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.MultiCurve.getLocalPart()); + + geom = geomFac.createMultiLineString(lineStrings.toArray(new LineString[lineStrings.size()])); + return geom; + } + + private Geometry parseMultiPolygon(int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + Geometry geom; + List polygons = new ArrayList(2); + parser.nextTag(); + while (true) { + parser + .require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.polygonMember + .getLocalPart()); + parser.nextTag(); + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.Polygon.getLocalPart()); + Polygon p = parsePolygon(dimension, crs); + polygons.add(p); + parser.nextTag(); + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.polygonMember.getLocalPart()); + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType() + && GML.MultiPolygon.getLocalPart().equals(parser.getName())) { + // we're done + break; + } + } + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.MultiPolygon.getLocalPart()); + + geom = geomFac.createMultiPolygon(polygons.toArray(new Polygon[polygons.size()])); + return geom; + } + + /** + * Parses a polygon. + *

+ * Precondition: parser positioned at a {@link GML#Polygon Polygon} start tag + *

+ *

+ * Postcondition: parser positioned at the {@link GML#Polygon Polygon} end tag of the starting + * tag + *

+ * + * @param dimension + * @param crs + * @return + * @throws XmlPullParserException + * @throws IOException + * @throws NoSuchAuthorityCodeException + * @throws FactoryException + */ + private Polygon parsePolygon(int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + Polygon geom; + LinearRing shell; + List holes = null; + + parser.nextTag(); + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.exterior.getLocalPart()); + parser.nextTag(); + shell = parseLinearRing(dimension, crs); + parser.nextTag(); + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.exterior.getLocalPart()); + parser.nextTag(); + + if (GML.NAMESPACE.equals(parser.getNamespace()) + && GML.interior.getLocalPart().equals(parser.getName())) { + // parse interior rings + holes = new ArrayList(2); + while (true) { + parser.nextTag(); + LinearRing hole = parseLinearRing(dimension, crs); + holes.add(hole); + parser.nextTag(); + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.interior.getLocalPart()); + parser.nextTag(); + if (XmlPullParser.END_TAG == parser.getEventType()) { + // we're done + parser + .require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.Polygon + .getLocalPart()); + break; + } + } + } + + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.Polygon.getLocalPart()); + + LinearRing[] holesArray = null; + if (holes != null) { + holesArray = holes.toArray(new LinearRing[holes.size()]); + } + geom = geomFac.createPolygon(shell, holesArray); + geom.setUserData(crs); + return geom; + } + + private LinearRing parseLinearRing(final int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.LinearRing.getLocalPart()); + parser.nextTag(); + String tagName = parser.getName(); + String ns = parser.getNamespace(); + Coordinate[] shellCoords; + if (GML.NAMESPACE.equals(ns) && GML.pos.getLocalPart().equals(tagName)) { + Coordinate[] point; + List coords = new ArrayList(); + int eventType; + do { + point = parseCoordList(dimension, crs); + coords.add(point[0]); + parser.nextTag(); + tagName = parser.getName(); + eventType = parser.getEventType(); + } while (eventType == XmlPullParser.START_TAG && GML.pos.getLocalPart().equals(tagName)); + + shellCoords = coords.toArray(new Coordinate[coords.size()]); + + } else if (GML.NAMESPACE.equals(ns) && GML.posList.getLocalPart().equals(tagName)) { + // parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, + // GML.posList.getLocalPart()); + crs = crs(crs); + shellCoords = parseCoordList(dimension, crs); + parser.nextTag(); + } else { + throw new IllegalStateException("Expected posList or pos inside LinearRing: " + tagName); + } + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.LinearRing.getLocalPart()); + LinearRing linearRing = geomFac.createLinearRing(shellCoords); + linearRing.setUserData(crs); + return linearRing; + } + + private LineString parseLineString(int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + LineString geom = null; + parser.nextTag(); + final QName memberTag = new QName(parser.getNamespace(), parser.getName()); + if (GML.coordinates.equals(memberTag) || GML.posList.equals(memberTag)) { + crs = crs(crs); + Coordinate[] coords = parseCoordList(dimension, crs); + geom = geomFac.createLineString(coords); + geom.setUserData(crs); + } + //parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.posList.getLocalPart()); + + parser.nextTag(); + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.LineString.getLocalPart()); + return geom; + } + + private Point parsePoint(int dimension, CoordinateReferenceSystem crs) + throws XmlPullParserException, IOException, NoSuchAuthorityCodeException, + FactoryException { + + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.Point.getLocalPart()); + + Point geom; + parser.nextTag(); + parser.require(XmlPullParser.START_TAG, GML.NAMESPACE, GML.pos.getLocalPart()); + crs = crs(crs); + Coordinate[] coords = parseCoordList(dimension, crs); + geom = geomFac.createPoint(coords[0]); + geom.setUserData(crs); + parser.nextTag(); + + parser.require(XmlPullParser.END_TAG, GML.NAMESPACE, GML.Point.getLocalPart()); + return geom; + } + + private CoordinateReferenceSystem crs(CoordinateReferenceSystem defaultValue) + throws NoSuchAuthorityCodeException, FactoryException { + String srsName = parser.getAttributeValue(null, "srsName"); + if (srsName == null) { + return defaultValue; + } + CoordinateReferenceSystem crs = CRS.decode(srsName); + return crs; + } + + private int crsDimension(final int defaultValue) { + String srsDimension = parser.getAttributeValue(null, "srsDimension"); + if (srsDimension == null) { + return defaultValue; + } + int dimension = Integer.valueOf(srsDimension); + return dimension; + } + + private Coordinate[] parseCoordList(int dimension, final CoordinateReferenceSystem crs) throws XmlPullParserException, IOException { + // we might be on a posList tag with srsDimension defined + dimension = crsDimension(dimension); + String rawTextValue = parser.nextText(); + Coordinate[] coords = toCoordList(rawTextValue, dimension, crs); + return coords; + } + + private Coordinate[] toCoordList(String rawTextValue, final int dimension, final CoordinateReferenceSystem crs) { + rawTextValue = rawTextValue.trim(); + rawTextValue = rawTextValue.replaceAll("\n", " "); + rawTextValue = rawTextValue.replaceAll("\r", " "); + String[] split = rawTextValue.trim().split("[ ,]+"); + final int ordinatesLength = split.length; + if (ordinatesLength % dimension != 0) { + throw new IllegalArgumentException("Number of ordinates (" + ordinatesLength + + ") does not match crs dimension: " + dimension); + } + + boolean invertXY = WFS_1_1_0_DataStore.invertAxisNeeded(axisOrder, crs); + + final int nCoords = ordinatesLength / dimension; + Coordinate[] coords = new Coordinate[nCoords]; + Coordinate coord; + int currCoordIdx = 0; + double x, y, z; + for (int i = 0; i < ordinatesLength; i += dimension) { + x = Double.valueOf(split[i]); + y = Double.valueOf(split[i + 1]); + if (dimension > 2) { + z = Double.valueOf(split[i + 2]); + if (invertXY) { + coord = new Coordinate(y, x, z); + } else { + coord = new Coordinate(x, y, z); + } + } else { + if (invertXY) { + coord = new Coordinate(y, x); + } else { + coord = new Coordinate(x, y); + } + } + coords[currCoordIdx] = coord; + currCoordIdx++; + } + return coords; + } + + private String seekFeature() throws IOException, XmlPullParserException { + int tagType; + + while (true) { + tagType = parser.next(); + if (tagType == XmlPullParser.END_DOCUMENT) { + close(); + return null; + } + if (XmlPullParser.START_TAG != tagType) { + continue; + } + if (XmlPullParser.START_TAG == tagType) { + String namespace = parser.getNamespace(); + String name = parser.getName(); + if (featureNamespace.equals(namespace) && featureName.equals(name)) { + String featureId = parser.getAttributeValue(GML.id.getNamespaceURI(), GML.id + .getLocalPart()); + + if (featureId == null) { + featureId = parser.getAttributeValue(null, "fid"); + } + // Mapserver hack + if (featureId == null) { + featureId = parser.getAttributeValue(null, "id"); + } + + //ArcGIS hack + if (featureId == null) { + featureId = Placeholder_ArcgisServer_FeatureID; + } + + + return featureId; + } + } + } + } + + public Object parse(WFSProtocol wfs, WFSResponse response) { + return null; + } + +} \ No newline at end of file diff --git a/geoportal_1/src/main/java/org/opengeoportal/admin/AdminController.java b/geoportal_1/src/main/java/org/opengeoportal/admin/AdminController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/ConfigController.java b/geoportal_1/src/main/java/org/opengeoportal/config/ConfigController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/PropertiesFile.java b/geoportal_1/src/main/java/org/opengeoportal/config/PropertiesFile.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/ogp/OgpConfigRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/config/ogp/OgpConfigRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/proxy/InternalServerMapping.java b/geoportal_1/src/main/java/org/opengeoportal/config/proxy/InternalServerMapping.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/proxy/ProxyConfig.java b/geoportal_1/src/main/java/org/opengeoportal/config/proxy/ProxyConfig.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/proxy/ProxyConfigRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/config/proxy/ProxyConfigRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/proxy/ProxyConfigRetrieverFromProperties.java b/geoportal_1/src/main/java/org/opengeoportal/config/proxy/ProxyConfigRetrieverFromProperties.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/proxy/PublicServerMapping.java b/geoportal_1/src/main/java/org/opengeoportal/config/proxy/PublicServerMapping.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/proxy/ServerMapping.java b/geoportal_1/src/main/java/org/opengeoportal/config/proxy/ServerMapping.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/repositories/RepositoryConfig.java b/geoportal_1/src/main/java/org/opengeoportal/config/repositories/RepositoryConfig.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/repositories/RepositoryConfigRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/config/repositories/RepositoryConfigRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/repositories/RepositoryConfigRetrieverFromProperties.java b/geoportal_1/src/main/java/org/opengeoportal/config/repositories/RepositoryConfigRetrieverFromProperties.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/search/SearchConfig.java b/geoportal_1/src/main/java/org/opengeoportal/config/search/SearchConfig.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/search/SearchConfigRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/config/search/SearchConfigRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/search/SearchConfigRetrieverFromProperties.java b/geoportal_1/src/main/java/org/opengeoportal/config/search/SearchConfigRetrieverFromProperties.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/config/search/SearchRepository.java b/geoportal_1/src/main/java/org/opengeoportal/config/search/SearchRepository.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/DownloadHandler.java b/geoportal_1/src/main/java/org/opengeoportal/download/DownloadHandler.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/DownloadHandlerFactory.java b/geoportal_1/src/main/java/org/opengeoportal/download/DownloadHandlerFactory.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/DownloadHandlerImpl.java b/geoportal_1/src/main/java/org/opengeoportal/download/DownloadHandlerImpl.java old mode 100644 new mode 100755 index 6c97c65..23923ff --- a/geoportal_1/src/main/java/org/opengeoportal/download/DownloadHandlerImpl.java +++ b/geoportal_1/src/main/java/org/opengeoportal/download/DownloadHandlerImpl.java @@ -88,7 +88,7 @@ SolrRecord findRecord(String layerId, List recordList) throws Except return sr; } } - + throw new Exception("Record not found."); }; @@ -178,9 +178,7 @@ private LayerRequest createLayerRequest(SolrRecord solrRecord, String requestedF layer.setRequestedBounds(bounds); layer.setEmailAddress(emailAddress); layer.setTargetDirectory(this.directoryRetriever.getDownloadDirectory()); - if (LocationFieldUtils.hasWmsUrl(solrRecord.getLocation())){ - addOwsInfo(layer); - } + addOwsInfo(layer); return layer; } diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/DownloadPackager.java b/geoportal_1/src/main/java/org/opengeoportal/download/DownloadPackager.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/DownloadPackagerImpl.java b/geoportal_1/src/main/java/org/opengeoportal/download/DownloadPackagerImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/DownloadRequest.java b/geoportal_1/src/main/java/org/opengeoportal/download/DownloadRequest.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/EmailLayerDownloader.java b/geoportal_1/src/main/java/org/opengeoportal/download/EmailLayerDownloader.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/LayerDownloader.java b/geoportal_1/src/main/java/org/opengeoportal/download/LayerDownloader.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/LayerDownloaderProvider.java b/geoportal_1/src/main/java/org/opengeoportal/download/LayerDownloaderProvider.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/MetadataFromSolr.java b/geoportal_1/src/main/java/org/opengeoportal/download/MetadataFromSolr.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/MetadataRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/download/MetadataRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/MethodLevelDownloadRequest.java b/geoportal_1/src/main/java/org/opengeoportal/download/MethodLevelDownloadRequest.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/MultiLayerDownloader.java b/geoportal_1/src/main/java/org/opengeoportal/download/MultiLayerDownloader.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/PerLayerDownloader.java b/geoportal_1/src/main/java/org/opengeoportal/download/PerLayerDownloader.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/RequestStatusManager.java b/geoportal_1/src/main/java/org/opengeoportal/download/RequestStatusManager.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/RequestStatusManagerImpl.java b/geoportal_1/src/main/java/org/opengeoportal/download/RequestStatusManagerImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/RequestStatusSessionListener.java b/geoportal_1/src/main/java/org/opengeoportal/download/RequestStatusSessionListener.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/config/ConfigRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/download/config/ConfigRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/config/DownloadConfigRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/download/config/DownloadConfigRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/config/OgpDownloadConfigRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/download/config/OgpDownloadConfigRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/controllers/DownloadRequestController.java b/geoportal_1/src/main/java/org/opengeoportal/download/controllers/DownloadRequestController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/controllers/DownloadRetrievalController.java b/geoportal_1/src/main/java/org/opengeoportal/download/controllers/DownloadRetrievalController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/controllers/RequestStatus.java b/geoportal_1/src/main/java/org/opengeoportal/download/controllers/RequestStatus.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/controllers/RequestStatusController.java b/geoportal_1/src/main/java/org/opengeoportal/download/controllers/RequestStatusController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/controllers/RequestedLayerStatus.java b/geoportal_1/src/main/java/org/opengeoportal/download/controllers/RequestedLayerStatus.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/controllers/SubmittedDownloadRequest.java b/geoportal_1/src/main/java/org/opengeoportal/download/controllers/SubmittedDownloadRequest.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/AbstractDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/AbstractDownloadMethod.java old mode 100644 new mode 100755 index 55ef4c2..84f4dc5 --- a/geoportal_1/src/main/java/org/opengeoportal/download/methods/AbstractDownloadMethod.java +++ b/geoportal_1/src/main/java/org/opengeoportal/download/methods/AbstractDownloadMethod.java @@ -18,6 +18,7 @@ import org.opengeoportal.layer.BoundingBox; import org.opengeoportal.solr.SolrRecord; import org.opengeoportal.utilities.DirectoryRetriever; +import org.opengeoportal.utilities.LocationFieldUtils; import org.opengeoportal.utilities.OgpFileUtils; import org.opengeoportal.utilities.http.HttpRequester; import org.slf4j.Logger; @@ -180,10 +181,9 @@ public BoundingBox getClipBounds() throws Exception{ public Boolean hasRequiredInfo(LayerRequest layerRequest){ try { - if (getUrls(layerRequest) != null && !getUrls(layerRequest).isEmpty()){ + if (getUrls(layerRequest) != null && !getUrls(layerRequest).isEmpty()) return true; - } - + return false; } catch (Exception e){ logger.debug(e.getMessage()); } diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/CustomMarshaller.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/CustomMarshaller.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/DownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/DownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/EmailDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/EmailDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceToShape.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceToShape.java old mode 100644 new mode 100755 index b54b1c7..85ed240 --- a/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceToShape.java +++ b/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceToShape.java @@ -1,12 +1,13 @@ package org.opengeoportal.download.methods; import java.io.File; +import java.util.Set; import com.vividsolutions.jts.geom.Envelope; public interface FeatureSourceToShape { - File exportToShapefile() throws Exception; + Set exportToShapefiles() throws Exception; void setFeatureCollectionBBox(Envelope bbox) throws Exception; diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceToShapeImpl.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceToShapeImpl.java old mode 100644 new mode 100755 index 6d73061..7596347 --- a/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceToShapeImpl.java +++ b/geoportal_1/src/main/java/org/opengeoportal/download/methods/FeatureSourceToShapeImpl.java @@ -7,6 +7,8 @@ import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.Set; +import java.util.HashSet; import org.geotools.data.DataStore; import org.geotools.data.DataUtilities; @@ -32,6 +34,7 @@ import org.geotools.referencing.crs.DefaultGeographicCRS; import org.opengeoportal.utilities.DirectoryRetriever; import org.opengeoportal.utilities.OgpFileUtils; +import org.opengeoportal.utilities.ZipFilePackager; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; import org.opengis.filter.FilterFactory; @@ -108,23 +111,26 @@ public void setFeatureCollectionBBox(Envelope bbox) throws Exception{ * @param targetFeatureStore * @throws IOException */ - protected void copyFeatures(SimpleFeatureSource featureSource, SimpleFeatureStore targetStore) throws IOException{ + protected void copyFeatures(SimpleFeatureSource featureSource, SimpleFeatureSource targetSource) throws IOException{ /* * Write the features to the shapefile */ - Transaction transaction = new DefaultTransaction(); + Transaction transaction = new DefaultTransaction("create"); - //if (featureSource instanceof SimpleFeatureStore) { + if (targetSource instanceof SimpleFeatureStore) { /* * SimpleFeatureStore has a method to add features from a * SimpleFeatureCollection object, so we use the ListFeatureCollection * class to wrap our list of features. */ + SimpleFeatureStore targetStore = (SimpleFeatureStore) targetSource; + targetStore.setTransaction(transaction); + try { SimpleFeatureCollection collection = featureSource.getFeatures(); - SimpleFeatureIterator collIter = collection.features(); + //SimpleFeatureIterator collIter = collection.features(); logger.info(collection.getSchema().toString()); logger.info(targetStore.getSchema().toString()); @@ -142,7 +148,10 @@ protected void copyFeatures(SimpleFeatureSource featureSource, SimpleFeatureStor } finally { transaction.close(); } - + } else { + System.out.println(" does not support read/write access"); + System.exit(1); + } } /** @@ -152,9 +161,7 @@ protected void copyFeatures(SimpleFeatureSource featureSource, SimpleFeatureStor * @throws Exception */ @Override - public - File exportToShapefile() - throws Exception { + public Set exportToShapefiles() throws Exception { File directory = directoryRetriever.getDownloadDirectory(); @@ -164,8 +171,8 @@ File exportToShapefile() String typeName = ft.getTypeName(); String fileName = OgpFileUtils.filterName(typeName); - File file = new File(directory, fileName + ".shp"); - file.createNewFile(); + File fileSHP = new File(directory, fileName + ".shp"); + fileSHP.createNewFile(); /* * Get an output file name and create the new shapefile @@ -174,7 +181,7 @@ File exportToShapefile() ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory(); Map params = new HashMap(); - params.put("url", file.toURI().toURL()); + params.put("url", fileSHP.toURI().toURL()); params.put("create spatial index", Boolean.TRUE); ShapefileDataStore shpDataStore = (ShapefileDataStore) dataStoreFactory.createNewDataStore(params); @@ -186,14 +193,23 @@ File exportToShapefile() */ // newDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84); String[] typeNames = shpDataStore.getTypeNames(); - SimpleFeatureStore featureStore = (SimpleFeatureStore) shpDataStore.getFeatureSource(typeNames[0]); + SimpleFeatureSource shpFeatureSource =shpDataStore.getFeatureSource(typeNames[0]); logger.info("created schema"); - logger.info("created feature store"); - copyFeatures(featureSource, featureStore); + copyFeatures(featureSource, shpFeatureSource); logger.info("copied features"); + + Set shapeFileSet = new HashSet(); + File fileDBF = new File(directory, fileName + ".dbf"); + File fileSHX = new File(directory, fileName + ".shx"); + File filePRJ = new File(directory, fileName + ".prj"); + + shapeFileSet.add(fileSHP); + shapeFileSet.add(fileSHX); + shapeFileSet.add(filePRJ); + shapeFileSet.add(fileDBF); - return file; + return shapeFileSet; } } diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/FileDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/FileDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/GeoToolsDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/GeoToolsDownloadMethod.java old mode 100644 new mode 100755 index 3ae6ef8..036bd6e --- a/geoportal_1/src/main/java/org/opengeoportal/download/methods/GeoToolsDownloadMethod.java +++ b/geoportal_1/src/main/java/org/opengeoportal/download/methods/GeoToolsDownloadMethod.java @@ -2,6 +2,7 @@ import java.io.File; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.concurrent.Future; @@ -9,6 +10,8 @@ import org.geotools.referencing.crs.DefaultGeographicCRS; import org.opengeoportal.download.types.LayerRequest; import org.opengeoportal.layer.BoundingBox; +import org.opengeoportal.solr.SolrRecord; +import org.opengeoportal.utilities.LocationFieldUtils; import org.opengis.referencing.crs.CoordinateReferenceSystem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,8 +19,9 @@ import com.vividsolutions.jts.geom.Envelope; -public class GeoToolsDownloadMethod implements PerLayerDownloadMethod { +public class GeoToolsDownloadMethod extends AbstractDownloadMethod implements PerLayerDownloadMethod { private static final Boolean INCLUDES_METADATA = false; + private static final String METHOD = "GET"; private FeatureSourceToShape featureSourceToShape; @@ -31,9 +35,41 @@ public void setFeatureSourceToShape(FeatureSourceToShape featureSourceToShape) { this.featureSourceToShape = featureSourceToShape; } + @Override + public String getMethod(){ + return METHOD; + } + + @Override + public Set getExpectedContentType(){ + Set expectedContentType = new HashSet(); + expectedContentType.add("application/zip"); + return expectedContentType; + } + + @Override + public List getUrls(LayerRequest layer) throws Exception{ + if(LocationFieldUtils.hasArcGISRestUrl(layer.getLayerInfo().getLocation())) + { + String url = layer.getWfsUrl(); + this.checkUrl(url); + return urlToUrls(url); + } + + return null; + + } + + @Override + public String createDownloadRequest() throws Exception { + return new String("This is a dummy implementation."); + } + @Override public Future> download(LayerRequest currentLayer) throws Exception { + currentLayer.setMetadata(this.includesMetadata()); + BoundingBox bbox = currentLayer.getRequestedBounds(); Envelope currentBounds = new Envelope(bbox.getMinX(), bbox.getMinY(), bbox.getMaxX(), bbox.getMaxY()); FeatureSourceRetriever fsr = featureSourceToShape.getFeatureSourceRetriever(); @@ -55,7 +91,7 @@ public Future> download(LayerRequest currentLayer) //featureSourceToShape.setFeatureCollectionBBox(currentBounds); Set fileSet = new HashSet(); - fileSet.add(featureSourceToShape.exportToShapefile()); + fileSet.addAll(featureSourceToShape.exportToShapefiles()); return new AsyncResult>(fileSet); } @@ -64,10 +100,14 @@ public Boolean includesMetadata() { return INCLUDES_METADATA; } +/* Alle Lin: Should use the superclass function if derived from AbstractDownloadMethod @Override public Boolean hasRequiredInfo(LayerRequest layer) { // TODO determine how to do this generically - return true; + if(LocationFieldUtils.hasArcGISRestUrl(layer.getLayerInfo().getLocation())) + return true; + return false; } - +*/ } + diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/HGLEmailDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/HGLEmailDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/KmlDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/KmlDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/MITDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/MITDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/MultiLayerDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/MultiLayerDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/PerLayerDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/PerLayerDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/ProxiedWcsDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/ProxiedWcsDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/ProxiedWfsDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/ProxiedWfsDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/Wcs1_1_1DownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/Wcs1_1_1DownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/WcsDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/WcsDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/Wfs1_1DownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/Wfs1_1DownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/WfsDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/WfsDownloadMethod.java old mode 100644 new mode 100755 index 264e6fe..c92e660 --- a/geoportal_1/src/main/java/org/opengeoportal/download/methods/WfsDownloadMethod.java +++ b/geoportal_1/src/main/java/org/opengeoportal/download/methods/WfsDownloadMethod.java @@ -13,6 +13,7 @@ import org.opengeoportal.ogc.OwsInfo; import org.opengeoportal.ogc.wfs.WfsGetFeature; import org.opengeoportal.solr.SolrRecord; +import org.opengeoportal.utilities.LocationFieldUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -70,12 +71,16 @@ public String createDownloadRequest() throws Exception { //really, we should check the get caps doc to see if this is a viable option...probably this should be done before/at the download prompt String outputFormat = "shape-zip"; - String request = WfsGetFeature.createWfsGetFeatureRequest(layerName, workSpace, nameSpace, outputFormat, bboxFilter); - return request; + return WfsGetFeature.createWfsGetFeatureRequest(layerName, workSpace, nameSpace, outputFormat, bboxFilter); + } @Override public List getUrls(LayerRequest layer) throws Exception{ + if(LocationFieldUtils.hasArcGISRestUrl(layer.getLayerInfo().getLocation())) + { + return null; + } String url = layer.getWfsUrl(); this.checkUrl(url); return urlToUrls(url); diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/WfsFeatureSourceRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/WfsFeatureSourceRetriever.java old mode 100644 new mode 100755 index e3b130d..d807c12 --- a/geoportal_1/src/main/java/org/opengeoportal/download/methods/WfsFeatureSourceRetriever.java +++ b/geoportal_1/src/main/java/org/opengeoportal/download/methods/WfsFeatureSourceRetriever.java @@ -9,6 +9,7 @@ import org.geotools.data.FeatureSource; import org.geotools.data.simple.SimpleFeatureSource; import org.opengeoportal.download.types.LayerRequest; +import org.opengeoportal.utilities.LocationFieldUtils; import org.opengeoportal.utilities.OgpUtils; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; @@ -22,14 +23,17 @@ public class WfsFeatureSourceRetriever implements FeatureSourceRetriever { @Override public void createFeatureSourceFromLayerRequest(LayerRequest layerRequest) throws Exception{ - setFeatureSource(layerRequest.getWfsUrl(), layerRequest.getLayerNameNS()); + setFeatureSource(layerRequest.getWfsUrl(), layerRequest.getLayerNameNS(), LocationFieldUtils.hasArcGISRestUrl(layerRequest.getLayerInfo().getLocation())); } - void setFeatureSource(String wfsEndPoint, String layerName) throws Exception{ + void setFeatureSource(String wfsEndPoint, String layerName, Boolean isFromArcGISServer) throws Exception{ String getCapabilities = OgpUtils.combinePathWithQuery(wfsEndPoint, "REQUEST=GetCapabilities&VERSION=1.1.0"); + // Both ArcGIS Server 9.3 and 10 are compliant with WFS 1.1.0, so hard-coding VERSION=1.1.0 should be fine. - Map connectionParameters = new HashMap(); + Map connectionParameters = new HashMap(); connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", getCapabilities ); + if (isFromArcGISServer) + connectionParameters.put("WFSDataStoreFactory:WFS_STRATEGY", "arcgis"); /* * “WFSDataStoreFactory:GET_CAPABILITIES_URL” Link to capabilities document. The implementation supports both WFS 1.0 (read/write) and WFS 1.1 (read-only). “WFSDataStoreFactory:PROTOCOL” Optional: True for Post, False for GET, null for auto @@ -57,8 +61,8 @@ void setFeatureSource(String wfsEndPoint, String layerName) throws Exception{ //find the typeName we're looking for String typeName = ""; for (int i = 0; i < typeNames.length; i++){ - if (typeNames[i].equalsIgnoreCase(layerName)){ - typeName = layerName; + if (typeNames[i].contains(layerName)){ + typeName = typeNames[i]; break; } } diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/WmsDescribeLayer.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/WmsDescribeLayer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/WmsDescribeLayerImpl.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/WmsDescribeLayerImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/methods/WmsDownloadMethod.java b/geoportal_1/src/main/java/org/opengeoportal/download/methods/WmsDownloadMethod.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/types/LayerRequest.java b/geoportal_1/src/main/java/org/opengeoportal/download/types/LayerRequest.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/types/LayerStatus.java b/geoportal_1/src/main/java/org/opengeoportal/download/types/LayerStatus.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/LayerDescription.java b/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/LayerDescription.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/ObjectFactory.java b/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/ObjectFactory.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/Query.java b/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/Query.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/WMSDescribeLayerResponse.java b/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/WMSDescribeLayerResponse.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/WMS_DescribeLayerResponse.dtd b/geoportal_1/src/main/java/org/opengeoportal/download/types/generated/ogc/wms_describelayer/WMS_DescribeLayerResponse.dtd old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/AddLayerToMapRequestJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/AddLayerToMapRequestJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/AddWMSLayerToMapRequestJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/AddWMSLayerToMapRequestJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateDataSetRequestJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateDataSetRequestJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateDataSetResponseJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateDataSetResponseJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateFileDataSetRequestJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateFileDataSetRequestJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateMapRequestJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateMapRequestJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateMapResponseJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateMapResponseJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateStreamDataSetRequestJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateStreamDataSetRequestJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateUserRequestJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/CreateUserRequestJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/DataSetStatus.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/DataSetStatus.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/DataSetStatusOld.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/DataSetStatusOld.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/ExportKmlToGeoCommons.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/ExportKmlToGeoCommons.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/ExportRequestController.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/ExportRequestController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsClient.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsClient.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExportHandler.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExportHandler.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExportHandlerFactory.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExportHandlerFactory.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExportHandlerImpl.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExportHandlerImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExportRequest.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExportRequest.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExporter.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExporter.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExporterImpl.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsExporterImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsJsonClient.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/GeoCommonsJsonClient.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/RetrieveExportController.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/RetrieveExportController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/SearchResponseJson.java b/geoportal_1/src/main/java/org/opengeoportal/export/geocommons/SearchResponseJson.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/layer/AccessLevel.java b/geoportal_1/src/main/java/org/opengeoportal/layer/AccessLevel.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/layer/BoundingBox.java b/geoportal_1/src/main/java/org/opengeoportal/layer/BoundingBox.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/layer/Envelope.java b/geoportal_1/src/main/java/org/opengeoportal/layer/Envelope.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/layer/GeometryType.java b/geoportal_1/src/main/java/org/opengeoportal/layer/GeometryType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/layer/Metadata.java b/geoportal_1/src/main/java/org/opengeoportal/layer/Metadata.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/metadata/LayerInfoRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/metadata/LayerInfoRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/metadata/SolrLayerInfoRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/metadata/SolrLayerInfoRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/AugmentedSolrRecord.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/AugmentedSolrRecord.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/AugmentedSolrRecordRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/AugmentedSolrRecordRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/AugmentedSolrRecordRetrieverImpl.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/AugmentedSolrRecordRetrieverImpl.java old mode 100644 new mode 100755 index d348b9a..35da439 --- a/geoportal_1/src/main/java/org/opengeoportal/ogc/AugmentedSolrRecordRetrieverImpl.java +++ b/geoportal_1/src/main/java/org/opengeoportal/ogc/AugmentedSolrRecordRetrieverImpl.java @@ -128,17 +128,53 @@ private AugmentedSolrRecord addNativeTypeInfo(AugmentedSolrRecord asr, String ty @Override public AugmentedSolrRecord getOgcAugmentedSolrRecord(SolrRecord solrRecord) throws Exception { - AugmentedSolrRecord asr = getInfoAttempt(wmsRequester, DATA_ATTEMPTS, solrRecord); - OwsInfo wmsInfo = OwsInfo.findWmsInfo(asr.getOwsInfo()); - String type = wmsInfo.getInfoMap().get("owsType"); - //String qualName = wmsInfo.getWmsResponseMap().get("qualifiedName"); - String owsUrl = wmsInfo.getInfoMap().get("owsUrl"); - Thread.sleep(PAUSE); - + String type; + String owsUrl; + AugmentedSolrRecord asr = null; + + if (isArcGISServer(solrRecord)) + { + //If it is from ArcGIS Server, there will be no ogcInfo associated with the ArcGIS Rest + asr = new AugmentedSolrRecord(); + asr.setSolrRecord(solrRecord); + + //If the mapserver is ArcGIS Server rest service, we should handle the retrieval of OWSUrl and OWS type separately. + if (LocationFieldUtils.hasWfsUrl(solrRecord.getLocation())) + { + //If it has the wfs url, downloading will come from wfs + type = "WFS"; + owsUrl = LocationFieldUtils.getWfsUrl(solrRecord.getLocation()); + } + else + { + //If it has only wcs url, download will come from wcs + type = "WCS"; + owsUrl = LocationFieldUtils.getWcsUrl(solrRecord.getLocation()); + } + } + else + { + //else, the map server is geoserver, we could query the OWS Url as normal + asr = getInfoAttempt(wmsRequester, DATA_ATTEMPTS, solrRecord); + OwsInfo wmsInfo = OwsInfo.findWmsInfo(asr.getOwsInfo()); + type = wmsInfo.getInfoMap().get("owsType"); + //String qualName = wmsInfo.getWmsResponseMap().get("qualifiedName"); + owsUrl = wmsInfo.getInfoMap().get("owsUrl"); + Thread.sleep(PAUSE); + } + return addNativeTypeInfo(asr, type, owsUrl); } + private Boolean isArcGISServer(SolrRecord solrRecord) + { + if (LocationFieldUtils.hasArcGISRestUrl(solrRecord.getLocation())&&LocationFieldUtils.hasWfsUrl(solrRecord.getLocation())) + return true; + else + return false; + } + private AugmentedSolrRecord getInfoAttempt(OgcInfoRequester requester, int numAttempts, String layerId) throws Exception{ SolrRecord solrRecord = layerInfoRetriever.getAllLayerInfo(layerId); diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/OgcInfoRequest.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/OgcInfoRequest.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/OgcInfoRequester.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/OgcInfoRequester.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/OgcInfoRequesterImpl.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/OgcInfoRequesterImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/OwsDescribeInfo.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/OwsDescribeInfo.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/OwsInfo.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/OwsInfo.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/WmcCreator.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/WmcCreator.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/WmcCreatorImpl.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/WmcCreatorImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/WcsDescribeCoverage1_1_1.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/WcsDescribeCoverage1_1_1.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/WcsGetCoverage1_1_1.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/WcsGetCoverage1_1_1.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/wcs1_0_0/CoverageOffering1_0_0.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/wcs1_0_0/CoverageOffering1_0_0.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/wcs1_0_0/RectifiedGrid.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/wcs1_0_0/RectifiedGrid.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/wcs1_0_0/WcsDescribeCoverage1_0_0.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/wcs1_0_0/WcsDescribeCoverage1_0_0.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/wcs1_0_0/WcsGetCoverage1_0_0.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wcs/wcs1_0_0/WcsGetCoverage1_0_0.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wfs/WfsDescribeFeature.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wfs/WfsDescribeFeature.java old mode 100644 new mode 100755 index d473acd..11f340c --- a/geoportal_1/src/main/java/org/opengeoportal/ogc/wfs/WfsDescribeFeature.java +++ b/geoportal_1/src/main/java/org/opengeoportal/ogc/wfs/WfsDescribeFeature.java @@ -65,7 +65,17 @@ public OwsInfo parseResponse(InputStream inputStream) throws Exception { describeLayerInfo.put("nameSpace", schemaAttributes.getNamedItem("targetNamespace").getNodeValue()); //we can get the geometry column name from here - NodeList elementNodes = document.getElementsByTagName("xsd:element"); + NodeList elementNodes; + + if(document.getElementsByTagName("xsd:element").getLength()!=0) + { + elementNodes = document.getElementsByTagName("xsd:element"); + } + else + //ArcGIS uses prefix "xs" but xs and xsd are essentially same if they refer to the same schema. + //See reference http://stackoverflow.com/questions/1193563/difference-between-xs-and-xsd-in-xml-schema-file + elementNodes = document.getElementsByTagName("xs:element"); + for (int i = 0; i < elementNodes.getLength(); i++){ Node currentNode = elementNodes.item(i); NamedNodeMap currentAttributeMap = currentNode.getAttributes(); diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wfs/WfsGetFeature.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wfs/WfsGetFeature.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/WmcGeneral.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/WmcGeneral.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/WmcLayer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/WmcLayer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/WmcViewContext.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/WmcViewContext.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AVERAGE.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AVERAGE.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractFeatureCollectionBaseType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractFeatureCollectionBaseType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractFeatureCollectionType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractFeatureCollectionType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractFeatureType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractFeatureType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractGeometryCollectionBaseType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractGeometryCollectionBaseType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractGeometryType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AbstractGeometryType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ActuateType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ActuateType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AddressType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AddressType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AnchorPoint.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/AnchorPoint.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ArcType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ArcType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BBOXType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BBOXType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BinaryComparisonOpType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BinaryComparisonOpType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BinaryLogicOpType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BinaryLogicOpType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BinaryOperatorType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BinaryOperatorType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BinarySpatialOpType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BinarySpatialOpType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BoundingBoxType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BoundingBoxType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BoundingShapeType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BoundingShapeType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BoxType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/BoxType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ChannelSelection.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ChannelSelection.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ColorMap.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ColorMap.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ColorMapEntry.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ColorMapEntry.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ComparisonOpsType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ComparisonOpsType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ContactInformationType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ContactInformationType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ContactPersonPrimaryType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ContactPersonPrimaryType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ContextURLType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ContextURLType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ContrastEnhancement.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ContrastEnhancement.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/CoordType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/CoordType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/CoordinatesType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/CoordinatesType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/CssParameter.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/CssParameter.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/DimensionListType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/DimensionListType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/DimensionType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/DimensionType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Displacement.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Displacement.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/DistanceBufferType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/DistanceBufferType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/DistanceType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/DistanceType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/EARLIESTONTOP.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/EARLIESTONTOP.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ElseFilter.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ElseFilter.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ExpressionType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ExpressionType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Extended.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Extended.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ExtensionType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ExtensionType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Extent.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Extent.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ExternalGraphic.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ExternalGraphic.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FeatureAssociationType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FeatureAssociationType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FeatureIdType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FeatureIdType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FeatureTypeConstraint.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FeatureTypeConstraint.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FeatureTypeStyle.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FeatureTypeStyle.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Fill.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Fill.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FilterType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FilterType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Font.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Font.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FormatListType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FormatListType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FormatType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FormatType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FunctionType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/FunctionType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GeneralType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GeneralType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Geometry.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Geometry.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GeometryAssociationType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GeometryAssociationType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GeometryCollectionType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GeometryCollectionType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GeometryPropertyType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GeometryPropertyType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Graphic.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Graphic.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GraphicFill.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GraphicFill.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GraphicStroke.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/GraphicStroke.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Halo.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Halo.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Histogram.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Histogram.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ImageOutline.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ImageOutline.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/KeywordListType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/KeywordListType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LATESTONTOP.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LATESTONTOP.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LabelPlacement.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LabelPlacement.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LayerFeatureConstraints.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LayerFeatureConstraints.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LayerListType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LayerListType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LayerType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LayerType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LegendGraphic.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LegendGraphic.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LinePlacement.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LinePlacement.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LineStringMemberType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LineStringMemberType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LineStringPropertyType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LineStringPropertyType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LineStringType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LineStringType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LineSymbolizer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LineSymbolizer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LinearRingMemberType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LinearRingMemberType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LinearRingType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LinearRingType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LiteralType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LiteralType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LocatorType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LocatorType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LogicOpsType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LogicOpsType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LowerBoundaryType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/LowerBoundaryType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Mark.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Mark.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiGeometryPropertyType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiGeometryPropertyType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiLineStringPropertyType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiLineStringPropertyType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiLineStringType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiLineStringType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiPointPropertyType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiPointPropertyType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiPointType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiPointType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiPolygonPropertyType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiPolygonPropertyType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiPolygonType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/MultiPolygonType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/NamedLayer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/NamedLayer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/NamedStyle.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/NamedStyle.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Normalize.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Normalize.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/NullType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/NullType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ObjectFactory.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ObjectFactory.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/OnlineResource.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/OnlineResource.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/OnlineResourceType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/OnlineResourceType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/OverlapBehavior.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/OverlapBehavior.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ParameterValueType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ParameterValueType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointMemberType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointMemberType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointPlacement.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointPlacement.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointPropertyType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointPropertyType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointSymbolizer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointSymbolizer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PointType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PolygonMemberType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PolygonMemberType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PolygonPropertyType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PolygonPropertyType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PolygonSymbolizer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PolygonSymbolizer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PolygonType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PolygonType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PropertyIsBetweenType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PropertyIsBetweenType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PropertyIsLikeType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PropertyIsLikeType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PropertyIsNullType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PropertyIsNullType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PropertyNameType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/PropertyNameType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/RANDOM.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/RANDOM.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/RasterSymbolizer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/RasterSymbolizer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/RemoteOWS.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/RemoteOWS.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ResourceType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ResourceType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Rule.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Rule.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/SLDType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/SLDType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/SelectedChannelType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/SelectedChannelType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ServerType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ServerType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ServiceType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ServiceType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ShadedRelief.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ShadedRelief.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ShowType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ShowType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Simple.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Simple.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/SpatialOpsType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/SpatialOpsType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Stroke.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/Stroke.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/StyleListType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/StyleListType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/StyleType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/StyleType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/StyledLayerDescriptor.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/StyledLayerDescriptor.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/SymbolizerType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/SymbolizerType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/TextSymbolizer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/TextSymbolizer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/TitleEltType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/TitleEltType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/TypeType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/TypeType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/URLType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/URLType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/UnaryLogicOpType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/UnaryLogicOpType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/UpperBoundaryType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/UpperBoundaryType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/UserLayer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/UserLayer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/UserStyle.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/UserStyle.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ViewContextCollectionType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ViewContextCollectionType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ViewContextReferenceType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ViewContextReferenceType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ViewContextType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ViewContextType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/WindowType.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/WindowType.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/bindings.xml b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/bindings.xml old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/collection.xsd b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/collection.xsd old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/context.xsd b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/context.xsd old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ort.xsd b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/ort.xsd old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/package-info.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/package-info.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/wmcAll.xsd b/geoportal_1/src/main/java/org/opengeoportal/ogc/wmc/jaxb/wmcAll.xsd old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/ogc/wms/WmsDescribeLayer.java b/geoportal_1/src/main/java/org/opengeoportal/ogc/wms/WmsDescribeLayer.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/AuthenticatingGenericProxy.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/AuthenticatingGenericProxy.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/GenericProxy.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/GenericProxy.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/GenericProxyImpl.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/GenericProxyImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/GetCapabilitiesWFSProxy.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/GetCapabilitiesWFSProxy.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/GetCapabilitiesWMSProxy.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/GetCapabilitiesWMSProxy.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageCompositor.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageCompositor.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageCompositorImpl.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageCompositorImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageDownloader.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageDownloader.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageDownloaderFactory.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageDownloaderFactory.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageDownloaderImpl.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageDownloaderImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageHandler.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageHandler.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageHandlerFactory.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageHandlerFactory.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageHandlerImpl.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/ImageHandlerImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/DynamicOgcController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/DynamicOgcController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/GetFeatureInfoController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/GetFeatureInfoController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/GetOgcInfoController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/GetOgcInfoController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/GetWmcController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/GetWmcController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/ImageController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/ImageController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/ImageRequest.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/ImageRequest.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/ImageRetrievalController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/ImageRetrievalController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/OldDynamicOgcController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/OldDynamicOgcController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/RestrictedWMSController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/RestrictedWMSController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/UrlShortenerController.java b/geoportal_1/src/main/java/org/opengeoportal/proxy/controllers/UrlShortenerController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/CustomAuthenticationFilter.java b/geoportal_1/src/main/java/org/opengeoportal/security/CustomAuthenticationFilter.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/FormLoginService.java b/geoportal_1/src/main/java/org/opengeoportal/security/FormLoginService.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/IframeLoginController.java b/geoportal_1/src/main/java/org/opengeoportal/security/IframeLoginController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/LayerPermissionEvaluator.java b/geoportal_1/src/main/java/org/opengeoportal/security/LayerPermissionEvaluator.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/LoginController.java b/geoportal_1/src/main/java/org/opengeoportal/security/LoginController.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/LoginService.java b/geoportal_1/src/main/java/org/opengeoportal/security/LoginService.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/LoginStatus.java b/geoportal_1/src/main/java/org/opengeoportal/security/LoginStatus.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/OgpUserContext.java b/geoportal_1/src/main/java/org/opengeoportal/security/OgpUserContext.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/OgpUserContextImpl.java b/geoportal_1/src/main/java/org/opengeoportal/security/OgpUserContextImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/SimpleCasUserService.java b/geoportal_1/src/main/java/org/opengeoportal/security/SimpleCasUserService.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/security/SimpleLdapUserDetailsMapper.java b/geoportal_1/src/main/java/org/opengeoportal/security/SimpleLdapUserDetailsMapper.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/solr/SolrRecord.java b/geoportal_1/src/main/java/org/opengeoportal/solr/SolrRecord.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/CleanupDirectory.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/CleanupDirectory.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/CleanupDirectoryImpl.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/CleanupDirectoryImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/DirectoryRetriever.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/DirectoryRetriever.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/DirectoryRetrieverImpl.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/DirectoryRetrieverImpl.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/FilterServletOutputStream.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/FilterServletOutputStream.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/GenericResponseWrapper.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/GenericResponseWrapper.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/JsonpCallbackFilter.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/JsonpCallbackFilter.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/LinkShortenRequestGoogle.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/LinkShortenRequestGoogle.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/LinkShortenReturnGoogle.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/LinkShortenReturnGoogle.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/LocalSchemaLSResourceResolver.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/LocalSchemaLSResourceResolver.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/LocationFieldUtils.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/LocationFieldUtils.java old mode 100644 new mode 100755 index 2ad74d0..4afb832 --- a/geoportal_1/src/main/java/org/opengeoportal/utilities/LocationFieldUtils.java +++ b/geoportal_1/src/main/java/org/opengeoportal/utilities/LocationFieldUtils.java @@ -52,6 +52,19 @@ public static String getWmsUrl(String locationField) throws JsonParseException{ } + /** + * Get the value in the "ArcGISRest" field from the Location field + * + * @param locationField The Solr record Location field as a String + * @return the url for the wms server for the layer, if the record has been populated correctly + * @throws JsonParseException + */ + //Added by Allen Lin on Jan, 24, 2014 + public static String getArcGISRestUrl(String locationField) throws JsonParseException{ + return parseLocationFromKey(locationField, "ArcGISRest").get(0); + + } + /** * determines if the SolrRecord Location field contains a value for the key "wms" * @@ -67,6 +80,38 @@ public static Boolean hasWmsUrl(String locationField){ return false; } + /** + * determines if the SolrRecord Location field contains a value for the key "wfs" + * + * @param locationField The Solr record Location field as a String + * @return true if the SolrRecord Location field contains a key for "wms" + */ + // Added by Allen Lin on Jan, 24, 2014 + public static Boolean hasWfsUrl(String locationField){ + try { + return hasKey(locationField, "wfs"); + } catch (JsonParseException e) { + + } + return false; + } + + /** + * determines if the SolrRecord Location field contains a value for the key "wfs" + * + * @param locationField The Solr record Location field as a String + * @return true if the SolrRecord Location field contains a key for "wms" + */ + // Added by Allen Lin on Jan, 24, 2014 + public static Boolean hasArcGISRestUrl(String locationField){ + try { + return hasKey(locationField, "ArcGISRest"); + } catch (JsonParseException e) { + + } + return false; + } + /** * determines if the SolrRecord Location field contains a value for the key "serviceStart" * diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/OgpFileUtils.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/OgpFileUtils.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/OgpUtils.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/OgpUtils.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/OgpXmlUtils.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/OgpXmlUtils.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/QuickDownload.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/QuickDownload.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/QuickWfsDownload.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/QuickWfsDownload.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/UrlShortener.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/UrlShortener.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/UrlShortenerGoogle.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/UrlShortenerGoogle.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/ZipFilePackager.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/ZipFilePackager.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/http/AllTrustingCertPoolingHttpClient.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/http/AllTrustingCertPoolingHttpClient.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/http/AllTrustingTrustManager.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/http/AllTrustingTrustManager.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/http/AllTrustingTrustStrategy.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/http/AllTrustingTrustStrategy.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/http/HttpComponentsHttpRequester.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/http/HttpComponentsHttpRequester.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/http/HttpRequester.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/http/HttpRequester.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/http/OgpHttpClient.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/http/OgpHttpClient.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/http/PoolingHttpClient.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/http/PoolingHttpClient.java old mode 100644 new mode 100755 diff --git a/geoportal_1/src/main/java/org/opengeoportal/utilities/http/PreemptiveBasicAuthPoolingHttpClient.java b/geoportal_1/src/main/java/org/opengeoportal/utilities/http/PreemptiveBasicAuthPoolingHttpClient.java old mode 100644 new mode 100755