Example usage for org.apache.commons.collections MultiHashMap values

List of usage examples for org.apache.commons.collections MultiHashMap values

Introduction

In this page you can find the example usage for org.apache.commons.collections MultiHashMap values.

Prototype

Collection values

To view the source code for org.apache.commons.collections MultiHashMap values.

Click Source Link

Usage

From source file:org.geoserver.wfs.xml.GML2OutputFormat2.java

protected void write(FeatureCollectionResponse results, OutputStream output, Operation getFeature)
        throws ServiceException, IOException {

    //declare wfs schema location
    GetFeatureRequest gft = GetFeatureRequest.adapt(getFeature.getParameters()[0]);

    List featureCollections = results.getFeature();

    //round up the info objects for each feature collection
    MultiHashMap ns2metas = new MultiHashMap();

    for (Iterator fc = featureCollections.iterator(); fc.hasNext();) {
        SimpleFeatureCollection features = (SimpleFeatureCollection) fc.next();
        SimpleFeatureType featureType = features.getSchema();

        //load the metadata for the feature type
        String namespaceURI = featureType.getName().getNamespaceURI();
        FeatureTypeInfo meta = catalog.getFeatureTypeByName(namespaceURI, featureType.getTypeName());
        if (meta == null)
            throw new WFSException(gft, "Could not find feature type " + namespaceURI + ":"
                    + featureType.getTypeName() + " in the GeoServer catalog");

        NamespaceInfo ns = catalog.getNamespaceByURI(namespaceURI);
        ns2metas.put(ns, meta);/* ww w  .  ja  v  a  2 s .co  m*/
    }

    Collection<FeatureTypeInfo> featureTypes = ns2metas.values();

    //create the encoder
    ApplicationSchemaXSD xsd = new ApplicationSchemaXSD(null, catalog, gft.getBaseUrl(),
            org.geotools.wfs.v1_0.WFS.getInstance(), featureTypes);
    Configuration configuration = new ApplicationSchemaConfiguration(xsd,
            new org.geotools.wfs.v1_0.WFSConfiguration());

    Encoder encoder = new Encoder(configuration);
    //encoder.setEncoding(wfs.getCharSet());

    encoder.setSchemaLocation(org.geoserver.wfs.xml.v1_1_0.WFS.NAMESPACE,
            buildSchemaURL(gft.getBaseUrl(), "wfs/1.0.0/WFS-basic.xsd"));

    //declare application schema namespaces
    Map<String, String> params = params("service", "WFS", "version", "1.0.0", "request", "DescribeFeatureType");
    for (Iterator i = ns2metas.entrySet().iterator(); i.hasNext();) {
        Map.Entry entry = (Map.Entry) i.next();

        NamespaceInfo ns = (NamespaceInfo) entry.getKey();
        String namespaceURI = ns.getURI();

        Collection metas = (Collection) entry.getValue();

        StringBuffer typeNames = new StringBuffer();

        for (Iterator m = metas.iterator(); m.hasNext();) {
            FeatureTypeInfo meta = (FeatureTypeInfo) m.next();
            typeNames.append(meta.getPrefixedName());

            if (m.hasNext()) {
                typeNames.append(",");
            }
        }

        //set the schema location
        params.put("typeName", typeNames.toString());
        encoder.setSchemaLocation(namespaceURI, buildURL(gft.getBaseUrl(), "wfs", params, URLType.RESOURCE));
    }

    encoder.encode(results.getAdaptee(), org.geotools.wfs.v1_0.WFS.FeatureCollection, output);
}