/*
* OpenClinica is distributed under the
* GNU Lesser General Public License (GNU LGPL).
* For details see: http://www.openclinica.org/license
* copyright 2003-2009 Akaza Research
*/
package org.akaza.openclinica.control.admin;
import org.akaza.openclinica.control.SpringServletAccess;
import org.akaza.openclinica.control.core.SecureController;
import org.akaza.openclinica.control.form.FormProcessor;
import org.akaza.openclinica.control.form.Validator;
import org.akaza.openclinica.dao.hibernate.ConfigurationDao;
import org.akaza.openclinica.domain.technicaladmin.ConfigurationBean;
import org.akaza.openclinica.view.Page;
import org.akaza.openclinica.web.InsufficientPermissionException;
import java.util.HashMap;
/**
* @author Krikor Krumlian
*/
public class ConfigureServlet extends SecureController {
private static final long serialVersionUID = 2729725318725545575L;
private ConfigurationDao configurationDao;
@Override
protected void mayProceed() throws InsufficientPermissionException {
if (!ub.isSysAdmin()) {
addPageMessage(respage.getString("no_have_correct_privilege_current_study") + respage.getString("change_study_contact_sysadmin"));
throw new InsufficientPermissionException(Page.MENU_SERVLET, resexception.getString("you_may_not_perform_administrative_functions"), "1");
}
return;
}
@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);
}
}
}
private void loadPresetValuesFromBean(FormProcessor fp) {
ConfigurationBean userLockSwitch = getConfigurationDao().findByKey("user.lock.switch");
ConfigurationBean userLockAllowedFailedConsecutiveLoginAttempts = getConfigurationDao().findByKey("user.lock.allowedFailedConsecutiveLoginAttempts");
fp.addPresetValue("lockswitch", userLockSwitch.getValue());
fp.addPresetValue("lockcount", userLockAllowedFailedConsecutiveLoginAttempts.getValue());
}
private void loadPresetValuesFromForm(FormProcessor fp) {
fp.clearPresetValues();
String textFields[] = { "lockswitch", "lockcount" };
fp.setCurrentStringValuesAsPreset(textFields);
}
public ConfigurationDao getConfigurationDao() {
configurationDao =
this.configurationDao != null ? configurationDao : (ConfigurationDao) SpringServletAccess.getApplicationContext(context)
.getBean("configurationDao");
return configurationDao;
}
@Override
protected String getAdminServlet() {
return SecureController.ADMIN_SERVLET_CODE;
}
}