[jboss-cvs] JBossBlog SVN: r296 - in trunk/src: model/org/jboss/blog/model and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 29 07:27:13 EDT 2008


Author: adamw
Date: 2008-04-29 07:27:13 -0400 (Tue, 29 Apr 2008)
New Revision: 296

Added:
   trunk/src/action/org/jboss/blog/session/search/SearchReindexObserver.java
   trunk/src/tools/org/jboss/blog/tools/search/
   trunk/src/tools/org/jboss/blog/tools/search/UnrestrictedFeedFilter.java
   trunk/src/tools/org/jboss/blog/tools/search/bridge/
   trunk/src/tools/org/jboss/blog/tools/search/bridge/FeedBridge.java
   trunk/src/tools/org/jboss/blog/tools/search/bridge/StripHtmlBridge.java
Removed:
   trunk/src/tools/org/jboss/blog/tools/StripHtmlBridge.java
Modified:
   trunk/src/action/org/jboss/blog/session/search/PostSearchBean.java
   trunk/src/model/org/jboss/blog/model/Post.java
   trunk/src/tools/org/jboss/blog/tools/StringTools.java
Log:


Modified: trunk/src/action/org/jboss/blog/session/search/PostSearchBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/search/PostSearchBean.java	2008-04-29 09:48:29 UTC (rev 295)
+++ trunk/src/action/org/jboss/blog/session/search/PostSearchBean.java	2008-04-29 11:27:13 UTC (rev 296)
@@ -118,6 +118,7 @@
         Query luceneQuery = parser.parse(escapeQuery(getQuery()));
 
         FullTextQuery fullTextQuery = entityManager.createFullTextQuery(luceneQuery, Post.class);
+        fullTextQuery.enableFullTextFilter("unrestrictedFeedFilter");
         fullTextQuery.setProjection(FullTextQuery.SCORE, FullTextQuery.THIS);
 
         return fullTextQuery;

Added: trunk/src/action/org/jboss/blog/session/search/SearchReindexObserver.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/search/SearchReindexObserver.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/search/SearchReindexObserver.java	2008-04-29 11:27:13 UTC (rev 296)
@@ -0,0 +1,30 @@
+package org.jboss.blog.session.search;
+
+import org.jboss.seam.annotations.Observer;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.Post;
+import org.hibernate.search.jpa.FullTextEntityManager;
+
+import java.util.List;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+ at Name("searchReindexObserver")
+public class SearchReindexObserver {
+    @In
+    private FullTextEntityManager entityManager;
+
+    @Observer({"org.jboss.blog.feed.updated"})
+    public void feedUpdated(Feed feed) {
+        //noinspection unchecked
+        List<Post> posts = entityManager.createQuery("select post from Post post where post.feed = ?1")
+                .setParameter(1, feed).getResultList();
+
+        for (Post post : posts) {
+            entityManager.index(post);
+        }
+    }
+}

Modified: trunk/src/model/org/jboss/blog/model/Post.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Post.java	2008-04-29 09:48:29 UTC (rev 295)
+++ trunk/src/model/org/jboss/blog/model/Post.java	2008-04-29 11:27:13 UTC (rev 296)
@@ -7,7 +7,9 @@
 import org.hibernate.validator.Pattern;
 import org.hibernate.annotations.Cache;
 import org.hibernate.annotations.CacheConcurrencyStrategy;
-import org.jboss.blog.tools.StripHtmlBridge;
+import org.jboss.blog.tools.search.bridge.StripHtmlBridge;
+import org.jboss.blog.tools.search.bridge.FeedBridge;
+import org.jboss.blog.tools.search.UnrestrictedFeedFilter;
 import org.jboss.blog.tools.StringTools;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.blog.model.feed.Feed;
@@ -22,6 +24,7 @@
 @Entity
 @Indexed
 @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
