1 4 package org.openedit.archive.jobtracking; 5 6 import java.io.File ; 7 import java.util.HashMap ; 8 import java.util.Iterator ; 9 import java.util.Map ; 10 11 import org.apache.lucene.search.Hits; 12 import org.dom4j.Attribute; 13 import org.dom4j.Element; 14 15 import com.openedit.ModuleManager; 16 import com.openedit.OpenEditException; 17 import com.openedit.archive.Archive; 18 import com.openedit.hittracker.HitTracker; 19 import com.openedit.modules.search.LuceneHitTracker; 20 import com.openedit.page.Page; 21 import com.openedit.page.manage.PageManager; 22 import com.openedit.store.Store; 23 import com.openedit.util.XmlUtil; 24 25 public class JobArchive 26 { 27 protected Store fieldStore; 28 protected PageManager fieldPageManager; 29 protected ModuleManager fieldModuleManager; 30 protected JobSearch fieldJobSearch; 31 protected Map fieldCache; 32 33 protected XmlUtil fieldXmlUtil; 34 35 public void save(Archive inArchive, Job inJob ) throws OpenEditException 36 { 37 if( !inArchive.getUser().hasPermission("savejob") ) 38 { 39 throw new OpenEditException("No permission to save"); 40 } 41 42 } 68 69 public PageManager getPageManager() 70 { 71 return fieldPageManager; 72 } 73 74 public void setPageManager(PageManager inPageManager) 75 { 76 fieldPageManager = inPageManager; 77 } 78 79 public HitTracker findOpenJobs(Archive inArchive) throws Exception 80 { 81 Hits hits = getJobSearch().search("status:open"); 82 HitTracker tracker = new LuceneHitTracker(hits); 83 return tracker; 84 } 85 86 public Job getJobById(String inJobNumber) throws OpenEditException 87 { 88 Job njob = (Job)getCache().get(inJobNumber); 89 if( njob == null) 90 { 91 njob = createJob(inJobNumber); 92 if( njob != null) 93 { 94 getCache().put( inJobNumber, njob); 95 } 96 } 97 return njob; 98 } 99 protected Job createJob(String inJobNumber) throws OpenEditException 100 { 101 Page page = getPageManager().getPage( getStore().getStoreHome() + "/data/jobs/" + inJobNumber + ".xml"); 102 if( page.exists() ) 103 { 104 Element root = getXmlUtil().getXml(page.getReader(), "UTF-8"); 105 Job njob = new Job(); 106 njob.setId(inJobNumber); 107 108 for (Iterator iterator = root.elementIterator("property"); iterator.hasNext();) 109 { 110 Element prop = (Element)iterator.next(); 111 njob.addProperty(prop.attributeValue("name"), prop.getText()); 112 } 113 114 for (Iterator iterator = root.elementIterator("status"); iterator.hasNext();) 115 { 116 Element echange = (Element)iterator.next(); 117 StatusChange change = new StatusChange(); 118 change.setId(echange.attributeValue("id")); 119 change.setType(echange.attributeValue("type")); 120 change.setUsername(echange.attributeValue("user")); 121 change.setDated(echange.attributeValue("date")); 122 njob.addStatusChange(change); 123 } 124 return njob; 125 } 126 return null; 127 } 128 129 protected Map getCache() 130 { 131 if (fieldCache == null) 132 { 133 fieldCache = new HashMap (); 134 } 135 return fieldCache; 136 } 137 public JobSearch getJobSearch() 138 { 139 return fieldJobSearch; 140 } 141 142 public void setJobSearch(JobSearch inJobSearch) 143 { 144 fieldJobSearch = inJobSearch; 145 inJobSearch.setJobArchive(this); 146 } 147 148 public ModuleManager getModuleManager() 149 { 150 return fieldModuleManager; 151 } 152 153 public void setModuleManager(ModuleManager inModuleManager) 154 { 155 fieldModuleManager = inModuleManager; 156 } 157 158 public Store getStore() 159 { 160 return fieldStore; 161 } 162 163 public void setStore(Store inStore) 164 { 165 fieldStore = inStore; 166 File dir = new File ( inStore.getStoreDirectory() ,"/data/jobs/"); 167 getJobSearch().setSearchDirectory(dir); 168 } 169 170 public XmlUtil getXmlUtil() 171 { 172 if (fieldXmlUtil == null) 173 { 174 fieldXmlUtil = new XmlUtil(); 175 } 176 return fieldXmlUtil; 177 } 178 179 public void setXmlUtil(XmlUtil inXmlUtil) 180 { 181 fieldXmlUtil = inXmlUtil; 182 } 183 184 185 } 186 | Popular Tags |