KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > documan > dao > DocumentDAO


1 /*
2  * DocumentDAO.java
3  *
4  * Created on 19. August 2003, 14:21
5  */

6
7 package org.contineo.documan.dao;
8
9 import java.util.ArrayList JavaDoc;
10 import java.util.Collection JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import org.apache.log4j.Level;
13 import org.apache.log4j.Logger;
14 import org.apache.ojb.broker.PBKey;
15 import org.apache.ojb.broker.PersistenceBroker;
16 import org.apache.ojb.broker.PersistenceBrokerFactory;
17 import org.apache.ojb.broker.query.Criteria;
18 import org.apache.ojb.broker.query.Query;
19 import org.apache.ojb.broker.query.QueryByCriteria;
20 import org.contineo.admin.Menu;
21 import org.contineo.admin.dao.MenuDAO;
22 import org.contineo.core.LoggingManager;
23 import org.contineo.documan.Document;
24 /**
25  * This class is a DAO-service for documents.
26  * @author Michael Scholz
27  * @version 1.0
28  */

29 public class DocumentDAO {
30
31     /**
32      * @uml.property name="broker"
33      * @uml.associationEnd
34      */

35     private PersistenceBroker broker = null;
36
37     /**
38      * @uml.property name="pbkey"
39      * @uml.associationEnd
40      */

41     private PBKey pbkey;
42
43     /**
44      * @uml.property name="logger"
45      * @uml.associationEnd
46      */

47     private Logger logger;
48
49     
50     /** Creates a new instance of DocumentDAO */
51     public DocumentDAO() {
52         logger = LoggingManager.getLogger(this.getClass());
53         pbkey = new PBKey("contineo");
54     }
55     
56     /**
57      * This method persists a document object.
58      * @param doc Document to be stored.
59      * @return True if successfully stored in a database.
60      */

61     public boolean store(Document doc) {
62         boolean result = true;
63         try {
64             broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey);
65             broker.beginTransaction();
66             broker.store(doc);
67             broker.commitTransaction();
68         }
69         catch (Exception JavaDoc e) {
70             broker.abortTransaction();
71             if (logger.isEnabledFor(Level.ERROR))
72                 logger.error(e.getMessage());
73             result = false;
74         } finally {
75             if (broker != null) broker.close();
76         }
77         return result;
78     }
79
80     /**
81      * This method deletes a document.
82      * @param docid DocID of the document which should be delete.
83      */

84     public boolean delete(int docid) {
85         boolean result = true;
86         try {
87             broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey);
88             Criteria crit = new Criteria();
89             crit.addEqualTo("co_docid", new Integer JavaDoc(docid));
90             Query query = new QueryByCriteria(org.contineo.documan.Document.class, crit);
91             Query query_ve = new QueryByCriteria(org.contineo.documan.Version.class, crit);
92             Query query_ke = new QueryByCriteria(org.contineo.documan.Keywords.class, crit);
93             Query query_ar = new QueryByCriteria(org.contineo.documan.Article.class, crit);
94             Query query_hi = new QueryByCriteria(org.contineo.documan.History.class, crit);
95             broker.beginTransaction();
96             broker.deleteByQuery(query_ve);
97             broker.deleteByQuery(query_ke);
98             broker.deleteByQuery(query_ar);
99             broker.deleteByQuery(query_hi);
100             broker.deleteByQuery(query);
101             broker.commitTransaction();
102         }
103         catch (Exception JavaDoc e) {
104             broker.abortTransaction();
105             if (logger.isEnabledFor(Level.ERROR))
106                 logger.error(e.getMessage());
107             result = false;
108         } finally {
109             if (broker != null) broker.close();
110         }
111         return result;
112     }
113     
114     /**
115      * This method deletes a document.
116      * @param menuid of the document which should be deleted.
117      */

118     public boolean deleteByMenuId(int menuid) {
119         Document doc = findByMenuId(menuid);
120         if (doc != null)
121             return delete(doc.getDocId());
122         else
123             return true;
124     }
125
126     /**
127      * This method finds a document by primarykey.
128      * @param docid Primarykey of the document.
129      * @return Document with given primarykey.
130      */

131     public Document findByPrimaryKey(int docid) {
132         Document doc = new Document();
133         try {
134             broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey);
135             Criteria crit = new Criteria();
136             crit.addEqualTo("co_docid", new Integer JavaDoc(docid));
137             Query query = new QueryByCriteria(org.contineo.documan.Document.class, crit);
138             doc = (Document)broker.getObjectByQuery(query);
139         }
140         catch (Exception JavaDoc e) {
141             if (logger.isEnabledFor(Level.ERROR))
142                 logger.error(e.getMessage());
143         } finally {
144             if (broker != null) broker.close();
145         }
146         return doc;
147     }
148     
149     /**
150      * This method finds a document by its menuid.
151      * @param menuid MenuId of the document.
152      * @return Document with specified menuId.
153      */