+ at FullTextFilterDef(name = "unrestrictedFeedFilter", impl = UnrestrictedFeedFilter.class)
 public class Post implements RestrictedPost {
     @Id
     @GeneratedValue
@@ -74,6 +77,7 @@
 
     @ManyToOne
     @NotNull
+    @Field(name = "restricted", bridge = @FieldBridge(impl = FeedBridge.class))
     private Feed feed;
 
     public Integer getId() {

Modified: trunk/src/tools/org/jboss/blog/tools/StringTools.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/StringTools.java	2008-04-29 09:48:29 UTC (rev 295)
+++ trunk/src/tools/org/jboss/blog/tools/StringTools.java	2008-04-29 11:27:13 UTC (rev 296)
@@ -4,6 +4,8 @@
 import org.htmlcleaner.HtmlCleaner;
 import org.xml.sax.SAXException;
 import org.xml.sax.InputSource;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.SAXParseException;
 import org.apache.log4j.Logger;
 
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -77,7 +79,6 @@
     public static boolean isValidXml(String html) {
         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
         factory.setValidating(false);
-        factory.setNamespaceAware(true);
 
         DocumentBuilder builder;
         try {
@@ -87,6 +88,12 @@
             return false;
         }
 
+        builder.setErrorHandler(new ErrorHandler() {
+            public void warning(SAXParseException exception) throws SAXException { throw exception; }
+            public void error(SAXParseException exception) throws SAXException { throw exception; }
+            public void fatalError(SAXParseException exception) throws SAXException { throw exception; }
+        });
+
         try {
             builder.parse(new InputSource(new StringReader(html)));
             return true;
@@ -98,10 +105,6 @@
         }
     }
 
-    public static void main(String[] args) {
-        System.out.println(isValidXml("<div></div>"));
-    }
-
     public static String fixHtml(String html) {
         if (isEmpty(html)) {
             return html;

Deleted: trunk/src/tools/org/jboss/blog/tools/StripHtmlBridge.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/StripHtmlBridge.java	2008-04-29 09:48:29 UTC (rev 295)
+++ trunk/src/tools/org/jboss/blog/tools/StripHtmlBridge.java	2008-04-29 11:27:13 UTC (rev 296)
@@ -1,16 +0,0 @@
-package org.jboss.blog.tools;
-
-import org.hibernate.search.bridge.StringBridge;
-
-/**
- * @author Adam Warski (adam at warski dot org)
- */
-public class StripHtmlBridge implements StringBridge {
-    public String objectToString(Object o) {
-        if (o == null) {
-            return null;
-        }
-
-        return StringTools.stripHtml(o.toString());
-    }
-}

Added: trunk/src/tools/org/jboss/blog/tools/search/UnrestrictedFeedFilter.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/search/UnrestrictedFeedFilter.java	                        (rev 0)
+++ trunk/src/tools/org/jboss/blog/tools/search/UnrestrictedFeedFilter.java	2008-04-29 11:27:13 UTC (rev 296)
@@ -0,0 +1,25 @@
+package org.jboss.blog.tools.search;
+
+import org.apache.lucene.search.Filter;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.TermDocs;
+import org.apache.lucene.index.Term;
+
+import java.util.BitSet;
+import java.io.IOException;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class UnrestrictedFeedFilter extends Filter {
+    public BitSet bits(IndexReader indexReader) throws IOException {
+        BitSet bitSet = new BitSet(indexReader.maxDoc());
+        TermDocs termDocs = indexReader.termDocs(new Term("restricted", "0"));
+        
+        while (termDocs.next()) {
+            bitSet.set(termDocs.doc());
+        }
+
+        return bitSet;
+    }
+}

Added: trunk/src/tools/org/jboss/blog/tools/search/bridge/FeedBridge.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/search/bridge/FeedBridge.java	                        (rev 0)
+++ trunk/src/tools/org/jboss/blog/tools/search/bridge/FeedBridge.java	2008-04-29 11:27:13 UTC (rev 296)
@@ -0,0 +1,22 @@
+package org.jboss.blog.tools.search.bridge;
+
+import org.hibernate.search.bridge.StringBridge;
+import org.jboss.blog.model.feed.Feed;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class FeedBridge implements StringBridge {
+    public String objectToString(Object object) {
+        if (object == null) {
+            return null;
+        }
+
+        Feed feed = (Feed) object;
+        if (feed.getRestricted()) {
+            return "1";
+        } else {
+            return "0";
+        }
+    }
+}

Added: trunk/src/tools/org/jboss/blog/tools/search/bridge/StripHtmlBridge.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/search/bridge/StripHtmlBridge.java	                        (rev 0)
+++ trunk/src/tools/org/jboss/blog/tools/search/bridge/StripHtmlBridge.java	2008-04-29 11:27:13 UTC (rev 296)
@@ -0,0 +1,17 @@
+package org.jboss.blog.tools.search.bridge;
+
+import org.hibernate.search.bridge.StringBridge;
+import org.jboss.blog.tools.StringTools;
+
+/**
+ * @author Adam Warski (adam at warski dot org)
+ */
+public class StripHtmlBridge implements StringBridge {
+    public String objectToString(Object o) {
+        if (o == null) {
+            return null;
+        }
+
+        return StringTools.stripHtml(o.toString());
+    }
+}




More information about the jboss-cvs-commits mailing list