KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openedit > archive > jobtracking > JobArchive


1 /*
2  * Created on Jul 2, 2006
3  */

4 package org.openedit.archive.jobtracking;
5
6 import java.io.File JavaDoc;
7 import java.util.HashMap JavaDoc;
8 import java.util.Iterator JavaDoc;
9 import java.util.Map JavaDoc;
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 JavaDoc 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 // Page userJob = getPageManager().getPage(inArchive.getCatalogHome() + "/data/jobs/" + inJob.getId() +".xml");
43
// Element root = DocumentHelper.createElement("job");
44
//
45
// for (Iterator iter = inCols.getCollections().iterator(); iter.hasNext();)
46
// {
47
// Collection col = (Collection) iter.next();
48
// Element child = root.addElement("collection");
49
// child.addAttribute("id", col.getId());
50
// child.addAttribute("name", col.getName());
51
// for (Iterator iterator = col.getCollectionItems().iterator(); iterator.hasNext();)
52
// {
53
// CollectionItem item = (CollectionItem) iterator.next();
54
// if( item.getProduct() != null)
55
// {
56
// Element asset = child.addElement("collectionitem");
57
// asset.addAttribute("productid", item.getProduct().getId() );
58
// }
59
// }
60
// }
61
// StringWriter out = new StringWriter();
62
// new XmlUtil().saveXml(root, out, userCol.getCharacterEncoding());
63
// StringItem string = new StringItem(userCol.getPath(),out.toString(),userCol.getCharacterEncoding());
64
// string.setMakeVersion(false);
65
// userCol.setContentItem(string);
66
// getPageManager().putPage(userCol);
67
}
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 JavaDoc
80     {
81         Hits hits = getJobSearch().search("status:open");
82         HitTracker tracker = new LuceneHitTracker(hits);
83         return tracker;
84     }
85
86     public Job getJobById(String JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc getCache()
130     {
131         if (fieldCache == null)
132         {
133             fieldCache = new HashMap JavaDoc();
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 JavaDoc dir = new File JavaDoc( 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