1 package org.contineo.admin.dao; 2 3 import java.util.ArrayList ; 4 import java.util.Collection ; 5 import java.util.Iterator ; 6 import org.apache.log4j.Level; 7 import org.apache.log4j.Logger; 8 import org.apache.ojb.broker.PBKey; 9 import org.apache.ojb.broker.PersistenceBroker; 10 import org.apache.ojb.broker.PersistenceBrokerFactory; 11 import org.apache.ojb.broker.query.Criteria; 12 import org.apache.ojb.broker.query.Query; 13 import org.apache.ojb.broker.query.QueryByCriteria; 14 import org.contineo.admin.Group; 15 import org.contineo.admin.MenuGroup; 16 import org.contineo.core.LoggingManager; 17 18 24 public class GroupDAO { 25 26 30 private PersistenceBroker broker = null; 31 32 36 private PBKey pbkey; 37 38 42 private Logger logger; 43 44 45 46 public GroupDAO() { 47 logger = LoggingManager.getLogger(this.getClass()); 48 pbkey = new PBKey("contineo"); 49 } 50 51 55 public boolean insert(Group group) { 56 boolean result = true; 57 if (group == null) 58 return false; 59 try { 60 broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey); 61 MenuGroupDAO mgdao = new MenuGroupDAO(); 62 String parentGroup = group.getParentGroup(); 63 if (parentGroup != null && !parentGroup.equals("")) { 64 Collection menus = mgdao.findByGroupName(parentGroup); 65 Iterator miter = menus.iterator(); 66 broker.beginTransaction(); 67 broker.store(group); 68 while (miter.hasNext()) { 69 MenuGroup mg = (MenuGroup)miter.next(); 70 addGroupAccess(group, mg.getMenuId(), mg.getWriteEnable()); 71 } 72 broker.commitTransaction(); 73 } else { 74 broker.beginTransaction(); 75 broker.store(group); 76 77 addGroupAccess(group, 1, 0); addGroupAccess(group, 4, 0); addGroupAccess(group, 5, 1); addGroupAccess(group, 13, 0); addGroupAccess(group, 14, 0); addGroupAccess(group, 15, 0); addGroupAccess(group, 16, 0); addGroupAccess(group, 19, 0); addGroupAccess(group, 20, 0); addGroupAccess(group, 21, 0); addGroupAccess(group, 22, 0); addGroupAccess(group, 23, 0); addGroupAccess(group, 24, 0); addGroupAccess(group, 26, 1); addGroupAccess(group, 28, 0); broker.commitTransaction(); 94 } 95 } 96 catch (Exception e) { 97 broker.abortTransaction(); 98 if (logger.isEnabledFor(Level.ERROR)) 99 logger.error(e.getMessage()); 100 result = false; 101 } finally { 102 if (broker != null) broker.close(); 103 } 104 return result; 105 } 106 107 113 private void addGroupAccess(Group group, int menuId, int writeable) { 114 if (broker == null) 115 return; 116 MenuGroup mgroup = new MenuGroup(); 117 mgroup.setMenuId(menuId); 118 mgroup.setGroupName(group.getGroupName()); 119 mgroup.setWriteEnable(writeable); 120 broker.store(mgroup); 121 } 122 123 127 public boolean store(Group group) { 128 boolean result = true; 129 try { 130 broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey); 131 broker.beginTransaction(); 132 broker.store(group); 133 broker.commitTransaction(); 134 } 135 catch (Exception e) { 136 broker.abortTransaction(); 137 if (logger.isEnabledFor(Level.ERROR)) 138 logger.error(e.getMessage()); 139 result = false; 140 } finally { 141 if (broker != null) broker.close(); 142 } 143 return result; 144 } 145 146 151 public boolean delete(String groupname) { 152 boolean result = true; 153 try { 154 broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey); 155 Criteria crit = new Criteria(); 156 crit.addEqualTo("co_groupname", groupname); 157 Query query = new QueryByCriteria(org.contineo.admin.Group.class, crit); 158 Query mgquery = new QueryByCriteria(org.contineo.admin.MenuGroup.class, crit); 159 Query ugquery = new QueryByCriteria(org.contineo.admin.UserGroup.class, crit); 160 broker.beginTransaction(); 161 broker.deleteByQuery(ugquery); 162 broker.deleteByQuery(mgquery); 163 broker.deleteByQuery(query); 164 broker.commitTransaction(); 165 } 166 catch (Exception e) { 167 broker.abortTransaction(); 168 if (logger.isEnabledFor(Level.ERROR)) 169 logger.error(e.getMessage()); 170 result = false; 171 } finally { 172 if (broker != null) broker.close(); 173 } 174 return result; 175 } 176 177 182 public Group findByPrimaryKey(String groupname) { 183 Group group = new Group(); 184 try { 185 broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey); 186 Criteria crit = new Criteria(); 187 crit.addEqualTo("co_groupname", groupname); 188 Query query = new QueryByCriteria(org.contineo.admin.Group.class, crit); 189 group = (Group)broker.getObjectByQuery(query); 190 } 191 catch (Exception e) { 192 if (logger.isEnabledFor(Level.ERROR)) 193 logger.error(e.getMessage()); 194 } finally { 195 if (broker != null) broker.close(); 196 } 197 return group; 198 } 199 200 205 public Collection findByGroupName(String groupname) { 206 Collection coll = null; 207 try { 208 broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey); 209 broker.clearCache(); 210 Criteria crit = new Criteria(); 211 crit.addLike("co_groupname", groupname); 212 Query query = new QueryByCriteria(org.contineo.admin.Group.class, crit); 213 coll = broker.getCollectionByQuery(query); 214 } 215 catch (Exception e) { 216 if (logger.isEnabledFor(Level.ERROR)) 217 logger.error(e.getMessage()); 218 } finally { 219 if (broker != null) broker.close(); 220 } 221 return coll; 222 } 223 224 227 public Collection findAll() { 228 Collection coll = null; 229 try { 230 broker = PersistenceBrokerFactory.createPersistenceBroker(pbkey); 231 broker.clearCache(); 232 Query query = new QueryByCriteria(org.contineo.admin.Group.class, new Criteria()); 233 coll = broker.getCollectionByQuery(query); 234 } 235 catch (Exception e) { 236 if (logger.isEnabledFor(Level.ERROR)) 237 logger.error(e.getMessage()); 238 } finally { 239 if (broker != null) broker.close(); 240 } 241 return coll; 242 } 243 244 247 public Collection findAllGroupNames() { 248 Collection <String > coll = new ArrayList <String >(); 249 try { 250 Collection coll2 = findAll(); 251 Iterator iter = coll2.iterator(); 252 while (iter.hasNext()) { 253 Group group = (Group)iter.next(); 254 coll.add(group.getGroupName()); 255 } 256 } 257 catch (Exception e) { 258 if (logger.isEnabledFor(Level.ERROR)) 259 logger.error(e.getMessage()); 260 } 261 return coll; 262 } 263 264 268 public boolean existsGroup(String groupname) { 269 boolean result = false; 270 try { 271 Group group = findByPrimaryKey(groupname); 272 if (group != null && group.getGroupName().equals(groupname)) 273 result = true; 274 } 275 catch (Exception e) { 276 if (logger.isEnabledFor(Level.WARN)) 277 logger.warn(e.getMessage()); 278 result = true; 279 } 280 return result; 281 } 282 } 283 | Popular Tags |