/* * OpenClinica is distributed under the * GNU Lesser General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * * Copyright 2003-2008 Akaza Research */ package org.akaza.openclinica.control.submit; import org.akaza.openclinica.bean.core.Role; import org.akaza.openclinica.bean.login.UserAccountBean; import org.akaza.openclinica.control.SpringServletAccess; import org.akaza.openclinica.control.core.SecureController; import org.akaza.openclinica.dao.hibernate.RuleSetDao; import org.akaza.openclinica.dao.hibernate.RuleSetRuleAuditDao; import org.akaza.openclinica.dao.hibernate.RuleSetRuleDao; import org.akaza.openclinica.domain.Status; import org.akaza.openclinica.domain.rule.RuleSetBean; import org.akaza.openclinica.domain.rule.RuleSetRuleAuditBean; import org.akaza.openclinica.domain.rule.RuleSetRuleBean; import org.akaza.openclinica.service.rule.RuleSetServiceInterface; import org.akaza.openclinica.view.Page; import org.akaza.openclinica.web.InsufficientPermissionException; /** * @author Krikor Krumlian * */ public class UpdateRuleSetRuleServlet extends SecureController { private static final long serialVersionUID = 1L; RuleSetDao ruleSetDao; RuleSetServiceInterface ruleSetService; RuleSetRuleDao ruleSetRuleDao; RuleSetRuleAuditDao ruleSetRuleAuditDao; private static String RULESET_ID = "ruleSetId"; private static String RULESETRULE_ID = "ruleSetRuleId"; private static String RULESET = "ruleSet"; private static String ACTION = "action"; @Override public void mayProceed() throws InsufficientPermissionException { if (ub.isSysAdmin()) { return; } if (currentRole.getRole().equals(Role.STUDYDIRECTOR) || currentRole.getRole().equals(Role.COORDINATOR)) { return; } addPageMessage(respage.getString("no_have_correct_privilege_current_study") + respage.getString("change_study_contact_sysadmin")); throw new InsufficientPermissionException(Page.LIST_DEFINITION_SERVLET, resexception.getString("not_study_director"), "1"); } @Override public void processRequest() throws Exception { String ruleSetId = request.getParameter(RULESET_ID); String ruleSetRuleId = request.getParameter(RULESETRULE_ID); String source = request.getParameter("source"); String action = request.getParameter(ACTION); Status status = null; String pageMessage = ""; if (ruleSetRuleId != null) { RuleSetRuleBean ruleSetRule = getRuleSetRuleDao().findById(Integer.valueOf(ruleSetRuleId)); if (ruleSetRuleId != null && action.equals("remove")) { status = Status.DELETED; updateRuleSetRule(ruleSetRule, status); pageMessage = "view_rules_remove_confirmation"; } else if (ruleSetRuleId != null && action.equals("restore")) { status = Status.AVAILABLE; ruleSetRule.getRuleSetBean().setStatus(Status.AVAILABLE); updateRuleSetRule(ruleSetRule, status); pageMessage = "view_rules_restore_confirmation"; } } if (ruleSetRuleId == null && ruleSetId != null && action.equals("remove")) { RuleSetBean rs = getRuleSetDao().findById(Integer.valueOf(ruleSetId)); for (RuleSetRuleBean theRuleSetRule : rs.getRuleSetRules()) { if (theRuleSetRule.getStatus() != Status.DELETED) { status = Status.DELETED; updateRuleSetRule(theRuleSetRule, status); } } pageMessage = "view_rules_remove_confirmation"; } addPageMessage(resword.getString(pageMessage)); if (source != null && source.equals("ViewRuleSet")) { context.getRequestDispatcher("/ViewRuleSet?ruleSetId=" + ruleSetId).forward(request, response); } else { forwardPage(Page.LIST_RULE_SETS_SERVLET); } } private void updateRuleSetRule(RuleSetRuleBean ruleSetRule, Status status) { ruleSetRule.setStatus(status); ruleSetRule.setUpdater(ub); ruleSetRule = getRuleSetRuleDao().saveOrUpdate(ruleSetRule); createRuleSetRuleAuditBean(ruleSetRule, ub, status); } private void createRuleSetRuleAuditBean(RuleSetRuleBean ruleSetRuleBean, UserAccountBean ub, Status status) { RuleSetRuleAuditBean ruleSetRuleAuditBean = new RuleSetRuleAuditBean(); ruleSetRuleAuditBean.setRuleSetRuleBean(ruleSetRuleBean); ruleSetRuleAuditBean.setUpdater(ub); ruleSetRuleAuditBean.setStatus(status); getRuleSetRuleAuditDao().saveOrUpdate(ruleSetRuleAuditBean); } private RuleSetDao getRuleSetDao() { ruleSetDao = this.ruleSetDao != null ? ruleSetDao : (RuleSetDao) SpringServletAccess.getApplicationContext(context).getBean("ruleSetDao"); return ruleSetDao; } private RuleSetRuleDao getRuleSetRuleDao() { ruleSetRuleDao = this.ruleSetRuleDao != null ? ruleSetRuleDao : (RuleSetRuleDao) SpringServletAccess.getApplicationContext(context).getBean("ruleSetRuleDao"); return ruleSetRuleDao; } private RuleSetRuleAuditDao getRuleSetRuleAuditDao() { ruleSetRuleAuditDao = this.ruleSetRuleAuditDao != null ? ruleSetRuleAuditDao : (RuleSetRuleAuditDao) SpringServletAccess.getApplicationContext(context).getBean( "ruleSetRuleAuditDao"); return ruleSetRuleAuditDao; } }