/*
* OpenClinica is distributed under the
* GNU Lesser General Public License (GNU LGPL).
* For details see: http://www.openclinica.org/license
* copyright 2003-2005 Akaza Research
*/
package org.akaza.openclinica.control.admin;
import org.akaza.openclinica.bean.login.StudyUserRoleBean;
import org.akaza.openclinica.bean.login.UserAccountBean;
import org.akaza.openclinica.bean.managestudy.StudyBean;
import org.akaza.openclinica.control.core.SecureController;
import org.akaza.openclinica.control.form.FormProcessor;
import org.akaza.openclinica.dao.login.UserAccountDAO;
import org.akaza.openclinica.dao.managestudy.StudyDAO;
import org.akaza.openclinica.i18n.util.ResourceBundleProvider;
import org.akaza.openclinica.view.Page;
import org.akaza.openclinica.web.InconsistentStateException;
import org.akaza.openclinica.web.InsufficientPermissionException;
import java.util.ArrayList;
public class ViewUserAccountServlet extends SecureController {
public static final String PATH = "ViewUserAccount";
public static final String ARG_USER_ID = "userId";
public static String getLink(int userId) {
return PATH + '?' + ARG_USER_ID + '=' + userId;
}
/*
* (non-Javadoc)
*
* @see org.akaza.openclinica.control.core.SecureController#mayProceed()
*/
@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;
}
@Override
protected void processRequest() throws Exception {
FormProcessor fp = new FormProcessor(request);
int userId = fp.getInt(ARG_USER_ID, true);
UserAccountDAO udao = new UserAccountDAO(sm.getDataSource());
UserAccountBean user = getBean(udao, userId);
if (user.isActive()) {
request.setAttribute("user", user);
} else {
throw new InconsistentStateException(Page.ADMIN_SYSTEM, resexception.getString("the_user_attemping_to_view_not_exists"));
}
// BWP>>To provide the view with the correct date format pattern, locale
// sensitive
String pattn = "";
pattn = ResourceBundleProvider.getFormatBundle().getString("date_format_string");
request.setAttribute("dateFormatPattern", pattn);
forwardPage(Page.VIEW_USER_ACCOUNT);
}
// public void processRequest(HttpServletRequest request,
// HttpServletResponse response)
// throws OpenClinicaException {
// session = request.getSession();
// session.setMaxInactiveInterval(60 * 60 * 3);
// logger.setLevel(Level.ALL);
// UserAccountBean ub = (UserAccountBean) session.getAttribute("userBean");
// try {
// String userName = request.getRemoteUser();
//
// sm = new SessionManager(ub, userName);
// ub = sm.getUserBean();
// if (logger.isLoggable(Level.INFO)) {
// logger.info("user bean from DB" + ub.getName());
// }
//
// FormProcessor fp = new FormProcessor(request);
// int userId = fp.getInt(ARG_USER_ID);
//
// SQLFactory factory = SQLFactory.getInstance();
// UserAccountDAO udao = new UserAccountDAO(sm.getDataSource());
//
// UserAccountBean user = getBean(udao, userId);
//
// if ((user.getFirstName() != null) && (!user.getFirstName().equals(""))) {
// request.setAttribute("user", user);
// request.setAttribute("message", "");
// }
// else {
// request.setAttribute("user", new UserAccountBean());
// request.setAttribute("message", "The specified user does not exist!");
// }
//
// forwardPage(Page.VIEW_USER_ACCOUNT, request, response);
// } catch (Exception e) {
// e.printStackTrace();
// logger.warn("OpenClinicaException::
// OpenClinica.control.viewUserAccount: " + e.getMessage());
//
// forwardPage(Page.ERROR, request, response);
// }
// }
private UserAccountBean getBean(UserAccountDAO udao, int id) {
UserAccountBean answer = (UserAccountBean) udao.findByPK(id);
StudyDAO sdao = new StudyDAO(sm.getDataSource());
ArrayList roles = answer.getRoles();
for (int i = 0; i < roles.size(); i++) {
StudyUserRoleBean sur = (StudyUserRoleBean) roles.get(i);
StudyBean sb = (StudyBean) sdao.findByPK(sur.getStudyId());
sur.setStudyName(sb.getName());
roles.set(i, sur);
}
answer.setRoles(roles);
return answer;
}
@Override
protected String getAdminServlet() {
return SecureController.ADMIN_SERVLET_CODE;
}
}