@Override public List<QName> getTypeNames() { return delegate.getTypeNames(); }
public URI getSrsName() { return eGet(adaptee, "srsName", URI.class); }
public AliasedQuery(Query query, List<String> originalAliases, List<String> aliases) { super(null); this.delegate = query; this.aliases = aliases; if (originalAliases != null && !originalAliases.isEmpty()) { Map<String, String> renameMap = buildRenameMap(originalAliases, aliases); this.filter = (Filter) query.getFilter().accept(new AliasRenameVisitor(renameMap), null); if (query.getPropertyNames() != null) { this.propertyNames = new ArrayList<>(); for (String name : query.getPropertyNames()) { this.propertyNames.add(rename(renameMap, name)); } } } else { // CITE tests hack, was is a self join query with no aliases? List<QName> typeNames = query.getTypeNames(); if (typeNames.size() == 2 && new HashSet<>(typeNames).size() == 1) { this.filter = (Filter) query.getFilter().accept(new SelfJoinRenameVisitor(aliases), null); } else { this.filter = query.getFilter(); } this.propertyNames = query.getPropertyNames(); } }
static void expandTypeNames( RequestObject request, List<Query> queries, boolean getFeatureById, Catalog catalog) { // do a check for FeatureId filters in the queries and update the type names for the // queries accordingly for (Query q : queries) { if (!q.getTypeNames().isEmpty()) continue; if (q.getFilter() != null) { TypeNameExtractingVisitor v = new TypeNameExtractingVisitor(catalog); q.getFilter().accept(v, null); q.getTypeNames().addAll(v.getTypeNames()); } if (q.getTypeNames().isEmpty()) { if (getFeatureById) { // by spec, a 404 should be returned in this case throw new WFSException( request, "Could not find feature with specified id", WFSException.NOT_FOUND); } else { String msg = "No feature types specified"; throw new WFSException(request, msg, ServiceException.INVALID_PARAMETER_VALUE); } } } }
lock.setFilter(query.getFilter()); lock.setHandle(query.getHandle()); List<QName> typeNames = query.getTypeNames(); lock.setTypeName(typeNames.get(0)); lockRequest.addLock(lock); Filter lockedFeatureFilter = toFeatureIdFilter(response.getLockedFeatures()); for (Query query : queries) { Filter filter = query.getFilter(); if (filter == null || filter == Filter.INCLUDE) { query.setFilter(lockedFeatureFilter); } else { Filter joined = Predicates.and(filter, lockedFeatureFilter); query.setFilter(joined); if (!query.getAliases().isEmpty()) { if (query.getAliases().size() != query.getTypeNames().size()) { throw new WFSException( request, "Query specifies %d type names and %d " + "aliases, must be equal", query.getTypeNames().size(), query.getAliases().size())); for (QName typeName : query.getTypeNames()) { metas.add(featureTypeInfo(typeName, request));
typeNames.append("("); for (QName qName : q.getTypeNames()) { typeNames .append(qName.getPrefix()) propertyName.append("("); for (String pName : q.getPropertyNames()) { propertyName.append(pName).append(","); aliases.append("("); for (String alias : q.getAliases()) { aliases.append(alias).append(","); Filter f = q.getFilter(); Encoder e = new Encoder(new FESConfiguration()); e.setOmitXMLDeclaration(true); filter.append(e.encodeAsString(q.getFilter(), FES.Filter)); } catch (Exception e) { throw new RuntimeException("Unable to encode filter " + f, e);
maxFeatures, props, query.getHandle()); if (primaryAlias != null) { dataQuery.setAlias(primaryAlias); URI srsName = query.getSrsName(); if (srsName != null) { try { List<SortBy> sortBy = query.getSortBy(); if (sortBy != null) { dataQuery.setSortBy(sortBy.toArray(new SortBy[sortBy.size()])); String featureVersion = query.getFeatureVersion(); if (featureVersion != null) { dataQuery.setVersion(featureVersion); List<XlinkPropertyNameType> xlinkProperties = query.getXlinkPropertyNames(); if (!xlinkProperties.isEmpty()) { for (Iterator x = xlinkProperties.iterator(); x.hasNext(); ) {
if (q.getSrsName() != null) { kvp.put("SRSNAME", q.getSrsName().toString()); StringBuilder propertyName = !q.getPropertyNames().isEmpty() ? new StringBuilder() : null; StringBuilder aliases = !q.getAliases().isEmpty() ? new StringBuilder() : null; StringBuilder filter = q.getFilter() != null && q.getFilter() != Filter.INCLUDE ? new StringBuilder() : null;
propNames.get(0).addAll(query.getPropertyNames()); return propNames; for (String propName : query.getPropertyNames()) { for (int j = 0; j < query.getAliases().size(); j++) { String alias = query.getAliases().get(j); if (propName.startsWith(alias + "/")) { propNames.get(j).add(propName.substring((alias + "/").length()));
List<String> originalAliases = query.getAliases(); boolean replaced = false; if (query.getAliases() != null && !query.getAliases().isEmpty()) { aliases = new ArrayList<>(query.getAliases()); } else { replaced = true;
query.add(req.createQuery().getAdaptee());
private void addLayerNames(List<String> names, Query query, boolean toUpper) { for (QName name : query.getTypeNames()) { String localName = name.getLocalPart(); if (toUpper) { localName = localName.toUpperCase(); } names.add(localName); } }
public String getFeatureVersion() { return eGet(adaptee, "featureVersion", String.class); }
@Override public String getAttachmentFileName(Object value, Operation operation) { GetFeatureRequest request = GetFeatureRequest.adapt(operation.getParameters()[0]); String outputFileName = request.getQueries().get(0).getTypeNames().get(0).getLocalPart(); return outputFileName + ".kml"; }
@Override public String getAttachmentFileName(Object value, Operation operation) { GetFeatureRequest request = GetFeatureRequest.adapt(operation.getParameters()[0]); String outputFileName = request.getQueries().get(0).getTypeNames().get(0).getLocalPart(); return outputFileName + ".csv"; }
@Override public String getAttachmentFileName(Object value, Operation operation) { GetFeatureRequest request = GetFeatureRequest.adapt(operation.getParameters()[0]); String outputFileName = request.getQueries().get(0).getTypeNames().get(0).getLocalPart(); return outputFileName + "." + fileExtension; }
private FeatureTypeInfo getFeatureType(GetFeatureRequest request) { // a WFS3 always has a collection reference, so one query Query query = request.getQueries().get(0); QName typeName = query.getTypeNames().get(0); return gs.getCatalog() .getFeatureTypeByName( new NameImpl(typeName.getNamespaceURI(), typeName.getLocalPart())); }
protected void handleBBOX(Map kvp, EObject eObject) throws Exception { // set filter from bbox Filter bboxFilter = bboxFilter(kvp.get("bbox")); List<Query> queries = getQueries(eObject); List filters = new ArrayList(); for (Iterator<Query> it = queries.iterator(); it.hasNext(); ) { Query q = it.next(); List typeName = q.getTypeNames(); Filter filter; if (typeName.size() > 1) { // TODO: not sure what to do here, just going to and them up List and = new ArrayList(typeName.size()); for (Iterator t = typeName.iterator(); t.hasNext(); ) { and.add(bboxFilter); } filter = filterFactory.and(and); } else { filter = bboxFilter; } filters.add(filter); } querySet(eObject, "filter", filters); }
protected void handleBBOX(Map kvp, EObject eObject) throws Exception { // set filter from bbox Envelope bbox = (Envelope) kvp.get("bbox"); List<Query> queries = getQueries(eObject); List filters = new ArrayList(); for (Iterator<Query> it = queries.iterator(); it.hasNext(); ) { Query q = it.next(); List typeName = q.getTypeNames(); Filter filter; if (typeName.size() > 1) { // TODO: not sure what to do here, just going to and them up List and = new ArrayList(typeName.size()); for (Iterator t = typeName.iterator(); t.hasNext(); ) { and.add(bboxFilter(bbox)); } filter = filterFactory.and(and); } else { filter = bboxFilter(bbox); } filters.add(filter); } querySet(eObject, "filter", filters); }
@Override public String getAttachmentFileName(Object value, Operation operation) { GetFeatureRequest request = GetFeatureRequest.adapt(operation.getParameters()[0]); String outputFormat = request.getOutputFormat(); Format format = formats.get(outputFormat); List<Query> queries = request.getQueries(); if (format == null) { throw new WFSException("Unknown output format " + outputFormat); } else { String outputFileName = queries.get(0).getTypeNames().get(0).getLocalPart(); if (!format.isSingleFile() || queries.size() > 1) { return outputFileName + ".zip"; } else { return outputFileName + format.getFileExtension(); } } }