Author: ssthkjer
Date: 2007-02-05 12:17:08 +0100 (Mon, 05 Feb 2007)
New Revision: 4415

Added:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/view/velocity/BoldWordDirective.java
Modified:
   
trunk/core-api/src/main/java/no/schibstedsok/searchportal/view/velocity/VelocityEngineFactory.java
Log:
https://jira.sesam.no/jira/browse/SEARCH-1554 - Topp 3 sponsede lenker - Utheve 
s?\195?\184keordet

Added: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/view/velocity/BoldWordDirective.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/view/velocity/BoldWordDirective.java
                              (rev 0)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/view/velocity/BoldWordDirective.java
      2007-02-05 11:17:08 UTC (rev 4415)
@@ -0,0 +1,107 @@
+package no.schibstedsok.searchportal.view.velocity;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.List;
+import java.util.Arrays;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.apache.velocity.context.InternalContextAdapter;
+import org.apache.velocity.exception.MethodInvocationException;
+import org.apache.velocity.exception.ParseErrorException;
+import org.apache.velocity.exception.ResourceNotFoundException;
+import org.apache.velocity.runtime.directive.Directive;
+import org.apache.velocity.runtime.parser.Token;
+import org.apache.velocity.runtime.parser.node.Node;
+
+/**
+ *
+ * A velocity directive to bold (query) word(s) 
+ * param 1: text to replace
+ * param 2: query
+ *
+ * - "og" and "i" in the query should not be bolded. 
+ * - Capitalized words should stay capitalized
+ * - remove "," and "!" from query words
+ *
+ * <code>
+ * #boldWord('leter du etter hotell i Paris' 'hotell i paris')
+ * returns the string: "leter du etter <b>hotell</b> i <b>Paris</b>"
+ * </code>
+ *
+ *
+ * @author thomas
+ * @version $Id$
+ */
+public final class BoldWordDirective extends Directive {
+
+    private static final Logger LOG = 
Logger.getLogger(BoldWordDirective.class);
+    
+    private static final String NAME = "boldWord";
+
+    /**
+     * [EMAIL PROTECTED]
+     */
+    public String getName() {
+        return NAME;
+    }
+
+   /**
+     * [EMAIL PROTECTED]
+     */
+    public int getType() {
+        return LINE;
+    }
+
+   /**
+     * [EMAIL PROTECTED]
+     */
+    public boolean render(
+                final InternalContextAdapter context, 
+                final Writer writer, 
+                final Node node) 
+            throws IOException, ResourceNotFoundException, 
ParseErrorException, MethodInvocationException {
+        
+        final int argCount = node.jjtGetNumChildren();
+
+        if (argCount != 1) {
+            
+            String text = node.jjtGetChild(0).value(context).toString();
+            final String query = node.jjtGetChild(1).value(context).toString();
+            
+            if(text == null) {
+                writer.write("");
+                return true;
+            }
+                        
+            String patternstr = "[\\p{Punct}\\p{Space}]+";
+            String replace = "";
+            String replaceUp = "";
+            List list = Arrays.asList(query.split(patternstr));
+            for (int i=0;i<list.size();i++) {
+                if (!list.get(i).toString().toLowerCase().equals("og") && 
!list.get(i).toString().toLowerCase().equals("i")) {
+                    replace = "<b>" + list.get(i) + "</b>";
+                    replaceUp = "<b>" + 
StringUtils.capitalize(list.get(i).toString()) + "</b>";
+                    text = text.replaceAll(list.get(i).toString(), replace);
+                    text = 
text.replaceAll(StringUtils.capitalize(list.get(i).toString()), replaceUp);
+                    //text = text.replaceAll("(?i)" + list.get(i), rep);
+                }
+            }
+            writer.write(text);
+
+            if (node.getLastToken().image.endsWith("\n")) {
+                writer.write('\n');
+            }
+        
+        }else{
+            
+            final String msg = '#' + getName() + " - wrong number of 
arguments";
+            LOG.error(msg);
+            rsvc.error(msg);
+            return false;
+        }
+
+        return true;
+
+    }
+}

Modified: 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/view/velocity/VelocityEngineFactory.java
===================================================================
--- 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/view/velocity/VelocityEngineFactory.java
  2007-02-03 22:12:49 UTC (rev 4414)
+++ 
trunk/core-api/src/main/java/no/schibstedsok/searchportal/view/velocity/VelocityEngineFactory.java
  2007-02-05 11:17:08 UTC (rev 4415)
@@ -87,6 +87,7 @@
             + 
"no.schibstedsok.searchportal.view.velocity.FinnImgLinkDirective,"
             + "no.schibstedsok.searchportal.view.velocity.TopDomainDirective,"
             + 
"no.schibstedsok.searchportal.view.velocity.DateFormattingDirective,"
+            + "no.schibstedsok.searchportal.view.velocity.BoldWordDirective,"
             + 
"no.schibstedsok.searchportal.view.velocity.ChannelCategoryListDirective,"
             + 
"no.schibstedsok.searchportal.view.velocity.RemovePrefixDirective";
 

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

Reply via email to