/*
* 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.control.SpringServletAccess;
import org.akaza.openclinica.control.core.SecureController;
import org.akaza.openclinica.control.form.FormProcessor;
import org.akaza.openclinica.domain.rule.RulesPostImportContainer;
import org.akaza.openclinica.i18n.core.LocaleResolver;
import org.akaza.openclinica.service.rule.RuleSetServiceInterface;
import org.akaza.openclinica.view.Page;
import org.akaza.openclinica.web.InsufficientPermissionException;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Locale;
/**
* View the uploaded data and verify what is going to be saved into the system
* and what is not.
*
* @author Krikor Krumlian
*/
@SuppressWarnings("serial")
public class VerifyImportedRuleServlet extends SecureController {
Locale locale;
RuleSetServiceInterface ruleSetService;
@Override
public void processRequest() throws Exception {
String action = request.getParameter("action");
FormProcessor fp = new FormProcessor(request);
// checks which module the requests are from
/*
String module = fp.getString(MODULE);
request.setAttribute(MODULE, module);
resetPanel();
panel.setStudyInfoShown(false);
panel.setOrderedData(true);
setToPanel(resword.getString("create_CRF"), respage.getString("br_create_new_CRF_entering"));
setToPanel(resword.getString("create_CRF_version"), respage.getString("br_create_new_CRF_uploading"));
setToPanel(resword.getString("revise_CRF_version"), respage.getString("br_if_you_owner_CRF_version"));
setToPanel(resword.getString("CRF_spreadsheet_template"), respage.getString("br_download_blank_CRF_spreadsheet_from"));
setToPanel(resword.getString("example_CRF_br_spreadsheets"), respage.getString("br_download_example_CRF_instructions_from"));
*/
if ("confirm".equalsIgnoreCase(action)) {
// session.setAttribute("crf", new CRFBean());
RulesPostImportContainer rulesContainer = (RulesPostImportContainer) session.getAttribute("importedData");
logger.info("Size of ruleDefs : " + rulesContainer.getRuleDefs().size());
logger.info("Size of ruleSets : " + rulesContainer.getRuleSets().size());
forwardPage(Page.VERIFY_RULES_IMPORT);
}
if ("save".equalsIgnoreCase(action)) {
RulesPostImportContainer rulesContainer = (RulesPostImportContainer) session.getAttribute("importedData");
getRuleSetService().saveImport(rulesContainer);
MessageFormat mf = new MessageFormat("");
mf.applyPattern(resword.getString("successful_rule_upload"));
Object[] arguments =
{ rulesContainer.getValidRuleDefs().size() + rulesContainer.getDuplicateRuleDefs().size(),
rulesContainer.getValidRuleSetDefs().size() + rulesContainer.getDuplicateRuleSetDefs().size() };
addPageMessage(mf.format(arguments));
ArrayList pageMessages = (ArrayList) request.getAttribute(PAGE_MESSAGE);
session.setAttribute("pageMessages", pageMessages);
response.sendRedirect(request.getContextPath() + Page.MANAGE_STUDY_MODULE.getFileName());
}
}
private RuleSetServiceInterface getRuleSetService() {
ruleSetService =
this.ruleSetService != null ? ruleSetService : (RuleSetServiceInterface) SpringServletAccess.getApplicationContext(context).getBean(
"ruleSetService");
// TODO: Add getRequestURLMinusServletPath(),getContextPath()
return ruleSetService;
}
@Override
public void mayProceed() throws InsufficientPermissionException {
locale = LocaleResolver.getLocale(request);
if (ub.isSysAdmin()) {
return;
}
Role r = currentRole.getRole();
if (r.equals(Role.STUDYDIRECTOR) || r.equals(Role.COORDINATOR) || r.equals(Role.INVESTIGATOR) || r.equals(Role.RESEARCHASSISTANT)|| r.equals(Role.RESEARCHASSISTANT2)) {
return;
}
addPageMessage(respage.getString("no_have_correct_privilege_current_study") + respage.getString("change_study_contact_sysadmin"));
throw new InsufficientPermissionException(Page.MENU_SERVLET, resexception.getString("may_not_submit_data"), "1");
}
}