/* * 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 java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; 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.core.CoreResources; import org.akaza.openclinica.domain.Status; import org.akaza.openclinica.domain.rule.RuleSetBean; 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 ViewRuleSetServlet extends SecureController { private static String RULESET_ID = "ruleSetId"; private static String RULESET = "ruleSet"; private static String TARGET = "target"; private static String RULE_OID = "ruleOid"; private RuleSetServiceInterface ruleSetService; /** * */ @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.MENU_SERVLET, resexception.getString("not_study_director"), "1"); } @Override public void processRequest() throws Exception { String ruleSetId = request.getParameter(RULESET_ID); if (ruleSetId == null) { addPageMessage(respage.getString("please_choose_a_CRF_to_view")); forwardPage(Page.CRF_LIST); } else { RuleSetBean ruleSetBean = getRuleSetService().getRuleSetById(currentStudy, ruleSetId); Boolean firstTime = true; String validRuleSetRuleIds = ""; for (int j = 0; j < ruleSetBean.getRuleSetRules().size(); j++) { RuleSetRuleBean rsr = ruleSetBean.getRuleSetRules().get(j); if (rsr.getStatus() == Status.AVAILABLE) { if (firstTime) { validRuleSetRuleIds += rsr.getId(); firstTime = false; } else { validRuleSetRuleIds += "," + rsr.getId(); } } } CoreResources core = (CoreResources) SpringServletAccess.getApplicationContext(context).getBean("coreResources"); String designerUrl = core.getField("designer.url")+"access?host="+getHostPathFromSysUrl(core.getField("sysURL.base"),request.getContextPath())+"&app="+getContextPath(request); UserAccountBean currentUser = (UserAccountBean) request.getSession().getAttribute("userBean"); request.setAttribute("designerUrl", designerUrl); request.setAttribute("currentStudy", currentStudy.getOid()); request.setAttribute("providerUser", currentUser.getName()); request.setAttribute("validRuleSetRuleIds", validRuleSetRuleIds); request.setAttribute("ruleSetRuleBeans", orderRuleSetRulesByStatus(ruleSetBean)); request.setAttribute(RULESET, ruleSetBean); forwardPage(Page.VIEW_RULES); } } private String getHostPathFromSysUrl(String sysURL,String contextPath) { return sysURL.replaceAll(contextPath+"/", ""); } public String getContextPath(HttpServletRequest request) { String contextPath = request.getContextPath().replaceAll("/", ""); return contextPath; } List<RuleSetRuleBean> orderRuleSetRulesByStatus(RuleSetBean ruleSet) { ArrayList<RuleSetRuleBean> availableRuleSetRules = new ArrayList<RuleSetRuleBean>(); ArrayList<RuleSetRuleBean> nonAvailableRuleSetRules = new ArrayList<RuleSetRuleBean>(); for (RuleSetRuleBean ruleSetRuleBean : ruleSet.getRuleSetRules()) { if (ruleSetRuleBean.getStatus() == Status.AVAILABLE) { availableRuleSetRules.add(ruleSetRuleBean); } else { nonAvailableRuleSetRules.add(ruleSetRuleBean); } } availableRuleSetRules.addAll(nonAvailableRuleSetRules); return availableRuleSetRules; } @Override protected String getAdminServlet() { if (ub.isSysAdmin()) { return SecureController.ADMIN_SERVLET_CODE; } else { return ""; } } private RuleSetServiceInterface getRuleSetService() { ruleSetService = this.ruleSetService != null ? ruleSetService : (RuleSetServiceInterface) SpringServletAccess.getApplicationContext(context).getBean( "ruleSetService"); // TODO: Add getRequestURLMinusServletPath(),getContextPath() return ruleSetService; } }