Package com.esri.gpt.server.csw.provider.local

Source Code of com.esri.gpt.server.csw.provider.local.DiscoveryContext

/* See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* Esri Inc. licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.esri.gpt.server.csw.provider.local;
import com.esri.gpt.catalog.discovery.AliasedDiscoverables;
import com.esri.gpt.catalog.discovery.Discoverable;
import com.esri.gpt.catalog.discovery.Discoverables;
import com.esri.gpt.catalog.discovery.DiscoveryQuery;
import com.esri.gpt.framework.collection.StringSet;
import com.esri.gpt.server.csw.provider.components.CswConstants;
import com.esri.gpt.server.csw.provider.components.OperationContext;
import com.esri.gpt.server.csw.provider.components.QueryOptions;

/**
* Provides a context for executing CSW operation against the local catalog.
*/
public class DiscoveryContext {
   
  /** instance variables ====================================================== */
  private DiscoveryQuery discoveryQuery = new DiscoveryQuery();
  private CoreQueryables queryables;
 
  /** constructors ============================================================ */
 
  /**
   * Constructs with a supplied operation context
   * @param context the operation context
   */
  public DiscoveryContext(OperationContext context) {
    super();
    this.queryables = new CoreQueryables(context.getRequestContext());
  }
 
  /** properties ============================================================== */
 
  /**
   * Gets the active discovery query.
   * @return the active discovery query
   */
  public DiscoveryQuery getDiscoveryQuery() {
    return this.discoveryQuery;
  }
 
  /** methods ================================================================= */
 
  /**
   * Finds the discoverable associated with a property name.
   * @param clientName the property name (or alias)
   * @return the discoverable (null if none was found);
   */
  public Discoverable findDiscoverable(String clientName) {
    return this.queryables.getAllAliased().get(clientName);
  }
 
  /**
   * Sets the returnables for the active discovery query.
   * @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());
      }
    }
  }

}
TOP

Related Classes of com.esri.gpt.server.csw.provider.local.DiscoveryContext

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.