Package org.OpenGeoPortal.Metadata

Source Code of org.OpenGeoPortal.Metadata.SolrLayerInfoRetriever

package org.OpenGeoPortal.Metadata;

import java.util.List;
import java.util.Set;

import org.OpenGeoPortal.Solr.SearchConfigRetriever;
import org.OpenGeoPortal.Solr.SolrClient;
import org.OpenGeoPortal.Solr.SolrRecord;
import org.OpenGeoPortal.Utilities.ParseJSONSolrLocationField;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.util.ClientUtils;
import org.codehaus.jackson.JsonParseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class SolrLayerInfoRetriever implements LayerInfoRetriever{
  private SearchConfigRetriever searchConfigRetriever;
  private SolrClient solrClient;
  final Logger logger = LoggerFactory.getLogger(this.getClass());

  public void setSolrClient(SolrClient solrClient) {
    this.solrClient = solrClient;
  }

  public void setSearchConfigRetriever(SearchConfigRetriever searchConfigRetriever) throws Exception{
    this.searchConfigRetriever = searchConfigRetriever;
  }
 
  public List<SolrRecord> fetchAllLayerInfo(Set<String> layerIds) throws SolrServerException {
    SolrServer server = solrClient.getSolrServer();
    String query = "";
    for (String layerId : layerIds){
      logger.debug(layerId);
      query += "LayerId:" + ClientUtils.escapeQueryChars(layerId.trim());
      query += " OR ";
    }
    if (query.length() > 0){
      query = query.substring(0, query.lastIndexOf(" OR "));
    }
        /*ModifiableSolrParams params = new ModifiableSolrParams();
        params.set("q", query);

            QueryResponse response = server.query(params);*/
    logger.debug("Solr query terms: " + query);
      SolrQuery queryObj = new SolrQuery();
      queryObj.setQuery(query);
      QueryResponse response = null;
      try {
        response = server.query(queryObj);
      } catch (Exception e){
        logger.error(e.getMessage());
      }
      //logger.info(response.getResults().get(0).getFieldValue("Name").toString());
      List<SolrRecord> results = response.getBeans(SolrRecord.class);

    return results;
  }

  /*@Override
  public String getWMSUrl(SolrRecord solrRecord) throws JsonParseException {
    if (hasProxy(solrRecord)){
      String institution = solrRecord.getInstitution();//layerInfo.get("Institution");
      String accessLevel = solrRecord.getAccess();//layerInfo.get("Access")
      try {
        String proxyUrl = this.searchConfigRetriever.getWmsProxy(institution, accessLevel);
        logger.info("Has proxy url: " + proxyUrl);
        return proxyUrl;
      } catch (Exception e) {
        // TODO Auto-generated catch block
        logger.error("Error getting proxy");
        e.printStackTrace();
        return null;
      }
    } else {
      return ParseJSONSolrLocationField.getWmsUrl(solrRecord.getLocation());
    }
  }*/

 
  @Override
  public SolrRecord getAllLayerInfo(String layerId) throws SolrServerException{
    String query = "LayerId:" + layerId.trim();
      SolrQuery queryObj = new SolrQuery();
      queryObj.setQuery( query );
    List<SolrRecord> results = solrClient.getSolrServer().query(queryObj).getBeans(SolrRecord.class);
    return results.get(0);
  }

  /*@Override
  public String getWFSUrl(SolrRecord solrRecord) throws JsonParseException {
    logger.info("Has proxy url: " + Boolean.toString(hasProxy(solrRecord)));
    if (hasProxy(solrRecord)){
      String institution = solrRecord.getInstitution();//layerInfo.get("Institution");
      String accessLevel = solrRecord.getAccess();//layerInfo.get("Access")
      try {
        return this.searchConfigRetriever.getWfsProxy(institution, accessLevel);
      } catch (Exception e) {
        // TODO Auto-generated catch block
        logger.error("Error getting proxy");
        e.printStackTrace();
        return null;
      }
    } else {
      return ParseJSONSolrLocationField.getWfsUrl(solrRecord.getLocation());
    }
  }*/

TOP

Related Classes of org.OpenGeoPortal.Metadata.SolrLayerInfoRetriever

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.