Author: ssanbern
Date: 2007-06-20 17:02:38 +0200 (Wed, 20 Jun 2007)
New Revision: 5368

Added:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/HittaWeatherSearchCommand.java
Log:
add hittaweather

Added: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/HittaWeatherSearchCommand.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/HittaWeatherSearchCommand.java
                               (rev 0)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/HittaWeatherSearchCommand.java
       2007-06-20 15:02:38 UTC (rev 5368)
@@ -0,0 +1,129 @@
+// Copyright (2007) Schibsted Søk AS
+package no.schibstedsok.searchportal.mode.command;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.rmi.RemoteException;
+import javax.xml.rpc.ServiceException;
+import org.apache.log4j.Logger;
+import 
se.hitta.www.HittaService.GetPlaceStreetDetailsResponseGetPlaceStreetDetailsResult;
+import se.hitta.www.HittaService.HittaServiceLocator;
+import se.hitta.www.HittaService.HittaServiceSoap;
+import no.schibstedsok.searchportal.mode.config.HittaWeatherCommandConfig;
+
+import no.schibstedsok.searchportal.query.token.TokenEvaluationEngine;
+import no.schibstedsok.searchportal.query.token.TokenPredicate;
+import no.schibstedsok.searchportal.result.BasicResultList;
+import no.schibstedsok.searchportal.result.ResultItem;
+import no.schibstedsok.searchportal.result.ResultList;
+
+public final class HittaWeatherSearchCommand extends 
AbstractWebServiceSearchCommand {
+
+    private static final Logger LOG = 
Logger.getLogger(HittaWeatherSearchCommand.class);
+
+    private static final String ERR_FAILED_HITTAMAP_SEARCH = "Failed Weather 
search command";
+
+    private static final String ERR_FAILED_ENCODE_HITTAWEATHER = "Failed to 
encode Weather search query";
+
+    public HittaWeatherSearchCommand(final Context cxt) {
+
+        super(cxt);
+    }
+
+    @Override
+    public ResultList<? extends ResultItem> execute() {
+
+       HittaWeatherCommandConfig bsc = (HittaWeatherCommandConfig) 
context.getSearchConfiguration();
+
+               final TokenEvaluationEngine engine = getEngine();
+               
+               final boolean isGEOGLOBAL = engine.evaluateQuery(
+                               TokenPredicate.GEOGLOBAL, getQuery());
+               final boolean isGEOLOCAL = engine.evaluateQuery(
+                               TokenPredicate.GEOLOCAL, getQuery());
+
+               final ResultList<ResultItem> result = new 
BasicResultList<ResultItem>();
+               if (isGEOGLOBAL) {
+                       try {
+                               HittaServiceLocator locator = new 
HittaServiceLocator();
+                               HittaServiceSoap service = 
locator.getHittaServiceSoap();
+                               String key = 
"f7964f9f-c798-47b0-9705-29737dabecef";
+
+                               String transQuery = getTransformedQuery();
+                               String encTransQuery = 
URLEncoder.encode(transQuery,
+                                               "iso-8859-1");
+
+                               int traff = 
service.getPlaceStreetAmount(transQuery, key);
+
+                               if (traff == 1) {
+                                       
GetPlaceStreetDetailsResponseGetPlaceStreetDetailsResult gpsdr = new 
GetPlaceStreetDetailsResponseGetPlaceStreetDetailsResult();
+
+                                       // Hämtar koordinater för den stora 
kart visningen.
+                                       gpsdr = 
service.getPlaceStreetDetails(transQuery, key);
+                                       
org.apache.axis.message.MessageElement[] fields = gpsdr
+                                                       .get_any();
+                                       String respXML = 
fields[1].getAsString();
+
+                                       // org.w3c.dom.Document doc = 
fields[1].getAsDocument();
+
+                                       int beginIndex = respXML.indexOf("X=");
+                                       String x = respXML.substring(beginIndex 
+ 1);
+                                       int endIndex = x.indexOf('"', 3);
+                                       String xx = x.substring(2, endIndex);
+
+                                       int beginIndexy = respXML.indexOf("Y=");
+                                       String y = 
respXML.substring(beginIndexy + 1);
+                                       int endIndexy = y.indexOf('"', 3);
+                                       String yy = y.substring(2, endIndexy);
+
+                                       String hittaURL = 
"http://www.hitta.se/SearchCombi.aspx?SearchType=4&UCSB%3aWflWhite=1a1b&UCSB%3aWflPink=4a&UCSB%3aTextBoxWho=&UCSB%3aTextBoxWhere=";
+                                                       + encTransQuery;
+
+                                       String hittaBigMapURL 
="http://www.hitta.se/LargeMap.aspx?ShowSatellite=false&pointX=";
+                                       + yy
+                                       + "&pointY="
+                                       + xx
+                                       + "&cx="
+                                       + yy
+                                       + "&cy="
+                                       + xx
+                                       + "&z=3&name=" + encTransQuery;
+
+
+                                   result.addField("hittaURL", hittaURL);
+                                       result.addField("hittaBigMapURL", 
hittaBigMapURL);
+                                       result.addField("searchquery", 
transQuery);
+                                       result.setHitCount(1);
+                                       result.addField("searchtype", "one");
+
+                               } else if (traff > 1) {
+
+                                       String hittaURL = 
"http://www.hitta.se/SearchCombi.aspx?SearchType=4&UCSB%3aWflWhite=1a1b&UCSB%3aWflPink=4a&UCSB%3aTextBoxWho=&UCSB%3aTextBoxWhere=";
+                                                       + encTransQuery;
+                                       result.addField("hittaURL", hittaURL);
+                                       result.addField("searchquery", 
transQuery);
+                                       result.setHitCount(traff);
+                                       result.addField("searchtype", "many");
+                               } else {
+                                       result.setHitCount(0);
+                               }
+
+                       }
+
+                       catch (ServiceException ex) {
+                               LOG.error(ERR_FAILED_HITTAMAP_SEARCH, ex);
+                       } catch (RemoteException ex) {
+                               LOG.error(ERR_FAILED_HITTAMAP_SEARCH, ex);
+                       } catch (UnsupportedEncodingException usee) {
+
+                               LOG.error(ERR_FAILED_ENCODE_HITTAWEATHER, usee);
+                       } catch (Exception e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
+
+               }
+
+               return result;
+       }
+}

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to