Author: ssmalamb
Date: 2007-06-27 19:24:36 +0200 (Wed, 27 Jun 2007)
New Revision: 5456

Modified:
   
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
Log:
Added video source navigator on video search

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-27 15:41:53 UTC (rev 5455)
+++ 
branches/2.14/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/VideoSearchCommand.java
      2007-06-27 17:24:36 UTC (rev 5456)
@@ -13,7 +13,11 @@
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
+import java.util.Comparator;
 import java.util.Date;
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.TreeSet;
 
 import no.schibstedsok.searchportal.mode.config.VideoCommandConfig;
 import no.schibstedsok.searchportal.result.BasicResultItem;
@@ -70,50 +74,68 @@
             LOG.error(e);
         }
         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/?text=george+bush&channelhits=true
-        return 
"/partnerapi/sesam/?searchtype="+searchType+"Anylanguage=true&Adultfilter=true&printfields=media_duration&BiasDate="+biasDate+"&Start="+getCurrentOffset(1)+"&text="+query;
+        // 
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;
     }
 
     public ResultList<? extends ResultItem> execute() {
 
         final BasicResultList<ResultItem> searchResult = new 
BasicResultList<ResultItem>();
-        
-        String transformedQuery = getTransformedQuery();
-        searchResult.addField("searchquery", transformedQuery);
+
+        searchResult.addField("searchquery", getTransformedQuery());
         searchResult.setHitCount(0);
         try {
             final Document doc = this.getXmlResult();
             final Node rootElement = doc.getDocumentElement();
             final Node  responseData = 
rootElement.getFirstChild().getNextSibling().getNextSibling();
             if (responseData.getNodeName().equals("responsedata")) {
-                final String hits = 
responseData.getFirstChild().getNextSibling().getTextContent();
-                searchResult.setHitCount(Integer.parseInt(hits));
-
                 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:hit")) {
+                    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);
+                    } 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", "-");
-                        Node nextSibling2 = nextSibling.getFirstChild();
-                        while(nextSibling2 != null ) {
-                            if 
(nextSibling2.getNodeName().equals("autn:reference")) {
-                                item.addField("url", 
nextSibling2.getTextContent());
-                            } else if 
(nextSibling2.getNodeName().equals("autn:title")) {
-                                item.addField("title", 
nextSibling2.getTextContent());
-                            } else if 
(nextSibling2.getNodeName().equals("autn:summary")) {
-                                String summary = nextSibling2.getTextContent();
+                        Node itemSibling = nextSibling.getFirstChild();
+                        while(itemSibling != null ) {
+                            if 
(itemSibling.getNodeName().equals("autn:reference")) {
+                                item.addField("url", 
itemSibling.getTextContent());
+                            } else if 
(itemSibling.getNodeName().equals("autn:title")) {
+                                item.addField("title", 
itemSibling.getTextContent());
+                            } else if 
(itemSibling.getNodeName().equals("autn:summary")) {
+                                String summary = itemSibling.getTextContent();
                                 if (summary.length()>2) {
                                     item.addField("summary", 
summary.replaceAll(" Date.*html", "..."));
                                 }
-                            } else if 
(nextSibling2.getNodeName().equals("autn:date")) {
+                            } else if 
(itemSibling.getNodeName().equals("autn:date")) {
                                 // age function  ?
-                                long videoDate = new 
Date(Long.parseLong(nextSibling2.getTextContent())*1000).getTime();
+                                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)) );
@@ -127,26 +149,26 @@
                                     int minutes = (int)(age / (60000 ));
                                     item.addField("date", ""+minutes 
+(minutes==1?" minut":" minuter") +" gammal");
                                 }
-                            } else if 
(nextSibling2.getNodeName().equals("autn:content")) {
-                                Node nextSibling3 = 
nextSibling2.getFirstChild().getFirstChild();
-                                while(nextSibling3 != null ) {
-                                    if 
(nextSibling3.getNodeName().equals("CHANNEL")) {
-                                        item.addField("source", 
nextSibling3.getTextContent());
-                                    } else if 
(nextSibling3.getNodeName().equals("IMAGE")) {
-                                        item.addField("preview", 
nextSibling3.getTextContent());
-                                    } else if 
(nextSibling3.getNodeName().equals("MEDIA_DURATION")) {
-                                        item.addField("videoDuration", 
timeFormatter.format(new Date(Long.parseLong(nextSibling3.getTextContent()) * 1 
)));
-                                    } else if 
(nextSibling3.getNodeName().equals("MEDIA_TYPE_STRING")) {
-                                        item.addField("videoType", 
nextSibling3.getTextContent());
-                                    } else if 
(nextSibling3.getNodeName().equals("DOMAIN")) {
-                                        item.addField("videoDomain", 
nextSibling3.getTextContent());
-                                    } else if 
(nextSibling3.getNodeName().equals("STATICPREVIEW")) {
-                                        item.addField("staticPreview", 
nextSibling3.getTextContent());
+                            } 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());
                                     }
-                                    nextSibling3 = 
nextSibling3.getNextSibling();
+                                    itemContentSibling = 
itemContentSibling.getNextSibling();
                                 }
                             }
-                            nextSibling2 = nextSibling2.getNextSibling();
+                            itemSibling = itemSibling.getNextSibling();
                         }
                         searchResult.addResult(item);
                     }

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

Reply via email to