1 18 19 package org.apache.roller.business.search.operations; 20 21 import java.io.IOException ; 22 import java.text.MessageFormat ; 23 import java.util.Date ; 24 import java.util.Iterator ; 25 import java.util.List ; 26 27 import org.apache.commons.logging.Log; 28 import org.apache.commons.logging.LogFactory; 29 import org.apache.lucene.index.IndexReader; 30 import org.apache.lucene.index.IndexWriter; 31 import org.apache.lucene.index.Term; 32 import org.apache.roller.RollerException; 33 import org.apache.roller.business.IndexManagerImpl; 34 import org.apache.roller.business.search.FieldConstants; 35 import org.apache.roller.business.search.IndexUtil; 36 import org.apache.roller.model.Roller; 37 import org.apache.roller.model.RollerFactory; 38 import org.apache.roller.model.WeblogManager; 39 import org.apache.roller.pojos.WeblogEntryData; 40 import org.apache.roller.pojos.WebsiteData; 41 42 46 public class RebuildWebsiteIndexOperation extends WriteToIndexOperation { 47 48 50 private static Log mLogger = 51 LogFactory.getFactory().getInstance(RebuildWebsiteIndexOperation.class); 52 53 55 private WebsiteData website; 56 57 59 64 public RebuildWebsiteIndexOperation(IndexManagerImpl mgr, WebsiteData website) { 65 super(mgr); 66 this.website = website; 67 } 68 69 71 public void doRun() { 72 Date start = new Date (); 73 74 IndexReader reader = beginDeleting(); 75 76 try { 77 if (reader != null) { 78 Term tWebsite = null; 79 if (website != null) { 80 tWebsite = IndexUtil.getTerm( 81 FieldConstants.WEBSITE_HANDLE, website.getHandle()); 82 } 83 if (tWebsite != null) { 84 reader.delete(tWebsite); 85 } else { 86 Term all = 87 IndexUtil.getTerm(FieldConstants.CONSTANT, 88 FieldConstants.CONSTANT_V); 89 reader.delete(all); 90 } 91 } 92 } catch (IOException e) { 93 mLogger.info("Problems deleting doc from index", e); 94 } finally { 95 endDeleting(); 96 } 97 98 IndexWriter writer = beginWriting(); 99 100 Roller roller = RollerFactory.getRoller(); 101 try { 102 if (writer != null) { 103 WeblogManager weblogManager = roller.getWeblogManager(); 104 105 List entries = weblogManager .getWeblogEntries( 106 website, null, 108 null, new Date (), null, WeblogEntryData.PUBLISHED, null, null, 0, -1); 115 for (Iterator wbItr = entries.iterator(); wbItr.hasNext();) { 116 WeblogEntryData entry = (WeblogEntryData) wbItr.next(); 117 writer.addDocument(getDocument(entry)); 118 mLogger.debug( 119 MessageFormat.format("Indexed entry {0}: {1}", 120 new Object [] {entry.getPubTime(), entry.getAnchor()})); 121 } 122 roller.release(); 124 } 125 } catch (Exception e) { 126 mLogger.error("ERROR adding doc to index", e); 127 } finally { 128 endWriting(); 129 if (roller != null) roller.release(); 130 } 131 132 Date end = new Date (); 133 double length = (end.getTime() - start.getTime()) / (double) 1000; 134 135 if (website == null) { 136 mLogger.info( 137 "Completed rebuilding index for all users in '" + length + "' secs"); 138 } else { 139 mLogger.info("Completed rebuilding index for website handle: '" + 140 website.getHandle() + "' in '" + length + "' seconds"); 141 } 142 } 143 } 144 | Popular Tags |