Package org.geoserver.wfs.request

Examples of org.geoserver.wfs.request.GetFeatureRequest


        return DISPOSITION_ATTACH;
    }

    @Override
    public String getAttachmentFileName(Object value, Operation operation) {
        GetFeatureRequest req = GetFeatureRequest.adapt(operation.getParameters()[0]);

        return Joiner.on("_").join(Iterables.transform(req.getQueries(), new Function<Query,String>() {
            @Override
            public String apply(Query input) {
                return input.getTypeNames().get(0).getLocalPart();
            }
        })) + "." + EXTENSION;
View Full Code Here


        return null;
    }

    private TransformInfo locateTransformation(FeatureCollectionResponse collections,
            Operation operation) throws IOException {
        GetFeatureRequest req = GetFeatureRequest.adapt(operation.getParameters()[0]);
        String outputFormat = req.getOutputFormat();

        // locate the transformation, and make sure it's the same for all feature types
        Set<FeatureType> featureTypes = getFeatureTypes(collections);
        TransformInfo result = null;
        FeatureType reference = null;
View Full Code Here

    public String getAttachmentFileName(Object value, Operation operation) {
        return getDbFileName(operation) + ".zip";
    }

    String getDbFileName(Operation operation) {
        GetFeatureRequest request = GetFeatureRequest.adapt(operation.getParameters()[0]);

        //check format options
        String outputFileName = (String) request.getFormatOptions().get("FILENAME");
        if (outputFileName == null) {
            outputFileName = request.getQueries().get(0).getTypeNames().get(0).getLocalPart() + ".db";
        }

        return outputFileName;
    }
View Full Code Here

        if (kvp.containsKey("featureVersion")) {
            querySet(eObject, "featureVersion",
                Collections.singletonList((String) kvp.get("featureVersion")));
        }
       
        GetFeatureRequest req = GetFeatureRequest.adapt(request);
        if(kvp.containsKey("format_options")) {
            req.getFormatOptions().putAll((Map) kvp.get("format_options"));
        }
       
        // sql view params
        if(kvp.containsKey("viewParams")) {
           
            if(req.getViewParams() == null) {
                req.setViewParams(new ArrayList<Map<String,String>>());
            }

            // fan out over all layers if necessary
            List<Map<String, String>> viewParams = (List<Map<String, String>>) kvp.get("viewParams");
            if(viewParams.size() > 0) {               
                int layerCount = req.getQueries().size();

                // if we have just one replicate over all layers
                if(viewParams.size() == 1 && layerCount > 1) {
                    List<Map<String, String>> replacement = new ArrayList<Map<String,String>>();
                    for (int i = 0; i < layerCount; i++) {
                        replacement.add(viewParams.get(0));
                    }
                    viewParams = replacement;
                } else if(viewParams.size() != layerCount) {
                    String msg = layerCount + " feature types requested, but found " + viewParams.size()
                   + " view params specified. ";
                    throw new WFSException(eObject, msg, getClass().getName());
                }
            }

            req.setViewParams(viewParams);
        }

        return request;
    }
