Package org.geoserver.wfsv.response.v1_1_0

Source Code of org.geoserver.wfsv.response.v1_1_0.VersionedXmlSchemaEncoder

package org.geoserver.wfsv.response.v1_1_0;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Collections;

import net.opengis.wfs.DescribeFeatureTypeType;

import org.eclipse.xsd.XSDSchema;
import org.eclipse.xsd.util.XSDResourceImpl;
import org.geoserver.catalog.Catalog;
import org.geoserver.config.GeoServer;
import org.geoserver.ows.Response;
import org.geoserver.ows.util.RequestUtils;
import org.geoserver.platform.GeoServerResourceLoader;
import org.geoserver.platform.Operation;
import org.geoserver.platform.ServiceException;
import org.geoserver.wfs.WFSInfo;
import org.geoserver.wfs.xml.FeatureTypeSchemaBuilder;
import org.geoserver.wfsv.VersionedDescribeResults;
import org.geoserver.wfsv.xml.v1_1_0.WFSVConfiguration;

public class VersionedXmlSchemaEncoder extends Response {
    /** wfs configuration */
    WFSInfo wfs;

    /** the catalog */
    Catalog catalog;

    WFSVConfiguration configuration;

    public VersionedXmlSchemaEncoder(GeoServer gs,WFSVConfiguration configuration) {
        super(VersionedDescribeResults.class, Collections
                .singleton("text/xml; subtype=gml/3.1.1"));
        this.wfs = gs.getService( WFSInfo.class );
        this.catalog = gs.getCatalog();
        this.configuration = configuration;
    }

    public String getMimeType(Object value, Operation operation)
            throws ServiceException {
        return "text/xml; subtype=gml/3.1.1";
    }

    public void write(Object value, OutputStream output,
            Operation describeFeatureType) throws IOException {
        VersionedDescribeResults results = (VersionedDescribeResults) value;

        // create the schema
        DescribeFeatureTypeType req = (DescribeFeatureTypeType) describeFeatureType
                .getParameters()[0];
        FeatureTypeSchemaBuilder builder = null;
        if (results.isVersioned()) {
            builder = new VersionedSchemaBuilder(wfs.getGeoServer(), configuration);
        } else {
            builder = new FeatureTypeSchemaBuilder.GML3(wfs.getGeoServer());
        }

        XSDSchema schema = builder.build(results.getFeatureTypeInfo(), req.getBaseUrl());

        // serialize
        schema.updateElement();
        XSDResourceImpl.serialize(output, schema.getElement());
    }

    public boolean canHandle(Operation operation) {
        return "DescribeVersionedFeatureType".equalsIgnoreCase(operation
                .getId())
                && operation.getService().getId().equalsIgnoreCase("wfsv");
    }

}
TOP

Related Classes of org.geoserver.wfsv.response.v1_1_0.VersionedXmlSchemaEncoder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.