154     public Document findByMenuId(int menuid) {
155         Document doc = new Document();
156         try {
157             broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey);
158             Criteria crit = new Criteria();
159             crit.addEqualTo("co_menuid", new Integer JavaDoc(menuid));
160             Query query = new QueryByCriteria(org.contineo.documan.Document.class, crit);
161             doc = (Document)broker.getObjectByQuery(query);
162         }
163         catch (Exception JavaDoc e) {
164             if (logger.isEnabledFor(Level.ERROR))
165                 logger.error(e.getMessage());
166         } finally {
167             if (broker != null) broker.close();
168         }
169         return doc;
170     }
171
172     /**
173      * This method selects all documents.
174      */

175     public Collection JavaDoc findAll() {
176         Collection JavaDoc coll = new ArrayList JavaDoc();
177         try {
178             broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey);
179             QueryByCriteria query = new QueryByCriteria(org.contineo.documan.Document.class);
180             query.setDistinct(true);
181             coll = broker.getCollectionByQuery(query);
182         } catch (Exception JavaDoc e) {
183             if (logger.isEnabledFor(Level.ERROR))
184                 logger.error(e.getMessage());
185         } finally {
186             if (broker != null) broker.close();
187         }
188         return coll;
189     }
190     /**
191      * Finds all documents for an user.
192      * @param username Name of the user.
193      * @return Collection of all documentId required for the specified user.
194      */

195     public Collection JavaDoc findByUserName(String JavaDoc username) {
196         Collection JavaDoc<Integer JavaDoc> coll = null;
197         try {
198             broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey);
199             MenuDAO menuDao = new MenuDAO();
200             Collection JavaDoc menus = menuDao.findByUserName(username);
201             Collection JavaDoc<Integer JavaDoc> coll2 = new ArrayList JavaDoc<Integer JavaDoc>(menus.size());
202             Iterator JavaDoc iter = menus.iterator();
203             while (iter.hasNext()) {
204                 Menu menu = (Menu)iter.next();
205                 coll2.add(new Integer JavaDoc(menu.getMenuId()));
206             }
207             Criteria crit = new Criteria();
208             crit.addIn("org.contineo.documan.Document.menu.menuId", coll2);
209             QueryByCriteria query = new QueryByCriteria(org.contineo.documan.Document.class, crit, true);
210             Collection JavaDoc coll3 = broker.getCollectionByQuery(query);
211             coll = new ArrayList JavaDoc<Integer JavaDoc>(coll3.size());
212             Iterator JavaDoc iter2 = coll3.iterator();
213             while (iter2.hasNext()) {
214                 Document doc = (Document)iter2.next();
215                 coll.add(new Integer JavaDoc(doc.getDocId()));
216             }
217         }
218         catch (Exception JavaDoc e) {
219             if (logger.isEnabledFor(Level.ERROR))
220                 logger.error(e.getMessage());
221         }
222         return coll;
223     }
224     
225     /**
226      * This method finds all MenuIds by a keyword.
227      * @param keyword Keyword of the document.
228      * @return Document with specified keyword.
229      */

230     public Collection JavaDoc findMenuIdByKeyword(String JavaDoc keyword) {
231         Collection JavaDoc<Integer JavaDoc> coll = null;
232         try {
233             broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey);
234             Criteria crit = new Criteria();
235             crit.addEqualTo("org.contineo.documan.Document.keywords.keyword", keyword);
236             Query query = new QueryByCriteria(org.contineo.documan.Document.class, crit);
237             Collection JavaDoc tempcoll = broker.getCollectionByQuery(query);
238             if (tempcoll.size() > 0) {
239                 Iterator JavaDoc iter = tempcoll.iterator();
240                 coll = new ArrayList JavaDoc<Integer JavaDoc>();
241                 while (iter.hasNext()) {
242                     Document doc = (Document)iter.next();
243                     coll.add(new Integer JavaDoc(doc.getMenuId()));
244                 }
245             }
246         }
247         catch (Exception JavaDoc e) {
248             if (logger.isEnabledFor(Level.ERROR))
249                 logger.error(e.getMessage());
250         } finally {
251             if (broker != null) broker.close();
252         }
253         return coll;
254     }
255 }
256
Popular Tags