Author: ssmalamb
Date: 2007-06-28 16:55:45 +0200 (Thu, 28 Jun 2007)
New Revision: 5462
Modified:
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
Log:
Code clean up
Modified:
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
===================================================================
---
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
2007-06-28 13:54:38 UTC (rev 5461)
+++
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
2007-06-28 14:55:45 UTC (rev 5462)
@@ -19,6 +19,7 @@
import java.util.TreeMap;
import java.util.TreeSet;
+import no.schibstedsok.searchportal.InfrastructureException;
import no.schibstedsok.searchportal.mode.config.VideoCommandConfig;
import no.schibstedsok.searchportal.result.BasicResultItem;
import no.schibstedsok.searchportal.result.BasicResultList;
@@ -44,9 +45,7 @@
public VideoSearchCommand(final Context cxt) {
super(cxt);
final VideoCommandConfig vcConfig = (VideoCommandConfig)
context.getSearchConfiguration();
-
searchType = vcConfig.getSearchType();
-
}
protected String createRequestURL() {
@@ -66,7 +65,7 @@
Start Prints results only from this position onwards.
Text The query text.
*/
- LOG.info("zz124: "+searchType);
+
String query = getTransformedQuery();
try {
query = URLEncoder.encode(query, "utf-8");
@@ -75,12 +74,20 @@
}
final String sortByString = this.getParameters().get("userSortBy") !=
null ? (String) this.getParameters().get("userSortBy") : "datetime";
final String videoSource = this.getParameters().get("videosource") !=
null ? (String) this.getParameters().get("videosource") : "";
- String biasDate = "0";
- if (sortByString.equals("standard")) {
- biasDate = "100";
- }
- //
http://usp1.blinkx.com/partnerapi/sesam/?searchtype=full&Anylanguage=true&Adultfilter=true&printfields=media_duration&BiasDate=100&text=pixies
- return
"/partnerapi/sesam/?searchtype="+searchType+"&Anylanguage=true&Adultfilter=true&channelhits=true&printfields=media_duration"+(videoSource.length()>0?"&databasematch="+videoSource.toLowerCase():"")+"&BiasDate="+biasDate+"&Start="+getCurrentOffset(1)+"&text="+query;
+ final String language = this.getParameters().get("language") != null ?
(String) this.getParameters().get("language") : "";
+ String biasDate = sortByString.equals("standard") ? "100" : "0"; //
default is normally datetime which is 0
+
+ // Sample url:
http://usp1.blinkx.com/partnerapi/sesam/?Anylanguage=true&Adultfilter=true&channelhits=true&printfields=media_duration&searchtype=enrichment&BiasDate=0&Start=1&text=pixies
+ // Please note that Schibsted is charged for every search on Blinkx!
+ StringBuilder url = new StringBuilder(255);
+
url.append("/partnerapi/sesam/?Anylanguage=true&Adultfilter=true&channelhits=true&printfields=media_duration");
+ url.append("&searchtype="); url.append(searchType);
+
url.append(videoSource.length()>0?"&databasematch="+videoSource.toLowerCase():"");
+ url.append("&BiasDate="); url.append(biasDate);
+ url.append("&Start="); url.append(getCurrentOffset(1));
+ url.append("&text="); url.append(query);
+ LOG.debug("zz:VSC_URL: "+url);
+ return url.toString();
}
public ResultList<? extends ResultItem> execute() {
@@ -96,32 +103,16 @@
if (responseData.getNodeName().equals("responsedata")) {
Node nextSibling = responseData.getFirstChild();
long now = new Date().getTime();
- TreeMap<String, String> videoSources = new TreeMap<String,
String>();
searchResult.addObjectField("videoSources", new TreeSet());
while(nextSibling != null ) {
if (nextSibling.getNodeName().equals("autn:channelhits")) {
- Node channelSibling = nextSibling.getFirstChild();
- while(channelSibling != null ) {
-
videoSources.put(channelSibling.getAttributes().getNamedItem("name").getTextContent(),channelSibling.getTextContent());
- channelSibling = channelSibling.getNextSibling();
- }
- TreeSet<Map.Entry> set = new TreeSet<Map.Entry>(new
Comparator<Map.Entry>() {
- public int compare(Map.Entry a, Map.Entry b) { //
Sort descending by hits, ascending by case insensitive channel name if number
of hits is equal
- int ret = ((Comparable)
Integer.parseInt((String)((Map.Entry)a).getValue())).compareTo(Integer.parseInt((String)((Map.Entry)b).getValue()))*-1;
- if (ret == 0) {
- ret = ((Comparable)
((Map.Entry)a).getKey()).toString().toLowerCase().compareTo(((Map.Entry)b).getKey().toString().toLowerCase());
- }
- return ret;
- }
- });
- set.addAll(videoSources.entrySet());
- searchResult.addObjectField("videoSources", set);
+ addVideoSourcesNavigatorField(searchResult,
nextSibling);
} else if
(nextSibling.getNodeName().equals("autn:totalhits")) {
searchResult.setHitCount(Integer.parseInt(nextSibling.getTextContent()));
} else if (nextSibling.getNodeName().equals("autn:hit")) {
final BasicResultItem item = new BasicResultItem();
item.addField("videoDuration", "-");
- item.addField("summary", "-");
+ item.addField("summary", "");
Node itemSibling = nextSibling.getFirstChild();
while(itemSibling != null ) {
if
(itemSibling.getNodeName().equals("autn:reference")) {
@@ -131,42 +122,12 @@
} else if
(itemSibling.getNodeName().equals("autn:summary")) {
String summary = itemSibling.getTextContent();
if (summary.length()>2) {
- item.addField("summary",
summary.replaceAll(" Date.*html", "..."));
+ item.addField("summary",
summary.replaceAll("\\s*Date.*html", "..."));
}
} else if
(itemSibling.getNodeName().equals("autn:date")) {
- // age function ?
- long videoDate = new
Date(Long.parseLong(itemSibling.getTextContent())*1000).getTime();
- long age = now - videoDate;
- if (age > 3600000 * 24 * 4) {
- item.addField("date", formatter.format(new
Date(videoDate)) );
- } else if (age > 3600000 * 24) {
- int days = (int)(age / (3600000 * 24));
- item.addField("date", days+(days==1?"
dag":" dagar") +" gammal");
- } else if (age > 3600000) {
- int hours = (int)(age / (3600000 ));
- item.addField("date", ""+hours
+(hours==1?" timme":" timmar") +" gammal");
- } else {
- int minutes = (int)(age / (60000 ));
- item.addField("date", ""+minutes
+(minutes==1?" minut":" minuter") +" gammal");
- }
+ addDateField(now, item, itemSibling);
} else if
(itemSibling.getNodeName().equals("autn:content")) {
- Node itemContentSibling =
itemSibling.getFirstChild().getFirstChild();
- while(itemContentSibling != null ) {
- if
(itemContentSibling.getNodeName().equals("CHANNEL")) {
- item.addField("source",
itemContentSibling.getTextContent());
- } else if
(itemContentSibling.getNodeName().equals("IMAGE")) {
- item.addField("preview",
itemContentSibling.getTextContent());
- } else if
(itemContentSibling.getNodeName().equals("MEDIA_DURATION")) {
- item.addField("videoDuration",
timeFormatter.format(new
Date(Long.parseLong(itemContentSibling.getTextContent()) * 1 )));
- } else if
(itemContentSibling.getNodeName().equals("MEDIA_TYPE_STRING")) {
- item.addField("videoType",
itemContentSibling.getTextContent());
- } else if
(itemContentSibling.getNodeName().equals("DOMAIN")) {
- item.addField("videoDomain",
itemContentSibling.getTextContent());
- } else if
(itemContentSibling.getNodeName().equals("STATICPREVIEW")) {
- item.addField("staticPreview",
itemContentSibling.getTextContent());
- }
- itemContentSibling =
itemContentSibling.getNextSibling();
- }
+ addContentFields(item, itemSibling);
}
itemSibling = itemSibling.getNextSibling();
}
@@ -176,14 +137,70 @@
}
}
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ LOG.error("IOException:",e);
+ throw new InfrastructureException(e);
} catch (SAXException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ LOG.error("SAXException:",e);
+ throw new InfrastructureException(e);
}
return searchResult;
}
+ private void addContentFields(final BasicResultItem item, Node
itemSibling) {
+ Node itemContentSibling = itemSibling.getFirstChild().getFirstChild();
+ while(itemContentSibling != null ) {
+ if (itemContentSibling.getNodeName().equals("CHANNEL")) {
+ item.addField("source", itemContentSibling.getTextContent());
+ } else if (itemContentSibling.getNodeName().equals("IMAGE")) {
+ item.addField("preview", itemContentSibling.getTextContent());
+ } else if
(itemContentSibling.getNodeName().equals("MEDIA_DURATION")) {
+ item.addField("videoDuration", timeFormatter.format(new
Date(Long.parseLong(itemContentSibling.getTextContent()))));
+ } else if
(itemContentSibling.getNodeName().equals("MEDIA_TYPE_STRING")) {
+ item.addField("videoType",
itemContentSibling.getTextContent());
+ } else if (itemContentSibling.getNodeName().equals("DOMAIN")) {
+ item.addField("videoDomain",
itemContentSibling.getTextContent());
+ } else if
(itemContentSibling.getNodeName().equals("STATICPREVIEW")) {
+ item.addField("staticPreview",
itemContentSibling.getTextContent());
+ }
+ itemContentSibling = itemContentSibling.getNextSibling();
+ }
+ }
+ private void addVideoSourcesNavigatorField(final
BasicResultList<ResultItem> searchResult, Node nextSibling) {
+ TreeMap<String, String> videoSources = new TreeMap<String, String>();
+ Node channelSibling = nextSibling.getFirstChild();
+ while(channelSibling != null ) {
+
videoSources.put(channelSibling.getAttributes().getNamedItem("name").getTextContent(),channelSibling.getTextContent());
+ channelSibling = channelSibling.getNextSibling();
+ }
+ TreeSet<Map.Entry> set = new TreeSet<Map.Entry>(new
Comparator<Map.Entry>() {
+ public int compare(Map.Entry a, Map.Entry b) { // Sort descending
by hits, ascending by case insensitive channel name if number of hits is equal
+ int ret = ((Comparable)
Integer.parseInt((String)((Map.Entry)a).getValue())).compareTo(Integer.parseInt((String)((Map.Entry)b).getValue()))*-1;
+ if (ret == 0) {
+ ret = ((Comparable)
((Map.Entry)a).getKey()).toString().toLowerCase().compareTo(((Map.Entry)b).getKey().toString().toLowerCase());
+ }
+ return ret;
+ }
+ });
+ set.addAll(videoSources.entrySet());
+ searchResult.addObjectField("videoSources", set);
+ }
+
+ private void addDateField(long now, final BasicResultItem item, Node
itemSibling) {
+ long videoDate = new
Date(Long.parseLong(itemSibling.getTextContent())*1000).getTime();
+ long age = now - videoDate;
+ if (age > 3600000 * 24 * 3) { // older than 3 days
+ item.addField("date", formatter.format(new Date(videoDate)) );
+ } else if (age > 3600000 * 24) { // older than 1 day
+ int days = (int)(age / (3600000 * 24));
+ item.addField("date", days+(days==1?" dag":" dagar") +" gammal");
+ } else if (age > 3600000) { // older than 1 hour
+ int hours = (int)(age / (3600000 ));
+ item.addField("date", hours +(hours==1?" timme":" timmar") +"
gammal");
+ } else { // less than 1 hour
+ int minutes = (int)(age / (60000 ));
+ item.addField("date", minutes +(minutes==1?" minut":" minuter") +"
gammal");
+ }
+ }
+
}
_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits