package org.akaza.openclinica.controller;
import org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean;
import org.akaza.openclinica.bean.managestudy.StudyBean;
import org.akaza.openclinica.bean.managestudy.StudyEventBean;
import org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean;
import org.akaza.openclinica.bean.managestudy.StudySubjectBean;
import org.akaza.openclinica.bean.submit.CRFVersionBean;
import org.akaza.openclinica.bean.submit.EventCRFBean;
import org.akaza.openclinica.bean.submit.ItemBean;
import org.akaza.openclinica.bean.submit.ItemDataBean;
import org.akaza.openclinica.bean.submit.ItemGroupMetadataBean;
import org.akaza.openclinica.dao.admin.AuditDAO;
import org.akaza.openclinica.dao.admin.CRFDAO;
import org.akaza.openclinica.dao.core.CoreResources;
import org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO;
import org.akaza.openclinica.dao.managestudy.StudyEventDAO;
import org.akaza.openclinica.dao.managestudy.StudyEventDefinitionDAO;
import org.akaza.openclinica.dao.managestudy.StudySubjectDAO;
import org.akaza.openclinica.dao.submit.CRFVersionDAO;
import org.akaza.openclinica.dao.submit.EventCRFDAO;
import org.akaza.openclinica.dao.submit.ItemDAO;
import org.akaza.openclinica.dao.submit.ItemGroupMetadataDAO;
import org.akaza.openclinica.i18n.util.ResourceBundleProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.HttpSessionRequiredException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.akaza.openclinica.view.StudyInfoPanel;
import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.akaza.openclinica.bean.admin.CRFBean;
import org.akaza.openclinica.bean.core.Role;
import org.akaza.openclinica.bean.core.Status;
import org.akaza.openclinica.bean.core.SubjectEventStatus;
import org.akaza.openclinica.bean.login.StudyUserRoleBean;
import org.akaza.openclinica.bean.login.UserAccountBean;
/**
* Implement the functionality for displaying a table of Event CRFs for Source Data
* Verification. This is an autowired, multiaction Controller.
*/
@Controller("changeCRFVersionController")
public class ChangeCRFVersionController {
@Autowired
@Qualifier("dataSource")
private DataSource dataSource;
@Autowired
CoreResources coreResources;
protected final Logger logger = LoggerFactory.getLogger(getClass().getName());
//Autowire the class that handles the sidebar structure with a configured
//bean named "sidebarInit"
@Autowired
@Qualifier("sidebarInit")
private SidebarInit sidebarInit;
ResourceBundle resword,resformat, respage;
public ChangeCRFVersionController() {
}
/*
* Allows user to select new CRF version
*
*/
// @RequestMapping(value="/managestudy/chooseCRFVersion", method = RequestMethod.GET)
@RequestMapping(value="/managestudy/chooseCRFVersion", method = RequestMethod.GET)
public ModelMap chooseCRFVersion(HttpServletRequest request,HttpServletResponse response,
@RequestParam("crfId") int crfId,
@RequestParam("crfName") String crfName,
@RequestParam("crfversionId") int crfVersionId,
@RequestParam("crfVersionName") String crfVersionName,
@RequestParam("studySubjectLabel") String studySubjectLabel,
@RequestParam("studySubjectId") int studySubjectId,
@RequestParam("eventCRFId") int eventCRFId,
@RequestParam("eventDefinitionCRFId") int eventDefinitionCRFId)
{
//to be removed for aquamarine
if(!mayProceed(request)){
try{
response.sendRedirect(request.getContextPath() + "/MainMenu?message=authentication_failed");
}catch (Exception e){
e.printStackTrace();
}
return null;
}
resetPanel(request);
ModelMap gridMap = new ModelMap();
/*EventCRFDAO eventCRFDAO = new EventCRFDAO(dataSource);
List<EventCRFBean> eventCRFBeans = eventCRFDAO.findAllByStudySubject(studySubjectId);*/
request.setAttribute("eventCRFId", eventCRFId);
request.setAttribute("studySubjectLabel", studySubjectLabel);
request.setAttribute("eventDefinitionCRFId", eventDefinitionCRFId);
request.setAttribute("studySubjectId", studySubjectId);
request.setAttribute("crfId", crfId);
request.setAttribute("crfName",crfName);
request.setAttribute("crfversionId", crfVersionId);
request.setAttribute("crfVersionName",crfVersionName.trim());
ArrayList<String> pageMessages = initPageMessages( request);
Object errorMessage = request.getParameter("errorMessage");
if ( errorMessage != null){
pageMessages.add( (String)errorMessage);
}
//get CRF by ID with all versions
//create List of all versions (label + value)
//set default CRF version label
setupResource(request);
//from event_crf get
StudyBean study = (StudyBean) request.getSession().getAttribute("study");
CRFDAO cdao = new CRFDAO(dataSource);
CRFBean crfBean = (CRFBean)cdao.findByPK(crfId);
CRFVersionDAO crfVersionDao = new CRFVersionDAO(dataSource);
ArrayList<CRFVersionBean> versions = (ArrayList<CRFVersionBean>) crfVersionDao.findAllActiveByCRF(crfId);
StudyEventDefinitionDAO sfed = new StudyEventDefinitionDAO(dataSource);
StudyEventDefinitionBean sedb = sfed.findByEventDefinitionCRFId(eventDefinitionCRFId);
request.setAttribute("eventName", sedb.getName());
EventCRFDAO ecdao = new EventCRFDAO(dataSource);
EventCRFBean ecb = (EventCRFBean) ecdao.findByPK(eventCRFId);
StudyEventDAO sedao = new StudyEventDAO(dataSource);
StudyEventBean seb = (StudyEventBean) sedao.findByPK(ecb.getStudyEventId());
request.setAttribute("eventCreateDate", formatDate(seb.getCreatedDate()));
if ( sedb.isRepeating()){
request.setAttribute("eventOrdinal", seb.getSampleOrdinal());
}
if (study.getParentStudyId()>0 ){
EventDefinitionCRFDAO edfdao = new EventDefinitionCRFDAO(dataSource);
EventDefinitionCRFBean edf = (EventDefinitionCRFBean) edfdao.findByPK(eventDefinitionCRFId);
if (!edf.getSelectedVersionIds().equals("")){
String[] version_ids = edf.getSelectedVersionIds().split(",");
HashMap<String,String> tmp = new HashMap<String,String>(version_ids.length);
for ( String vs : version_ids){
tmp.put(vs, vs);
}
ArrayList<CRFVersionBean> site_versions = new ArrayList<CRFVersionBean>(versions.size());
for (CRFVersionBean vs : versions) {
if (tmp.get( String.valueOf(vs.getId())) != null) {
site_versions.add(vs);
}
}
versions = site_versions;
}
}
crfBean.setVersions(versions);
gridMap.addAttribute("numberOfVersions", crfBean.getVersions().size()+1);
gridMap.addAttribute("crfBean", crfBean);
return gridMap;
}
/*
* Displays two set of columns for user to confirm his decision to switch to a new version of CRF
* field name | OID | field value
*/
@RequestMapping(value="/managestudy/confirmCRFVersionChange", method = RequestMethod.POST)
// @RequestMapping("/managestudy/confirmCRFVersionChange")
public ModelMap confirmCRFVersionChange(HttpServletRequest request,HttpServletResponse response,
@RequestParam(value="crfId", required = false) int crfId,
@RequestParam(value="crfName", required = false) String crfName,
@RequestParam(value="crfversionId", required = false) int crfVersionId,
@RequestParam(value="crfVersionName", required = false) String crfVersionName,
@RequestParam(value="studySubjectLabel", required = false) String studySubjectLabel,
@RequestParam(value="studySubjectId", required = false) int studySubjectId,
@RequestParam(value="eventCRFId", required = false) int eventCRFId,
@RequestParam(value="eventDefinitionCRFId", required = false) int eventDefinitionCRFId,
@RequestParam(value="selectedVersionId" , required = false) int selectedVersionId,
@RequestParam(value="selectedVersionName", required=false) String selectedVersionName,
@RequestParam(value="eventName", required=false) String eventName,
@RequestParam(value="eventCreateDate", required=false) String eventCreateDate,
@RequestParam(value="eventOrdinal", required=false) String eventOrdinal,
@RequestParam("confirmCRFVersionSubmit") String as
)
{
//add here error handling for post with no data and redirect from OC error page
//to be removed for aquamarine
if(!mayProceed(request)){
if( redirect( request, response, "/MainMenu?message=authentication_failed") == null)
return null;
}
resetPanel(request);
request.setAttribute("eventCRFId", eventCRFId);
request.setAttribute("studySubjectLabel", studySubjectLabel);
request.setAttribute("eventDefinitionCRFId", eventDefinitionCRFId);
request.setAttribute("studySubjectId", studySubjectId);
request.setAttribute("crfId", crfId);
request.setAttribute("crfName",crfName);
request.setAttribute("crfversionId", crfVersionId);
request.setAttribute("crfVersionName",crfVersionName.trim());
request.setAttribute("selectedVersionId",selectedVersionId);
if (selectedVersionName != null){
selectedVersionName = selectedVersionName.trim();
}
request.setAttribute("selectedVersionName",selectedVersionName);
request.setAttribute("eventName", eventName);
request.setAttribute("eventCreateDate", eventCreateDate);
request.setAttribute("eventOrdinal", eventOrdinal);
ModelMap gridMap = new ModelMap();
ArrayList<String> pageMessages = initPageMessages( request);
setupResource(request);
if ( selectedVersionId == -1){
String errorMessage = resword.getString("confirm_crf_version_em_select_version");//"Please select CRF version";
StringBuffer params = new StringBuffer();
params.append("/pages/managestudy/chooseCRFVersion?crfId="+crfId);
params.append("&crfName="+crfName);
params.append("&crfversionId="+crfVersionId);
params.append("&crfVersionName="+crfVersionName);
params.append("&studySubjectLabel="+studySubjectLabel);
params.append("&studySubjectId="+studySubjectId);
params.append("&eventCRFId="+eventCRFId);
params.append("&eventDefinitionCRFId="+eventDefinitionCRFId);
params.append("&errorMessage="+errorMessage);
if( redirect( request, response, params.toString()) == null){
return null;
}
}
request.getSession().removeAttribute("pageMessages" );
//get dATa for current crf version display
//select name, ordinal, oc_oid, item_data_id, i.item_id, value from item_data id, item i
// where id.item_id=i.item_id and event_crf_id = 171 order by i.item_id,ordinal;
ArrayList<String[]> rows = new ArrayList<String[]>();
int cur_counter = 0; int new_counter = 0;
try{
ItemDAO item_dao = new ItemDAO(dataSource);
ItemDataBean d_bean = null;
//get metadata to find repeat group or not
ItemGroupMetadataDAO dao_item_form_mdata = new ItemGroupMetadataDAO(dataSource);
List<ItemGroupMetadataBean> beans_item_form_mdata = dao_item_form_mdata.findByCrfVersion( crfVersionId);
HashMap<Integer, ItemGroupMetadataBean> hash_item_form_mdata = new HashMap<Integer, ItemGroupMetadataBean>(beans_item_form_mdata.size());
//put in hash
for (ItemGroupMetadataBean bn : beans_item_form_mdata){
hash_item_form_mdata.put(new Integer(bn.getItemId()), bn);
}
List<ItemGroupMetadataBean> bn_new_item_form_mdata = dao_item_form_mdata.findByCrfVersion( selectedVersionId);
HashMap<Integer, ItemGroupMetadataBean> hash_new_item_form_mdata = new HashMap<Integer, ItemGroupMetadataBean>(bn_new_item_form_mdata.size());
//put in hash
for (ItemGroupMetadataBean bn : bn_new_item_form_mdata){
hash_new_item_form_mdata.put(new Integer(bn.getItemId()), bn);
}
//get items description
ArrayList<ItemBean> cur_items_with_data = item_dao.findAllWithItemDataByCRFVersionId(crfVersionId, eventCRFId);
HashMap <String, ItemBean> hash_items_with_data = new HashMap<String,ItemBean>(cur_items_with_data.size());
for (ItemBean item : cur_items_with_data){
hash_items_with_data.put(item.getOid(), item);
}
ArrayList<ItemBean> cur_items = item_dao.findAllItemsByVersionId(crfVersionId);
ItemBean temp=null;
for (ItemBean item : cur_items){
temp = hash_items_with_data.get(item.getOid());
if ( temp != null){
item.setItemDataElements(temp.getItemDataElements());
}
}
ArrayList<ItemBean> new_items_with_data = item_dao.findAllWithItemDataByCRFVersionId(selectedVersionId, eventCRFId);
hash_items_with_data = new HashMap<String,ItemBean>(new_items_with_data.size());
for (ItemBean item : new_items_with_data){
hash_items_with_data.put(item.getOid(), item);
}
ArrayList<ItemBean> new_items = item_dao.findAllItemsByVersionId(selectedVersionId);
for (ItemBean item : new_items){
temp = hash_items_with_data.get(item.getOid());
if ( temp != null){
item.setItemDataElements(temp.getItemDataElements());
}
}
ItemBean cur_element=null; ItemBean new_element=null;
ItemGroupMetadataBean bn_mdata= null;ItemGroupMetadataBean bn_new_mdata=null;
while ( cur_counter < cur_items.size() || new_counter < new_items.size()){
if (cur_counter < cur_items.size() ){
cur_element = cur_items.get(cur_counter);
bn_mdata = hash_item_form_mdata.get( new Integer(cur_element.getId()));
}
if ( new_counter < new_items.size() ){
new_element = new_items.get(new_counter);
bn_new_mdata = hash_new_item_form_mdata.get( new Integer(new_element.getId()));
}
if (cur_counter < cur_items.size() && new_counter < new_items.size() && new_element.getId() == cur_element.getId() ){
buildRecord( cur_element, new_element, bn_mdata, bn_new_mdata, rows);
cur_counter++;new_counter++;
}
else if ( cur_counter < cur_items.size() && ( new_counter >= new_items.size() || new_element.getId() > cur_element.getId())){
buildRecord( cur_element, null, bn_mdata, null, rows);
cur_counter++;
}
else if (new_counter < new_items.size() && ( cur_counter >= cur_items.size() ||
new_element.getId() < cur_element.getId())){
buildRecord( null, new_element, null, bn_new_mdata, rows);
new_counter++;
}
}
}catch(Exception e){
logger.error(cur_counter+" "+new_counter);
pageMessages.add(resword.getString("confirm_crf_version_em_dataextraction"));
}
request.setAttribute("pageMessages", pageMessages);
gridMap.addAttribute("rows", rows);
return gridMap;
}
private void buildRecord(ItemBean cur_element, ItemBean new_element, ItemGroupMetadataBean cur_bean_mdata,
ItemGroupMetadataBean new_bean_mdata,ArrayList<String[]> rows){
String[] row = new String[8];
int cycle_count=0;
if (cur_element == null && new_element != null){
if (new_element.getItemDataElements() == null || new_element.getItemDataElements().size() <1){
row[0]=row[1]=row[2]=row[3]=row[7]="";
row[4]=(new_bean_mdata.isRepeatingGroup())? new_element.getName()+"(1)":new_element.getName();
row[5]=new_element.getOid();
row[6]=String.valueOf(new_element.getId());
rows.add(row);
return;
}
else{
for (ItemDataBean data_item : new_element.getItemDataElements()){
row = new String[8];
row[0]=row[1]=row[2]=row[3]=row[7]="";
row[4]=(new_bean_mdata.isRepeatingGroup())? new_element.getName()+"("+data_item.getOrdinal()+")":new_element.getName();
row[5]=new_element.getOid();
row[6]=String.valueOf(new_element.getId());
row[7]=data_item.getValue();
rows.add(row);
}
return;
}
}
else if (cur_element != null && new_element == null) {
if(cur_element.getItemDataElements() == null || cur_element.getItemDataElements().size() < 1){
row[0] = (cur_bean_mdata.isRepeatingGroup())? cur_element.getName()+"(1)": cur_element.getName();
row[1]= cur_element.getOid();
row[2]= String.valueOf(cur_element.getId());
row[4]=row[6]=row[7]=row[5]=row[3]="";
rows.add(row);
}
else{
for (ItemDataBean data_item : cur_element.getItemDataElements()){
row = new String[8];
row[0] = (cur_bean_mdata.isRepeatingGroup())? cur_element.getName()+" ("+data_item.getOrdinal()+")": cur_element.getName();
row[1]= cur_element.getOid();
row[2]= String.valueOf(cur_element.getId());
row[3]= data_item.getValue() ;
row[4]=row[6]=row[7]=row[5]="";
rows.add(row);
cycle_count++;
if ( cycle_count >0 && !cur_bean_mdata.isRepeatingGroup()){
break;
}
}
}
return;
}
else if (cur_element != null && new_element != null){
//for repeating groups: 3 cases
//one cycle: repeating group item -> none-repeating group item
//second cycle -> back none-repeating to prev repeating
if(cur_element.getItemDataElements() == null ){
row[4]=(new_bean_mdata.isRepeatingGroup())? new_element.getName()+"(1)":new_element.getName();
row[5]=new_element.getOid();
row[6]=String.valueOf(new_element.getId());
row[0] = (cur_bean_mdata.isRepeatingGroup())? cur_element.getName()+"(1)": cur_element.getName();
row[1]= cur_element.getOid();
row[2]= String.valueOf(cur_element.getId());
row[3]=row[7]="";
rows.add(row);
return;
}
for (ItemDataBean data_item : cur_element.getItemDataElements()){
row = new String[8];
if (!cur_bean_mdata.isRepeatingGroup() && cycle_count>0 ){
row[0]=row[1]=row[2]=row[3]="";
}else{
row[0] = (cur_bean_mdata.isRepeatingGroup())? cur_element.getName()+" ("+data_item.getOrdinal()+")": cur_element.getName();
row[1]= cur_element.getOid();
row[2]= String.valueOf(cur_element.getId());
row[3]= data_item.getValue() ;
}
if (new_bean_mdata.isRepeatingGroup()){
//case when new one is a repeating group and has data from some previous entry while current does not have a repeating group
if (!cur_bean_mdata.isRepeatingGroup()){
row[4] = cur_element.getName()+" ("+data_item.getOrdinal()+")";
}
//new one is repeating & cur is repeating
if (cur_bean_mdata.isRepeatingGroup()){
row[4]=row[0];
}
row[5]=new_element.getOid();
row[6]=String.valueOf(new_element.getId());
row[7]= data_item.getValue() ;
}
else{
if ( cycle_count == 0){
row[4]=row[0];
row[5]=new_element.getOid();
row[6]=String.valueOf(new_element.getId());
row[7]= data_item.getValue() ;
}
else{
row[4]=row[5]=row[6]=row[7]="";
}
}
cycle_count++;
//do not add row if all items empty -> from data of repeat group to none-rep
if ( !(row[0].equals("") && row[4].equals(""))){
rows.add(row);
}
}
return;
}
}
@RequestMapping("/managestudy/changeCRFVersion")
// @RequestMapping("/managestudy/changeCRFVersionAction")
public ModelMap changeCRFVersionAction(HttpServletRequest request,HttpServletResponse response,
@RequestParam("crfId") int crfId,
@RequestParam("crfName") String crfName,
@RequestParam("crfversionId") int crfVersionId,
@RequestParam("crfVersionName") String crfVersionName,
@RequestParam("studySubjectLabel") String studySubjectLabel,
@RequestParam("studySubjectId") int studySubjectId,
@RequestParam("eventCRFId") int eventCRFId,
@RequestParam("eventDefinitionCRFId") int eventDefinitionCRFId,
@RequestParam(value="newCRFVersionId" , required = true) int newCRFVersionId )
{
//to be removed for aquamarine
if(!mayProceed(request)){
if( redirect( request, response, "/MainMenu?message=authentication_failed") == null)
return null;
}
ArrayList<String> pageMessages = initPageMessages( request);
setupResource(request);
//update event_crf_id table
try{
EventCRFDAO event_crf_dao = new EventCRFDAO(dataSource);
StudyEventDAO sedao = new StudyEventDAO(dataSource);
EventCRFBean ev_bean = (EventCRFBean)event_crf_dao.findByPK(eventCRFId);
StudyEventBean st_event_bean = (StudyEventBean)sedao.findByPK(ev_bean.getStudyEventId());
Connection con = dataSource.getConnection();
CoreResources.setSchema(con);
con.setAutoCommit(false);
event_crf_dao.updateCRFVersionID(eventCRFId, newCRFVersionId, getCurrentUser(request).getId(), con);
String status_before_update = null;
SubjectEventStatus eventStatus=null; Status subjectStatus = null;
AuditDAO auditDao = new AuditDAO(dataSource);
//event signed, check if subject is signed as well
StudySubjectDAO studySubDao = new StudySubjectDAO(dataSource);
StudySubjectBean studySubBean = (StudySubjectBean)studySubDao.findByPK(st_event_bean.getStudySubjectId());
if (studySubBean.getStatus().isSigned() ){
status_before_update = auditDao.findLastStatus("study_subject", studySubBean.getId(), "8");
if ( status_before_update != null && status_before_update.length()==1){
int subject_status = Integer.parseInt(status_before_update);
subjectStatus= Status.get(subject_status);
studySubBean.setStatus(subjectStatus);
}
studySubBean.setUpdater(getCurrentUser(request));
studySubDao.update(studySubBean, con);
}
st_event_bean.setUpdater(getCurrentUser(request));
st_event_bean.setUpdatedDate(new Date());
status_before_update = auditDao.findLastStatus("study_event", st_event_bean.getId(), "8");
if ( status_before_update != null && status_before_update.length()==1){
int status = Integer.parseInt(status_before_update);
eventStatus = SubjectEventStatus.get(status);
st_event_bean.setSubjectEventStatus(eventStatus);
}
sedao.update(st_event_bean, con);
con.commit();
con.setAutoCommit(true);
con.close();
pageMessages.add(resword.getString("confirm_crf_version_ms"));
String msg=resword.getString("confirm_crf_version_ms");
redirect( request, response, "/ViewStudySubject?isFromCRFVersionChange="+msg+"&id="+studySubjectId);
}
catch (Exception e){
pageMessages.add(resword.getString("error_message_cannot_update_crf_version"));
}
return null;
}
@ExceptionHandler(HttpSessionRequiredException.class)
public String handleSessionRequiredException(HttpSessionRequiredException ex, HttpServletRequest request) {
return "redirect:/MainMenu";
}
@ExceptionHandler(NullPointerException.class)
public String handleNullPointerException(NullPointerException ex, HttpServletRequest request, HttpServletResponse response) {
StudyBean currentStudy = (StudyBean) request.getSession().getAttribute("study");
if (currentStudy == null) {
return "redirect:/MainMenu";
}
throw ex;
}
private void setUpSidebar(HttpServletRequest request) {
if (sidebarInit.getAlertsBoxSetup() == SidebarEnumConstants.OPENALERTS) {
request.setAttribute("alertsBoxSetup", true);
}
if (sidebarInit.getInfoBoxSetup() == SidebarEnumConstants.OPENINFO) {
request.setAttribute("infoBoxSetup", true);
}
if (sidebarInit.getInstructionsBoxSetup() == SidebarEnumConstants.OPENINSTRUCTIONS) {
request.setAttribute("instructionsBoxSetup", true);
}
if (sidebarInit.getEnableIconsBoxSetup() == SidebarEnumConstants.DISABLEICONS) {
request.setAttribute("enableIconsBoxSetup", false);
}
}
//to be depricated in aquamarine
private boolean mayProceed(HttpServletRequest request) {
StudyUserRoleBean currentRole = (StudyUserRoleBean)request.getSession().getAttribute("userRole");
Role r = currentRole.getRole();
if (r.equals(Role.STUDYDIRECTOR) || r.equals(Role.COORDINATOR)) {
return true;
}
ArrayList<String> pageMessages = initPageMessages( request);
pageMessages.add((respage.getString("no_have_correct_privilege_current_study") +
respage.getString("change_study_contact_sysadmin")));
return false;
}
private UserAccountBean getCurrentUser (HttpServletRequest request){
UserAccountBean ub = (UserAccountBean)request.getSession().getAttribute("userBean");
return ub;
}
private Object redirect(HttpServletRequest request,HttpServletResponse response, String location){
try{
response.sendRedirect(request.getContextPath() + location);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
private void resetPanel(HttpServletRequest request){
StudyInfoPanel panel = new StudyInfoPanel();
panel.reset();
panel.setIconInfoShown(false);
request.getSession().setAttribute("panel", panel);
}
private void setupResource(HttpServletRequest request){
Locale locale = request.getLocale();
ResourceBundleProvider.updateLocale(locale);
resword = ResourceBundleProvider.getWordsBundle(locale);
resformat = ResourceBundleProvider.getFormatBundle(locale);
}
private String formatDate(Date date){
String dateFormat = resformat.getString("date_format_string") ;
SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);
String s = formatter.format(date);
return s;
}
private ArrayList<String> initPageMessages(HttpServletRequest request){
ArrayList<String> pageMessages = (ArrayList<String>) request.getAttribute("pageMessages");
if (pageMessages == null) {
pageMessages = new ArrayList<String>();
}
request.setAttribute("pageMessages", pageMessages);
return pageMessages;
}
}