use of org.akaza.openclinica.control.form.Validator in project OpenClinica by OpenClinica.
the class ConfigureServlet method processRequest.
@SuppressWarnings("unchecked")
@Override
protected void processRequest() throws Exception {
FormProcessor fp = new FormProcessor(request);
if (!fp.isSubmitted()) {
loadPresetValuesFromBean(fp);
setPresetValues(fp.getPresetValues());
forwardPage(Page.CONFIGURATION);
} else {
Validator v = new Validator(request);
v.addValidation("lockcount", Validator.IS_AN_INTEGER);
v.addValidation("lockcount", Validator.NO_BLANKS);
v.addValidation("lockcount", Validator.IS_IN_RANGE, 1, 25);
HashMap errors = v.validate();
if (!errors.isEmpty()) {
loadPresetValuesFromForm(fp);
setPresetValues(fp.getPresetValues());
setInputMessages(errors);
forwardPage(Page.CONFIGURATION);
} else {
ConfigurationBean userLockSwitch = getConfigurationDao().findByKey("user.lock.switch");
ConfigurationBean userLockAllowedFailedConsecutiveLoginAttempts = getConfigurationDao().findByKey("user.lock.allowedFailedConsecutiveLoginAttempts");
userLockSwitch.setValue(fp.getString("lockswitch"));
userLockAllowedFailedConsecutiveLoginAttempts.setValue(fp.getString("lockcount"));
getConfigurationDao().saveOrUpdate(userLockSwitch);
getConfigurationDao().saveOrUpdate(userLockAllowedFailedConsecutiveLoginAttempts);
addPageMessage(respage.getString("lockout_changes_have_been_saved"));
forwardPage(Page.LIST_USER_ACCOUNTS_SERVLET);
}
}
}
use of org.akaza.openclinica.control.form.Validator in project OpenClinica by OpenClinica.
the class CreateJobExportServlet method validateForm.
public HashMap validateForm(FormProcessor fp, HttpServletRequest request, String[] triggerNames, String properName) {
Validator v = new Validator(request);
v.addValidation(JOB_NAME, Validator.NO_BLANKS);
v.addValidation(JOB_NAME, Validator.NO_LEADING_OR_TRAILING_SPACES);
// need to be unique too
v.addValidation(JOB_DESC, Validator.NO_BLANKS);
v.addValidation(EMAIL, Validator.IS_A_EMAIL);
v.addValidation(PERIOD, Validator.NO_BLANKS);
v.addValidation(DATE_START_JOB + "Date", Validator.IS_A_DATE);
// v.addValidation(DATE_START_JOB + "Date", new Date(), Validator.DATE_IS_AFTER_OR_EQUAL);
// TODO job names will have to be unique, tbh
int formatId = fp.getInt(FORMAT_ID);
Date jobDate = fp.getDateTime(DATE_START_JOB);
HashMap errors = v.validate();
if (formatId == 0) {
// throw an error here, at least one should work
// errors.put(TAB, "Error Message - Pick one of the below");
v.addError(errors, FORMAT_ID, "Please pick at least one.");
}
for (String triggerName : triggerNames) {
if (triggerName.equals(fp.getString(JOB_NAME)) && !triggerName.equals(properName)) {
v.addError(errors, JOB_NAME, "A job with that name already exists. Please pick another name.");
}
}
if (jobDate.before(new Date())) {
v.addError(errors, DATE_START_JOB + "Date", "This date needs to be later than the present time.");
}
// @pgawade 20-April-2011 Limit the job description to 250 characters
String jobDesc = fp.getString(JOB_DESC);
if (null != jobDesc && !jobDesc.equals("")) {
if (jobDesc.length() > 250) {
v.addError(errors, JOB_DESC, "A job description cannot be more than 250 characters.");
}
}
return errors;
}
use of org.akaza.openclinica.control.form.Validator in project OpenClinica by OpenClinica.
the class ConfigurePasswordRequirementsServlet method processRequest.
@Override
protected void processRequest() throws Exception {
FormProcessor fp = new FormProcessor(request);
ConfigurationDao configurationDao = SpringServletAccess.getApplicationContext(context).getBean(ConfigurationDao.class);
PasswordRequirementsDao passwordRequirementsDao = new PasswordRequirementsDao(configurationDao);
if (!fp.isSubmitted()) {
setPresetValues(new HashMap<String, Object>(passwordRequirementsDao.configs()));
forwardPage(Page.CONFIGURATION_PASSWORD_REQUIREMENTS);
} else {
Validator v = new Validator(request);
for (String key : passwordRequirementsDao.intConfigKeys()) {
v.addValidation(key, Validator.IS_AN_INTEGER);
}
HashMap<?, ?> errors = v.validate();
int minChars = fp.getInt("pwd.chars.min");
int maxChars = fp.getInt("pwd.chars.max");
if (minChars > 0 && maxChars > 0 && maxChars < minChars) {
Validator.addError(errors, "pwd.chars.min", resexception.getString("pwd_min_greater_than_max"));
}
if (errors.isEmpty()) {
passwordRequirementsDao.setHasLower(Boolean.valueOf(fp.getString("pwd.chars.case.lower")));
passwordRequirementsDao.setHasUpper(Boolean.valueOf(fp.getString("pwd.chars.case.upper")));
passwordRequirementsDao.setHasDigits(Boolean.valueOf(fp.getString("pwd.chars.digits")));
passwordRequirementsDao.setHasSpecials(Boolean.valueOf(fp.getString("pwd.chars.specials")));
passwordRequirementsDao.setMinLength(fp.getInt("pwd.chars.min"));
passwordRequirementsDao.setMaxLength(fp.getInt("pwd.chars.max"));
passwordRequirementsDao.setExpirationDays(fp.getInt("pwd.expiration.days"));
passwordRequirementsDao.setChangeRequired(fp.getInt("pwd.change.required"));
addPageMessage(respage.getString("password_req_changes_have_been_saved"));
forwardPage(Page.LIST_USER_ACCOUNTS_SERVLET);
} else {
setPresetValues(submittedValues(passwordRequirementsDao, fp));
setInputMessages(errors);
forwardPage(Page.CONFIGURATION_PASSWORD_REQUIREMENTS);
}
}
}
use of org.akaza.openclinica.control.form.Validator in project OpenClinica by OpenClinica.
the class DefineStudyEventServlet method confirmWholeDefinition.
/**
* Validates the entire definition
*
* @throws Exception
*/
private void confirmWholeDefinition() throws Exception {
Validator v = new Validator(request);
FormProcessor fp = new FormProcessor(request);
StudyEventDefinitionBean sed = (StudyEventDefinitionBean) session.getAttribute("definition");
ArrayList eventDefinitionCRFs = new ArrayList();
CRFVersionDAO cvdao = new CRFVersionDAO(sm.getDataSource());
for (int i = 0; i < sed.getCrfs().size(); i++) {
EventDefinitionCRFBean edcBean = new EventDefinitionCRFBean();
int crfId = fp.getInt("crfId" + i);
int defaultVersionId = fp.getInt("defaultVersionId" + i);
edcBean.setCrfId(crfId);
edcBean.setDefaultVersionId(defaultVersionId);
CRFVersionBean defaultVersion = (CRFVersionBean) cvdao.findByPK(edcBean.getDefaultVersionId());
edcBean.setDefaultVersionName(defaultVersion.getName());
String crfName = fp.getString("crfName" + i);
// String crfLabel = fp.getString("crfLabel" + i);
edcBean.setCrfName(crfName);
// edcBean.setCrfLabel(crfLabel);
String requiredCRF = fp.getString("requiredCRF" + i);
String doubleEntry = fp.getString("doubleEntry" + i);
String decisionCondition = fp.getString("decisionCondition" + i);
String electronicSignature = fp.getString("electronicSignature" + i);
String participantForm = fp.getString("participantForm" + i);
String allowAnonymousSubmission = fp.getString("allowAnonymousSubmission" + i);
String submissionUrl = fp.getString("submissionUrl" + i);
String offline = fp.getString("offline" + i);
// issue 312 BWP<<
String hiddenCrf = fp.getString("hiddenCrf" + i);
// hideCRF is false by default in the bean
if (!StringUtil.isBlank(hiddenCrf) && "yes".equalsIgnoreCase(hiddenCrf.trim())) {
edcBean.setHideCrf(true);
} else {
edcBean.setHideCrf(false);
}
// >>
String sdvOption = fp.getString("sdvOption" + i);
if (!StringUtils.isBlank(sdvOption)) {
int id = Integer.valueOf(sdvOption);
edcBean.setSourceDataVerification(SourceDataVerification.getByCode(id));
}
if (!StringUtils.isBlank(requiredCRF) && "yes".equalsIgnoreCase(requiredCRF.trim())) {
edcBean.setRequiredCRF(true);
} else {
edcBean.setRequiredCRF(false);
}
if (!StringUtils.isBlank(participantForm) && "yes".equalsIgnoreCase(participantForm.trim())) {
edcBean.setParticipantForm(true);
} else {
edcBean.setParticipantForm(false);
}
// when participant form is not selected, force allow anonymous to be not selected
if (edcBean.isParticipantForm() && !StringUtils.isBlank(allowAnonymousSubmission) && "yes".equalsIgnoreCase(allowAnonymousSubmission.trim())) {
edcBean.setAllowAnonymousSubmission(true);
} else {
edcBean.setAllowAnonymousSubmission(false);
}
if (!StringUtils.isBlank(offline) && "yes".equalsIgnoreCase(offline.trim())) {
edcBean.setOffline(true);
} else {
edcBean.setOffline(false);
}
if (!StringUtils.isBlank(doubleEntry) && "yes".equalsIgnoreCase(doubleEntry.trim())) {
edcBean.setDoubleEntry(true);
} else {
edcBean.setDoubleEntry(false);
}
if (!StringUtils.isBlank(decisionCondition) && "yes".equalsIgnoreCase(decisionCondition.trim())) {
edcBean.setDecisionCondition(true);
} else {
edcBean.setDecisionCondition(false);
}
if (!StringUtils.isBlank(electronicSignature) && "yes".equalsIgnoreCase(electronicSignature.trim())) {
edcBean.setElectronicSignature(true);
} else {
edcBean.setElectronicSignature(false);
}
// also useful to protect from naughty submission not coming from our html form
if (edcBean.isParticipantForm() && edcBean.isAllowAnonymousSubmission()) {
edcBean.setSubmissionUrl(submissionUrl.trim());
}
ArrayList<CRFVersionBean> versions = cvdao.findAllByCRFId(crfId);
edcBean.setVersions(versions);
String nullString = "";
// process null values
ArrayList nulls = NullValue.toArrayList();
for (int a = 0; a < nulls.size(); a++) {
NullValue n = (NullValue) nulls.get(a);
String myNull = fp.getString(n.getName().toLowerCase() + i);
if (!StringUtils.isBlank(myNull) && "yes".equalsIgnoreCase(myNull.trim())) {
nullString = nullString + n.getName().toUpperCase() + ",";
}
}
edcBean.setNullValues(nullString);
edcBean.setStudyId(ub.getActiveStudyId());
eventDefinitionCRFs.add(edcBean);
}
StudyParameterValueDAO spvdao = new StudyParameterValueDAO(sm.getDataSource());
String participateFormStatus = spvdao.findByHandleAndStudy(sed.getStudyId(), "participantPortal").getValue();
request.setAttribute("participateFormStatus", participateFormStatus);
if (participateFormStatus.equals("enabled"))
baseUrl();
request.setAttribute("participateFormStatus", participateFormStatus);
request.setAttribute("eventDefinitionCRFs", eventDefinitionCRFs);
// not used on page
session.setAttribute("edCRFs", eventDefinitionCRFs);
ArrayList<EventDefinitionCRFBean> edcsInSession = (ArrayList<EventDefinitionCRFBean>) session.getAttribute("edCRFs");
int parentStudyId = sed.getStudyId();
EventDefinitionCRFDAO edcdao = new EventDefinitionCRFDAO(sm.getDataSource());
ArrayList<EventDefinitionCRFBean> eventDefCrfList = (ArrayList<EventDefinitionCRFBean>) edcdao.findAllActiveSitesAndStudiesPerParentStudy(parentStudyId);
if (eventDefCrfList.size() != 0)
validateSubmissionUrl(edcsInSession, eventDefCrfList, v);
errors = v.validate();
if (!errors.isEmpty()) {
ArrayList<String> sdvOptions = new ArrayList<String>();
sdvOptions.add(SourceDataVerification.AllREQUIRED.toString());
sdvOptions.add(SourceDataVerification.PARTIALREQUIRED.toString());
sdvOptions.add(SourceDataVerification.NOTREQUIRED.toString());
sdvOptions.add(SourceDataVerification.NOTAPPLICABLE.toString());
request.setAttribute("sdvOptions", sdvOptions);
logger.info("has errors");
session.setAttribute("eventDefinitionCRFs", eventDefinitionCRFs);
request.setAttribute("formMessages", errors);
forwardPage(Page.DEFINE_STUDY_EVENT4);
}
forwardPage(Page.DEFINE_STUDY_EVENT_CONFIRM);
}
use of org.akaza.openclinica.control.form.Validator in project OpenClinica by OpenClinica.
the class DefineStudyEventServlet method confirmDefinition1.
/**
* Validates the first section of definition inputs
*
* @throws Exception
*/
private void confirmDefinition1() throws Exception {
Validator v = new Validator(request);
FormProcessor fp = new FormProcessor(request);
v.addValidation("name", Validator.NO_BLANKS);
v.addValidation("name", Validator.LENGTH_NUMERIC_COMPARISON, NumericComparisonOperator.LESS_THAN_OR_EQUAL_TO, 2000);
v.addValidation("description", Validator.LENGTH_NUMERIC_COMPARISON, NumericComparisonOperator.LESS_THAN_OR_EQUAL_TO, 2000);
v.addValidation("category", Validator.LENGTH_NUMERIC_COMPARISON, NumericComparisonOperator.LESS_THAN_OR_EQUAL_TO, 2000);
errors = v.validate();
session.setAttribute("definition", createStudyEventDefinition());
if (errors.isEmpty()) {
logger.debug("no errors in the first section");
// logger.debug("actionName*******" + fp.getString("actionName"));
// debugger.debug("pageNum*******" + fp.getString("pageNum"));
CRFVersionDAO vdao = new CRFVersionDAO(sm.getDataSource());
ArrayList crfArray = new ArrayList();
/*
* The tmpCRFIdMap will hold all the selected CRFs in the session
* when the user is navigating through the list. This has been done
* so that when the user moves to the next page of CRF list, the
* selection made in the previous page doesn't get lost.
*/
Map tmpCRFIdMap = (HashMap) session.getAttribute("tmpCRFIdMap");
if (tmpCRFIdMap == null) {
tmpCRFIdMap = new HashMap();
}
ArrayList crfsWithVersion = (ArrayList) session.getAttribute("crfsWithVersion");
for (int i = 0; i < crfsWithVersion.size(); i++) {
int id = fp.getInt("id" + i);
String name = fp.getString("name" + i);
String selected = fp.getString("selected" + i);
if (!StringUtil.isBlank(selected) && "yes".equalsIgnoreCase(selected.trim())) {
tmpCRFIdMap.put(id, name);
} else {
// deselected.
if (tmpCRFIdMap.containsKey(id)) {
tmpCRFIdMap.remove(id);
}
}
}
session.setAttribute("tmpCRFIdMap", tmpCRFIdMap);
EntityBeanTable table = fp.getEntityBeanTable();
ArrayList allRows = CRFRow.generateRowsFromBeans(crfsWithVersion);
String[] columns = { resword.getString("CRF_name"), resword.getString("date_created"), resword.getString("owner"), resword.getString("date_updated"), resword.getString("last_updated_by"), resword.getString("selected") };
table.setColumns(new ArrayList(Arrays.asList(columns)));
table.hideColumnLink(5);
StudyEventDefinitionBean def1 = (StudyEventDefinitionBean) session.getAttribute("definition");
HashMap args = new HashMap();
args.put("actionName", "next");
args.put("pageNum", "1");
args.put("name", URLEncoder.encode(def1.getName(), "UTF-8"));
args.put("repeating", new Boolean(def1.isRepeating()).toString());
args.put("category", def1.getCategory());
args.put("description", URLEncoder.encode(def1.getDescription(), "UTF-8"));
args.put("type", def1.getType());
table.setQuery("DefineStudyEvent", args, true);
table.setRows(allRows);
table.computeDisplay();
request.setAttribute("table", table);
forwardPage(Page.DEFINE_STUDY_EVENT2);
} else {
logger.debug("has validation errors in the first section");
request.setAttribute("formMessages", errors);
forwardPage(Page.DEFINE_STUDY_EVENT1);
}
}
Aggregations