1 6 7 package org.contineo.documan.dao; 8 9 import java.util.ArrayList ; 10 import java.util.Collection ; 11 import java.util.Iterator ; 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 29 public class DocumentDAO { 30 31 35 private PersistenceBroker broker = null; 36 37 41 private PBKey pbkey; 42 43 47 private Logger logger; 48 49 50 51 public DocumentDAO() { 52 logger = LoggingManager.getLogger(this.getClass()); 53 pbkey = new PBKey("contineo"); 54 } 55 56 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 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 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 (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 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 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 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 (docid)); 137 Query query = new QueryByCriteria(org.contineo.documan.Document.class, crit); 138 doc = (Document)broker.getObjectByQuery(query); 139 } 140 catch (Exception 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 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 (menuid)); 160 Query query = new QueryByCriteria(org.contineo.documan.Document.class, crit); 161 doc = (Document)broker.getObjectByQuery(query); 162 } 163 catch (Exception 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 175 public Collection findAll() { 176 Collection coll = new ArrayList (); 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 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 195 public Collection findByUserName(String username) { 196 Collection <Integer > coll = null; 197 try { 198 broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey); 199 MenuDAO menuDao = new MenuDAO(); 200 Collection menus = menuDao.findByUserName(username); 201 Collection <Integer > coll2 = new ArrayList <Integer >(menus.size()); 202 Iterator iter = menus.iterator(); 203 while (iter.hasNext()) { 204 Menu menu = (Menu)iter.next(); 205 coll2.add(new Integer (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 coll3 = broker.getCollectionByQuery(query); 211 coll = new ArrayList <Integer >(coll3.size()); 212 Iterator iter2 = coll3.iterator(); 213 while (iter2.hasNext()) { 214 Document doc = (Document)iter2.next(); 215 coll.add(new Integer (doc.getDocId())); 216 } 217 } 218 catch (Exception e) { 219 if (logger.isEnabledFor(Level.ERROR)) 220 logger.error(e.getMessage()); 221 } 222 return coll; 223 } 224 225 230 public Collection findMenuIdByKeyword(String keyword) { 231 Collection <Integer > 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 tempcoll = broker.getCollectionByQuery(query); 238 if (tempcoll.size() > 0) { 239 Iterator iter = tempcoll.iterator(); 240 coll = new ArrayList <Integer >(); 241 while (iter.hasNext()) { 242 Document doc = (Document)iter.next(); 243 coll.add(new Integer (doc.getMenuId())); 244 } 245 } 246 } 247 catch (Exception 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
|