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