Package com.esri.gpt.catalog.discovery

Examples of com.esri.gpt.catalog.discovery.DiscoveryQuery


   * @param context the operation context
   */
  public void setReturnables(OperationContext context) {
    QueryOptions qOptions = context.getRequestOptions().getQueryOptions();
    CoreQueryables queryables = this.queryables;
    DiscoveryQuery query = this.getDiscoveryQuery();
    String elementSetType = qOptions.getElementSetType();
    if (elementSetType == null) {
     
      boolean isDublinCore = qOptions.isDublinCoreResponse();
      StringSet elementNames = qOptions.getElementNames();
      boolean hasElementNames = (elementNames != null) && (elementNames.size() > 0);
      if (isDublinCore && hasElementNames) {
        AliasedDiscoverables aliased = this.queryables.getAllAliased();
        query.setReturnables(new Discoverables());
        for (String elementName: elementNames) {
          Discoverable discoverable = aliased.get(elementName);
          if (discoverable != null) {
            query.getReturnables().add(discoverable);
          }
        }
      } else {
        qOptions.setElementSetType(CswConstants.ElementSetType_Summary);
        query.setReturnables(queryables.getSummary());
      }
     
    } else {
      if (elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Brief)) {
        query.setReturnables(queryables.getBrief());
      } else if (elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Summary)) {
        query.setReturnables(queryables.getSummary());
      } else if (elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Full)) {
        query.setReturnables(queryables.getFull());
      } else {
        query.setReturnables(queryables.getSummary());
      }
    }
  }