View Full Code Here

        //no values specified, do nothing
        if (values == null) {
            return;
        }

        GetFeatureRequest req = GetFeatureRequest.adapt(request);
       
        //handle the name differences in property names between 1.1 and 2.0
        if (req instanceof GetFeatureRequest.WFS20) {
            if ("typeName".equals(property)) {
                property = "typeNames";
            }
            if ("propertyName".equals(property)) {
                property = "abstractProjectionClause";
            }
        }
       
        List query = req.getAdaptedQueries();
       
        int m = values.size();
        int n = query.size();

        if ((m == 1) && (n > 1)) {
            //apply single value to all queries
            EMFUtils.set(query, property, values.get(0));

            return;
        }

        //WfsFactory wfsFactory = (WfsFactory) getFactory();
        //match up sizes
        if (m > n) {
            if (n == 0) {
                //make same size, with empty objects
                for (int i = 0; i < m; i++) {
                    query.add(req.createQuery().getAdaptee());
                }
            } else if (n == 1) {
                //clone single object up to
                EObject q = (EObject) query.get(0);

                for (int i = 1; i < m; i++) {
                    query.add(EMFUtils.clone(q, req.getFactory()));
                }

                return;
            } else {
                //illegal
View Full Code Here

        EMFUtils.set(query, property, values);
    }
   
    protected void buildStoredQueries(EObject request, List<URI> storedQueryIds, Map kvp) {
        GetFeatureRequest req = GetFeatureRequest.adapt(request);
        req.getAdaptedQueries();
       
        if (!(req instanceof GetFeatureRequest.WFS20)) {
            throw new WFSException(req, "Stored queries only supported in WFS 2.0+");
        }

        StoredQueryProvider sqp = new StoredQueryProvider(catalog);
        for (URI storedQueryId : storedQueryIds) {
            StoredQuery sq = sqp.getStoredQuery(storedQueryId.toString());
            if (sq == null) {
                throw new WFSException(req, "No such stored query: " + storedQueryId);
            }
   
            //JD: since stored queries are 2.0 only we will create 2.0 model objects directly... once
            // the next version of wfs comes out (and if they keep stored queries around) we will have
            // to abstract stored query away with a request object adapter
            Wfs20Factory factory = (Wfs20Factory) req.getFactory();
            StoredQueryType storedQuery = factory.createStoredQueryType();
            storedQuery.setId(storedQueryId.toString());
           
            //look for parameters in the kvp map
            for (ParameterExpressionType p : sq.getQuery().getParameter()) {
                if (kvp.containsKey(p.getName())) {
                    ParameterType param = factory.createParameterType();
                    param.setName(p.getName());
                    param.setValue(kvp.get(p.getName()).toString());
                    storedQuery.getParameter().add(param);
                }
            }
           
            req.getAdaptedQueries().add(storedQuery);
        }
    }
View Full Code Here

    public boolean canHandle(Operation operation) {
        //GetFeature operation?
        if ("GetFeature".equalsIgnoreCase(operation.getId())
                || "GetFeatureWithLock".equalsIgnoreCase(operation.getId())) {
            //also check that the resultType is "results"
            GetFeatureRequest req = GetFeatureRequest.adapt(operation.getParameters()[0]);
            if (req.isResultTypeResults()) {
                //call subclass hook
                return canHandleInternal(operation);
            }
        }
View Full Code Here

     *
     * @param operation
     * @return
     */
    public String getDxfExtension(Operation operation) {
        GetFeatureRequest request = GetFeatureRequest.adapt(operation
                .getParameters()[0]);

        String outputFormat = request.getOutputFormat().toUpperCase();
        // DXF
        if (outputFormat.equals("DXF"))
            return "dxf";
        // DXF-ZIP
        return "zip";
View Full Code Here

     * If the handle attribute is defined on the GetFeature tag it
     * will be used, else the name is obtained concatenating layer names
     * with underscore as a separator (up to a maximum name length).
     */
    private String getFileName(Operation operation) {
        GetFeatureRequest request = GetFeatureRequest.adapt(operation
                .getParameters()[0]);
   
        if (request.getHandle() != null) {
            LOGGER.log(Level.FINE,
                    "Using handle for file name: " + request.getHandle());
            return request.getHandle();
        }
   
        List<String> names = new ArrayList<String>();
        for (Query query : request.getQueries()) {
            addLayerNames(names, query, false);
        }
        String layerNames = StringUtils.join(names.toArray(), '_');
        LOGGER.log(Level.FINE, "Using layer names for file name: " + layerNames);
        if (layerNames.length() > 20) {
View Full Code Here

            ZipEntry entry = new ZipEntry(getFileName(operation) + ".dxf");
            zipStream.putNextEntry(entry);
            w = new BufferedWriter(new OutputStreamWriter(zipStream));
        }
        // extract format_options (GET mode)
        GetFeatureRequest gft = GetFeatureRequest.adapt(operation.getParameters()[0]);
        String version = (String) gft.getFormatOptions().get("VERSION");
        String blocks = (String) gft.getFormatOptions().get("ASBLOCKS");
        String colors = (String) gft.getFormatOptions().get("COLORS");
        String ltypes = (String) gft.getFormatOptions().get("LTYPES");
        String[] layers = null;
        if(gft.getFormatOptions().get("LAYERS") instanceof String) {
            layers = ((String) gft.getFormatOptions().get("LAYERS")).split(",");
        } else if(gft.getFormatOptions().get("LAYERS") instanceof List) {
            layers = (String[]) ((List) gft.getFormatOptions().get("LAYERS")).toArray(new String[0]);
        }
        if(layers != null) {
            for(int count = 0; count < layers.length; count++) {
                layers[count] = layers[count].toUpperCase();
            }
        }
        String writeAttributes = (String) gft.getFormatOptions().get("WITHATTRIBUTES");
        LOGGER.log(Level.FINE,"Format options: "+version+"; "+blocks+"; "+colors+"; "+ltypes+"; "+StringUtils.join(layers, ",")+"; "+writeAttributes);
        // get a suitable DXFWriter, for the requested version (null -> get any writer)
        DXFWriter dxfWriter = DXFWriterFinder.getWriter(version, w);
       
        if (dxfWriter != null) {
            LOGGER.log(Level.INFO,"DXFWriter: "+dxfWriter.getDescription());

            if(layers == null) {
                layers=getLayerNames(gft.getQueries());
            }
            LOGGER.log(Level.FINE,"Layers names: "+StringUtils.join(layers,","));
            dxfWriter.setOption("layers", layers);
            if(writeAttributes != null) {
                dxfWriter.setOption("writeattributes", writeAttributes.toLowerCase().equals("true"));
View Full Code Here

TOP

Related Classes of org.geoserver.wfs.request.GetFeatureRequest

Copyright © 2018 www.massapicom. 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.