package com.k_int.discover.search.action;

import org.apache.log4j.Logger;
import com.k_int.discover.sru.action.AbstractSearchAction;

public class FindALibrarySearchAction extends AbstractSearchAction{
  private static final long serialVersionUID = 1L;
  private static Logger log   = Logger.getLogger(FindALibrarySearchAction.class);
  
 
  private String location = "";
  
  // Variables for refining the search radius
  private DistanceMapper[] radiusList = { 	new DistanceMapper("5 miles", "5"),
											new DistanceMapper("10 miles", "10"),
											new DistanceMapper("25 miles", "25")};
  private String selectedRadius = null;
  
  
  public String getLocation() {
	  return this.location;
  }
  
  public void setLocation(String location) {
	  log.debug("Setting the location to " + location);
	  this.location = location;
  }
  
  public DistanceMapper[] getRadiusList() {
	  return this.radiusList;
  }
  
  public void setSelectedRadius(String radius) {
	  this.selectedRadius = radius;
  }
  
  public String internalExecute() throws Exception {
    String result = SUCCESS;
    
    log.debug("In the FindALibrarySearchAction internalExecute method");

    // Set up the search for libraries
    query = "institution_sector any \"Libraries\" AND institution_type adj \"Local/Regional government\" AND dcterms.isPartOf adj \"MLAInstitutions\"";

    // Add in the user specified postcode and a radius if there's a postcode
    if ( location != null && !"".equals(location.trim()) ) {
    	query += " AND location adj \"" + location.trim() + "\"";
        // Add in the search radius
        if ( selectedRadius != null && !"".equals(selectedRadius) ) {
        	query += "&radius=" + selectedRadius;
        }
        // Add in ordering by distance (in ascending order)
        query += "&sortBy=geo_distance/sort.ascending";
//        query += "&sortKeys=geo_distance,,1";

    } else {
    	// Just leave the location and radius out and return all libraries
    }
    
    
    log.debug("just set the query to : " + query);
    
    return result;
  }

  @Override
  protected void internalSetupPage() {
	// Don't need to do anything, so just return
  }
  
  public class DistanceMapper {
	  public String label = "";
	  public String kmDistance = "";
		
	  public DistanceMapper(String label, String kmDistance) {
		  this.label = label;
		  this.kmDistance = kmDistance;
	  }
		
	  public String getLabel() {
		  return this.label;
	  }
		
	  public String getKmDistance() {
		  return this.kmDistance;
	  }
  }

}