1 package org.openedit.archive.jobtracking; 2 3 import java.io.File ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 7 import org.apache.commons.logging.Log; 8 import org.apache.commons.logging.LogFactory; 9 import org.apache.lucene.document.Document; 10 import org.apache.lucene.document.Field; 11 import org.apache.lucene.index.IndexReader; 12 import org.apache.lucene.index.IndexWriter; 13 14 import com.openedit.modules.search.BaseLuceneSearch; 15 import com.openedit.page.manage.PageManager; 16 import com.openedit.util.FileUtils; 17 import com.openedit.util.PathUtilities; 18 19 public class JobSearch extends BaseLuceneSearch 20 { 21 protected JobArchive fieldJobArchive; 22 protected PageManager fieldPageManager; 23 private static final Log log = LogFactory.getLog(JobSearch.class); 24 25 public void reIndexAll() throws Exception 26 { 27 File existing = buildIndexDir("A"); 28 if( IndexReader.indexExists(existing) ) 29 { 30 getLiveSearcher(); 31 } 32 List list = getPageManager().getRepository().getChildrenNames(getJobArchive().getStore().getStoreHome() + "/data/jobs/"); 33 File newIndex = buildIndexDir("new"); 34 35 buildIndex(newIndex,list); 36 37 FileUtils utils = new FileUtils(); 38 utils.deleteAll(existing); 39 utils.move(newIndex, existing); 40 clearIndex(); 41 } 42 43 private void buildIndex(File deadIndexDir, List inPaths) throws Exception 44 { 45 new FileUtils().deleteAll(deadIndexDir); 46 deadIndexDir.mkdirs(); 47 IndexWriter writer = new IndexWriter(deadIndexDir, getAnalyzer(), true); 48 writer.setMergeFactor(100); 52 try 53 { 54 for (Iterator iter = inPaths.iterator(); iter.hasNext();) 55 { 56 String path = (String ) iter.next(); 57 if( path.endsWith(".xml")) 58 { 59 String id = PathUtilities.extractPageName(path); 60 Job job = getJobArchive().getJobById(id); 61 62 if (job != null ) 63 { 64 Document doc = new Document(); 65 doc.add(new Field("id", job.getId(), Field.Store.YES, Field.Index.TOKENIZED)); 66 String open = job.isOpen() ? "open":"closed"; 67 doc.add(new Field("status",open, Field.Store.YES, Field.Index.TOKENIZED)); 68 writer.addDocument(doc); 69 } 70 else 71 { 72 log.info("Error loading product:" + id); 73 } 74 } 75 } 76 writer.optimize(); 77 78 } 79 finally 80 { 81 writer.close(); 82 } 83 } 84 85 public JobArchive getJobArchive() 86 { 87 return fieldJobArchive; 88 } 89 90 public void setJobArchive(JobArchive inJobArchive) 91 { 92 fieldJobArchive = inJobArchive; 93 } 94 95 public PageManager getPageManager() 96 { 97 return fieldPageManager; 98 } 99 100 public void setPageManager(PageManager inPageManager) 101 { 102 fieldPageManager = inPageManager; 103 } 104 105 } 106 | Popular Tags |