1 91 package com.ivata.groupware.admin.setting.right; 92 93 import java.util.Collection ; 94 import java.util.Iterator ; 95 96 import com.ivata.groupware.admin.security.server.SecuritySession; 97 import com.ivata.groupware.admin.setting.SettingDO; 98 import com.ivata.groupware.business.BusinessLogic; 99 import com.ivata.groupware.business.addressbook.person.group.GroupConstants; 100 import com.ivata.groupware.business.addressbook.person.group.GroupDO; 101 import com.ivata.groupware.business.addressbook.person.group.right.RightConstants; 102 import com.ivata.groupware.business.addressbook.person.group.right.RightDO; 103 import com.ivata.groupware.business.addressbook.person.group.right.detail.RightDetailDO; 104 import com.ivata.groupware.container.persistence.QueryPersistenceManager; 105 import com.ivata.mask.persistence.PersistenceSession; 106 import com.ivata.mask.util.SystemException; 107 108 109 132 public class SettingsRightsImpl extends BusinessLogic implements SettingsRights { 133 private QueryPersistenceManager persistenceManager; 134 public SettingsRightsImpl(QueryPersistenceManager persistenceManager) { 135 this.persistenceManager = persistenceManager; 136 } 137 138 146 public void addAmendRightForSetting(final SecuritySession securitySession, 147 final String settingName) 148 throws SystemException { 149 PersistenceSession persistenceSession = persistenceManager.openSession(securitySession); 150 try { 151 SettingDO setting = (SettingDO) 154 persistenceManager.findInstance(persistenceSession, 155 "adminSettingByName", new Object [] {settingName}); 156 Integer settingId = setting.getId(); 157 158 RightDetailDO amendDetail = (RightDetailDO) 160 persistenceManager.findByPrimaryKey(persistenceSession, 161 RightDetailDO.class, RightConstants.DETAIL_SETTING_USER); 162 163 Collection amendRight = 164 persistenceManager.find(persistenceSession, 165 "rightByAccessDetailTargetId", 166 new Object [] {RightConstants.ACCESS_AMEND, 167 RightConstants.DETAIL_SETTING_USER, 168 settingId}); 169 170 if (amendRight.isEmpty()) { 172 GroupDO userGroup = (GroupDO) 173 persistenceManager.findByPrimaryKey(persistenceSession, 174 GroupDO.class, GroupConstants.USER_GROUP); 175 176 RightDO right = new RightDO(); 177 right.setAccess(RightConstants.ACCESS_AMEND); 178 right.setDetail(amendDetail); 179 180 right.setGroup(userGroup); 181 right.setTargetId(settingId); 182 183 persistenceManager.add(persistenceSession, right); 184 } 185 } catch (Exception e) { 186 persistenceSession.cancel(); 187 throw new SystemException(e); 188 } finally { 189 persistenceSession.close(); 190 } 191 } 192 193 203 public boolean canAmendSetting(final SecuritySession securitySession, 204 final String settingName) 205 throws SystemException { 206 PersistenceSession persistenceSession = persistenceManager.openSession(securitySession); 207 try { 208 SettingDO setting = (SettingDO) 211 persistenceManager.findInstance(persistenceSession, 212 "adminSettingByName", new Object [] {settingName}); 213 Integer settingId = setting.getId(); 214 215 216 Collection amendRight = 217 persistenceManager.find(persistenceSession, 218 "rightByAccessDetailTargetId", 219 new Object [] {RightConstants.ACCESS_AMEND, 220 RightConstants.DETAIL_SETTING_USER, 221 settingId}); 222 223 return !amendRight.isEmpty(); 225 } catch (Exception e) { 226 persistenceSession.cancel(); 227 throw new SystemException(e); 228 } finally { 229 persistenceSession.close(); 230 } 231 } 232 233 234 243 public boolean canAmendSystemSettings(final SecuritySession securitySession) 244 throws SystemException { 245 PersistenceSession persistenceSession = persistenceManager.openSession(securitySession); 246 try { 247 Collection targetIds = persistenceManager.find(persistenceSession, 248 "rightByUserNameAccessDetail", 249 new Object [] 250 { 251 securitySession.getUser().getName(), 252 RightConstants.ACCESS_AMEND, 253 RightConstants.DETAIL_SETTING_SYSTEM 254 }); 255 256 return !targetIds.isEmpty(); 259 } catch (Exception e) { 260 persistenceSession.cancel(); 261 throw new SystemException(e); 262 } finally { 263 persistenceSession.close(); 264 } 265 } 266 267 275 public void removeAmendRightForSetting(final SecuritySession securitySession, 276 final String settingName) 277 throws SystemException { 278 PersistenceSession persistenceSession = persistenceManager.openSession(securitySession); 279 try { 280 SettingDO setting = (SettingDO) 283 persistenceManager.findInstance(persistenceSession, 284 "adminSettingByName", new Object [] {settingName}); 285 Integer settingId = setting.getId(); 286 287 RightDetailDO amendDetail = (RightDetailDO) 289 persistenceManager.findByPrimaryKey(persistenceSession, 290 RightDetailDO.class, RightConstants.DETAIL_SETTING_USER); 291 Collection amendRight = 292 persistenceManager.find(persistenceSession, 293 "rightByAccessDetailTargetId", 294 new Object [] {RightConstants.ACCESS_AMEND, 295 RightConstants.DETAIL_SETTING_USER, 296 settingId}); 297 298 for (Iterator i = amendRight.iterator(); i.hasNext();) { 300 RightDO currentRight = (RightDO) i.next(); 301 persistenceManager.remove(persistenceSession, currentRight); 302 } 303 } catch (Exception e) { 304 persistenceSession.cancel(); 305 throw new SystemException(e); 306 } finally { 307 persistenceSession.close(); 308 } 309 } 310 } 311 | Popular Tags |