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

Reply via email to