View Full Code Here


    throws Exception {
   
    // determine the record element's namespace URI, namespace prefix,
    // local name and qualified name
    QueryOptions qOptions = context.getRequestOptions().getQueryOptions();
    DiscoveryQuery query = this.getDiscoveryContext().getDiscoveryQuery();
    boolean isDublinCore = qOptions.isDublinCoreResponse();
   
    String elementSetType = Val.chkStr(qOptions.getElementSetType());
    String outputSchema = Val.chkStr(qOptions.getOutputSchema());
    StringSet elementSetTypeNames = qOptions.getElementSetTypeNames();
    boolean isBrief = elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Brief);
    boolean isSummary = elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Summary);
    boolean isFull = elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Full);
   
    // Dublin Core based responses
    if (isDublinCore) {
      OperationResponse opResponse = context.getOperationResponse();
      Document responseDom = opResponse.getResponseDom();
      String recNamespacePfx = "csw";
      String recNamespaceUri = CswNamespaces.URI_CSW;
      String recLocalName = "Record";
      StringSet elementNames = qOptions.getElementNames();
      boolean hasElementNames = (elementNames != null) && (elementNames.size() > 0);
      if (!hasElementNames) {
        if (isBrief) {
          recLocalName = "BriefRecord";
        } else if (isSummary) {
          recLocalName = "SummaryRecord";
        }
      }
      String recQName = recNamespacePfx+":"+recLocalName;
     
      // append each record
      DiscoveredRecords records = query.getResult().getRecords();
      for (DiscoveredRecord record: records) {
        Element elRecord = responseDom.createElementNS(recNamespaceUri,recQName);
        for (Returnable returnable: record.getFields()) {
          this.appendDiscoveredField(context,elRecord,returnable);
        }
        parent.appendChild(elRecord);
      }
   
    // non Dublin Core based responses
    } else {
     
      IOriginalXmlProvider oxp = context.getProviderFactory().makeOriginalXmlProvider(context);
      DiscoveredRecords records = query.getResult().getRecords();
      for (DiscoveredRecord record: records) {
        String responseXml = Val.chkStr(record.getResponseXml());
        if (responseXml.length() > 0) {
          Document dom = DomUtil.makeDomFromString(responseXml,true);
          NodeList nl = dom.getChildNodes();
View Full Code Here

  protected void appendSearchResultsElement(OperationContext context, Element parent)
    throws Exception{
   
    // determine records counts
    QueryOptions qOptions = context.getRequestOptions().getQueryOptions();
    DiscoveryQuery query = this.getDiscoveryContext().getDiscoveryQuery();
    OperationResponse opResponse = context.getOperationResponse();
    Document responseDom = opResponse.getResponseDom();
    DiscoveryResult result = query.getResult();
    int numberOfRecordsMatched = result.getNumberOfHits();
    int numberOfRecordsReturned = 0;
    int nextRecord = 0;
    String rtname = qOptions.getResultType();
    boolean isHits = rtname.equalsIgnoreCase(CswConstants.ResultType_Hits);
    if (isHits || (query.getFilter().getMaxRecords() <= 0)) {
      if (numberOfRecordsMatched > 0) {
        nextRecord = 1;
      }
    } else {
      numberOfRecordsReturned = result.getRecords().size();
      if (numberOfRecordsReturned > 0) {
        if (numberOfRecordsReturned < numberOfRecordsMatched) {
          nextRecord = query.getFilter().getStartRecord() + numberOfRecordsReturned;
          if (nextRecord > numberOfRecordsMatched) nextRecord = 0;
        }
      }
    }
     
View Full Code Here

  public void parseFilter(OperationContext context, Node filterNode, XPath xpath)
    throws OwsException, XPathExpressionException {
   
    // initialize the discovery filter
    QueryOptions qOptions = context.getRequestOptions().getQueryOptions();
    DiscoveryQuery query = this.getDiscoveryContext().getDiscoveryQuery();
    DiscoveryFilter filter = query.getFilter();
    filter.setRootClause(null);
    filter.setStartRecord(qOptions.getStartRecord());
    if (qOptions.getResultType().equals(CswConstants.ResultType_Hits)) {
      filter.setMaxRecords(0);
    } else {
View Full Code Here

  public void parseSortBy(OperationContext context, Node sortByNode, XPath xpath)
    throws OwsException, XPathExpressionException {
   
    // parse the sort option
    LOGGER.finer("Parsing sort by for "+sortByNode.getNodeName());
    DiscoveryQuery query = this.getDiscoveryContext().getDiscoveryQuery();
    Sortables sortables = new Sortables();
    NodeList nlProps = null;
    if (sortByNode != null) {
      nlProps = (NodeList)xpath.evaluate("ogc:SortProperty",sortByNode,XPathConstants.NODESET);
    }
    if ((nlProps != null) && (nlProps.getLength() > 0)) {
      for (int i=0; i<nlProps.getLength(); i++) {
        Sortable sortable = this.parsePropertyName(nlProps.item(i),xpath).asSortable();
        Node ndDir = (Node)xpath.evaluate("ogc:SortOrder",nlProps.item(i),XPathConstants.NODE);
        if (ndDir != null) {
          String sSortDir = ndDir.getTextContent();
          try {
            LOGGER.finer("Setting sort direction:"+sSortDir);
            sortable.setDirection(Sortable.SortDirection.from(sSortDir));
          } catch (IllegalArgumentException e) {
            String msg = "This parameter value is not supported: "+sSortDir;
            throw new OwsException(OwsException.OWSCODE_InvalidParameterValue,"SortOrder",msg);
          }
        }
        sortables.add(sortable);
      }
    }
    if (sortables.size() > 0) {
      query.setSortables(sortables);
    }
  }
View Full Code Here

  public void evaluateIdQuery(OperationContext context, String[] ids)
    throws Exception {
   
    // initialize
    QueryOptions qOptions = context.getRequestOptions().getQueryOptions();
    DiscoveryQuery query = this.getDiscoveryContext().getDiscoveryQuery();
   
    // the outputSchema may have to be used to filter the query
    // response generator is
    //   outputSchema+ElementSetName+ElementSetName@typeNames+Query@typeNames based
    /*
    String elementSetType = Val.chkStr(qOptions.getElementSetType());
    String outputSchema = Val.chkStr(qOptions.getOutputSchema());
    StringSet elementSetTypeNames = qOptions.getElementSetTypeNames();
    boolean isBrief = elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Brief);
    boolean isSummary = elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Summary);
    boolean isFull = elementSetType.equalsIgnoreCase(CswConstants.ElementSetType_Full);
    */
   
    // ensure that there are IDs to query
    String locator = "Id";
    if (ids == null) {
      String msg = "The Id parameter was missing.";
      throw new OwsException(OwsException.OWSCODE_MissingParameterValue,locator,msg);
    } else if (ids.length == 0) {
      String msg = "No Valid IDs were supplied.";
      throw new OwsException(OwsException.OWSCODE_InvalidParameterValue,locator,msg);
    }
     
    // determine the queryables
   
    // determine the discoverable
    Discoverable discoverable = this.getDiscoveryContext().findDiscoverable("Id");
    if (discoverable == null) {
      String msg = "The Id queryable is not supported.";
      throw new OwsException(OwsException.OWSCODE_InvalidParameterValue,locator,msg);
    }
   
    // build the discovery filter
    query.getFilter().setRootClause(new LogicalClause.LogicalOr());
    for (String id: ids) {
      id = Val.chkStr(id);
      if (id.length() == 0) {
        String msg = "A supplied ID was empty.";
        throw new OwsException(OwsException.OWSCODE_InvalidParameterValue,locator,msg);
      } else {
        PropertyClause propertyClause = new PropertyClause.PropertyIsEqualTo();
        propertyClause.setTarget(discoverable);
        propertyClause.setLiteral(id);
        query.getFilter().getRootClause().getClauses().add(propertyClause);
      }
    }
    int nIds = query.getFilter().getRootClause().getClauses().size();
    qOptions.setStartRecord(1);
    qOptions.setMaxRecords(nIds);
   
    // sdi.suite SmartEditor
    if ((nIds == 1) && !qOptions.isDublinCoreResponse()) {
      String schemaName = Val.chkStr(qOptions.getSchemaFilter());
      if (schemaName.equalsIgnoreCase("http://www.isotc211.org/2005/gmd")) {
        TransactionOptions tOptions = context.getRequestOptions().getTransactionOptions();
        if ((tOptions.getPublicationMethod() != null) && (tOptions.getPublicationMethod().length() > 0)) {
          if (tOptions.getPublicationMethod().equals("seditor")) {
            OriginalXmlProvider oxp = new OriginalXmlProvider();
            String origXml = oxp.provideOriginalXml(context,ids[0]);
            if ((origXml != null) && (origXml.length() > 0)) {
              DiscoveredRecord record = new DiscoveredRecord();
              record.setResponseXml(origXml);
              query.getResult().setNumberOfHits(1);
              query.getResult().getRecords().add(record);
              return;
            }
          }
        }
      }
View Full Code Here

   */
  public void evaluateQuery(OperationContext context) throws Exception {
   
    // initialize
    QueryOptions qOptions = context.getRequestOptions().getQueryOptions();
    DiscoveryQuery query = this.getDiscoveryContext().getDiscoveryQuery();
    DiscoveryFilter filter = query.getFilter();
    filter.setStartRecord(qOptions.getStartRecord());
    String resultType = Val.chkStr(qOptions.getResultType());
    if (resultType.equalsIgnoreCase(CswConstants.ResultType_Hits)) {
      filter.setMaxRecords(0);
    } else {
      filter.setMaxRecords(qOptions.getMaxRecords());
    }
    filter.setMaxRecords(qOptions.getMaxRecords());
    this.getDiscoveryContext().setReturnables(context);
    context.getRequestContext().getObjectMap().put(
        "com.esri.gpt.server.csw.provider.components.QueryOptions",qOptions);
   
    // evaluate
    LOGGER.finer("Executing discovery query:\n"+query.toString());
    DiscoveryQueryAdapter dqa =
      context.getRequestContext().getCatalogConfiguration().newDiscoveryQueryAdapter();
    dqa.execute(context.getRequestContext(),query);
    LOGGER.finer("Discovery query result:\n"+query.getResult().toString());
  }
View Full Code Here

TOP

Related Classes of com.esri.gpt.catalog.discovery.DiscoveryQuery

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.