use of org.akaza.openclinica.dao.service.StudyParameterValueDAO in project OpenClinica by OpenClinica.
the class SecureController method process.
private void process(HttpServletRequest request, HttpServletResponse response) throws OpenClinicaException, UnsupportedEncodingException {
request.setCharacterEncoding("UTF-8");
session = request.getSession();
// BWP >> 1/8/2008
try {
// YW 10-03-2007 <<
session.setMaxInactiveInterval(Integer.parseInt(SQLInitServlet.getField("max_inactive_interval")));
// YW >>
} catch (NumberFormatException nfe) {
// BWP>>3600 is the datainfo.properties maxInactiveInterval on
// 1/8/2008
session.setMaxInactiveInterval(3600);
}
// If the session already has a value with key SUPPORT_URL don't reset
if (session.getAttribute(SUPPORT_URL) == null) {
session.setAttribute(SUPPORT_URL, SQLInitServlet.getSupportURL());
}
ub = (UserAccountBean) session.getAttribute(USER_BEAN_NAME);
currentStudy = (StudyBean) session.getAttribute("study");
currentRole = (StudyUserRoleBean) session.getAttribute("userRole");
// Set current language preferences
Locale locale = LocaleResolver.getLocale(request);
ResourceBundleProvider.updateLocale(locale);
resadmin = ResourceBundleProvider.getAdminBundle(locale);
resaudit = ResourceBundleProvider.getAuditEventsBundle(locale);
resexception = ResourceBundleProvider.getExceptionsBundle(locale);
resformat = ResourceBundleProvider.getFormatBundle(locale);
restext = ResourceBundleProvider.getTextsBundle(locale);
resterm = ResourceBundleProvider.getTermsBundle(locale);
resword = ResourceBundleProvider.getWordsBundle(locale);
respage = ResourceBundleProvider.getPageMessagesBundle(locale);
resworkflow = ResourceBundleProvider.getWorkflowBundle(locale);
local_df = I18nFormatUtil.getDateFormat(locale);
try {
String userName = request.getRemoteUser();
// BWP 1/8/08<< the sm variable may already be set with a mock
// object,
// from the perspective of
// JUnit servlets tests
/*
* if(sm==null && (!StringUtil.isBlank(userName))) {//check if user logged in, then create a new sessionmanger to
* get ub //create a new sm in order to get a new ub object sm = new SessionManager(ub, userName); }
*/
// BWP 01/08 >>
// sm = new SessionManager(ub, userName);
sm = new SessionManager(ub, userName, SpringServletAccess.getApplicationContext(context));
ub = sm.getUserBean();
session.setAttribute("userBean", ub);
StudyDAO sdao = new StudyDAO(sm.getDataSource());
if (currentStudy == null || currentStudy.getId() <= 0) {
if (ub.getId() > 0 && ub.getActiveStudyId() > 0) {
StudyParameterValueDAO spvdao = new StudyParameterValueDAO(sm.getDataSource());
currentStudy = (StudyBean) sdao.findByPK(ub.getActiveStudyId());
ArrayList studyParameters = spvdao.findParamConfigByStudy(currentStudy);
currentStudy.setStudyParameters(studyParameters);
StudyConfigService scs = new StudyConfigService(sm.getDataSource());
if (currentStudy.getParentStudyId() <= 0) {
// top study
scs.setParametersForStudy(currentStudy);
} else {
// YW <<
currentStudy.setParentStudyName(((StudyBean) sdao.findByPK(currentStudy.getParentStudyId())).getName());
// YW >>
scs.setParametersForSite(currentStudy);
}
// set up the panel here, tbh
panel.reset();
/*
* panel.setData("Study", currentStudy.getName()); panel.setData("Summary", currentStudy.getSummary());
* panel.setData("Start Date", sdf.format(currentStudy.getDatePlannedStart())); panel.setData("End Date",
* sdf.format(currentStudy.getDatePlannedEnd())); panel.setData("Principal Investigator",
* currentStudy.getPrincipalInvestigator());
*/
session.setAttribute(STUDY_INFO_PANEL, panel);
} else {
currentStudy = new StudyBean();
}
session.setAttribute("study", currentStudy);
} else if (currentStudy.getId() > 0) {
// restored
if (currentStudy.getParentStudyId() > 0) {
currentStudy.setParentStudyName(((StudyBean) sdao.findByPK(currentStudy.getParentStudyId())).getName());
}
// YW >>
}
if (currentStudy.getParentStudyId() > 0) {
/*
* The Role decription will be set depending on whether the user logged in at study lever or site level.
* issue-2422
*/
List roles = Role.toArrayList();
for (Iterator it = roles.iterator(); it.hasNext(); ) {
Role role = (Role) it.next();
switch(role.getId()) {
case 2:
role.setDescription("site_Study_Coordinator");
break;
case 3:
role.setDescription("site_Study_Director");
break;
case 4:
role.setDescription("site_investigator");
break;
case 5:
role.setDescription("site_Data_Entry_Person");
break;
case 6:
role.setDescription("site_monitor");
break;
case 7:
role.setDescription("site_Data_Entry_Person2");
break;
default:
}
}
} else {
/*
* If the current study is a site, we will change the role description. issue-2422
*/
List roles = Role.toArrayList();
for (Iterator it = roles.iterator(); it.hasNext(); ) {
Role role = (Role) it.next();
switch(role.getId()) {
case 2:
role.setDescription("Study_Coordinator");
break;
case 3:
role.setDescription("Study_Director");
break;
case 4:
role.setDescription("Investigator");
break;
case 5:
role.setDescription("Data_Entry_Person");
break;
case 6:
role.setDescription("Monitor");
break;
default:
}
}
}
if (currentRole == null || currentRole.getId() <= 0) {
// kept as "invalid" -- YW 06-21-2007
if (ub.getId() > 0 && currentStudy.getId() > 0 && !currentStudy.getStatus().getName().equals("removed")) {
currentRole = ub.getRoleByStudy(currentStudy.getId());
if (currentStudy.getParentStudyId() > 0) {
// Checking if currentStudy has been removed or not will
// ge good enough -- YW 10-17-2007
StudyUserRoleBean roleInParent = ub.getRoleByStudy(currentStudy.getParentStudyId());
// inherited role from parent study, pick the higher
// role
currentRole.setRole(Role.max(currentRole.getRole(), roleInParent.getRole()));
}
// logger.info("currentRole:" + currentRole.getRoleName());
} else {
currentRole = new StudyUserRoleBean();
}
session.setAttribute("userRole", currentRole);
} else // active study has been removed.
if (currentRole.getId() > 0 && (currentStudy.getStatus().equals(Status.DELETED) || currentStudy.getStatus().equals(Status.AUTO_DELETED))) {
currentRole.setRole(Role.INVALID);
currentRole.setStatus(Status.DELETED);
session.setAttribute("userRole", currentRole);
}
// YW 06-19-2007 >>
request.setAttribute("isAdminServlet", getAdminServlet());
this.request = request;
this.response = response;
// logger.info(rq_names);
if (!request.getRequestURI().endsWith("ResetPassword")) {
passwdTimeOut();
}
mayProceed();
pingJobServer(request);
processRequest();
} catch (InconsistentStateException ise) {
ise.printStackTrace();
logger.warn("InconsistentStateException: org.akaza.openclinica.control.SecureController: " + ise.getMessage());
addPageMessage(ise.getOpenClinicaMessage());
forwardPage(ise.getGoTo());
} catch (InsufficientPermissionException ipe) {
ipe.printStackTrace();
logger.warn("InsufficientPermissionException: org.akaza.openclinica.control.SecureController: " + ipe.getMessage());
// addPageMessage(ipe.getOpenClinicaMessage());
forwardPage(ipe.getGoTo());
} catch (OutOfMemoryError ome) {
ome.printStackTrace();
long heapSize = Runtime.getRuntime().totalMemory();
session.setAttribute("ome", "yes");
} catch (Exception e) {
e.printStackTrace();
logger.error(SecureController.getStackTrace(e));
forwardPage(Page.ERROR);
}
}
use of org.akaza.openclinica.dao.service.StudyParameterValueDAO in project OpenClinica by OpenClinica.
the class AddCRFToDefinitionServlet method addCRF.
private void addCRF() throws Exception {
FormProcessor fp = new FormProcessor(request);
FormLayoutDAO fldao = new FormLayoutDAO(sm.getDataSource());
ArrayList crfArray = new ArrayList();
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())) {
logger.info("one crf selected");
CRFBean cb = new CRFBean();
cb.setId(id);
cb.setName(name);
// only find active verions
ArrayList versions = (ArrayList) fldao.findAllActiveByCRF(cb.getId());
cb.setVersions(versions);
crfArray.add(cb);
} else {
if (tmpCRFIdMap.containsKey(id)) {
tmpCRFIdMap.remove(id);
}
}
}
for (Iterator tmpCRFIterator = tmpCRFIdMap.keySet().iterator(); tmpCRFIterator.hasNext(); ) {
int id = (Integer) tmpCRFIterator.next();
String name = (String) tmpCRFIdMap.get(id);
boolean isExists = false;
for (Iterator it = crfArray.iterator(); it.hasNext(); ) {
CRFBean cb = (CRFBean) it.next();
if (id == cb.getId()) {
isExists = true;
}
}
if (!isExists) {
CRFBean cb = new CRFBean();
cb.setId(id);
cb.setName(name);
// only find active verions
ArrayList versions = (ArrayList) fldao.findAllActiveByCRF(cb.getId());
cb.setVersions(versions);
crfArray.add(cb);
}
}
session.removeAttribute("tmpCRFIdMap");
StudyParameterValueDAO spvdao = new StudyParameterValueDAO(sm.getDataSource());
if (crfArray.size() == 0) {
// no crf seleted
addPageMessage(respage.getString("no_new_CRF_added"));
StudyEventDefinitionBean sed = (StudyEventDefinitionBean) session.getAttribute("definition");
String participateFormStatus = spvdao.findByHandleAndStudy(sed.getStudyId(), "participantPortal").getValue();
request.setAttribute("participateFormStatus", participateFormStatus);
sed.setCrfs(new ArrayList());
session.setAttribute("definition", sed);
forwardPage(Page.UPDATE_EVENT_DEFINITION1);
} else {
StudyEventDefinitionBean sed = (StudyEventDefinitionBean) session.getAttribute("definition");
String participateFormStatus = spvdao.findByHandleAndStudy(sed.getStudyId(), "participantPortal").getValue();
if (participateFormStatus.equals("enabled"))
baseUrl();
request.setAttribute("participateFormStatus", participateFormStatus);
ArrayList edcs = (ArrayList) session.getAttribute("eventDefinitionCRFs");
int ordinalForNewCRF = edcs.size();
for (int i = 0; i < crfArray.size(); i++) {
CRFBean crf = (CRFBean) crfArray.get(i);
EventDefinitionCRFBean edcBean = new EventDefinitionCRFBean();
edcBean.setCrfId(crf.getId());
edcBean.setCrfName(crf.getName());
edcBean.setStudyId(ub.getActiveStudyId());
edcBean.setStatus(Status.AVAILABLE);
edcBean.setStudyEventDefinitionId(sed.getId());
edcBean.setStudyId(ub.getActiveStudyId());
edcBean.setSourceDataVerification(SourceDataVerification.NOTREQUIRED);
ordinalForNewCRF = ordinalForNewCRF + 1;
edcBean.setOrdinal(ordinalForNewCRF);
edcBean.setVersions(crf.getVersions());
FormLayoutBean defaultVersion1 = (FormLayoutBean) fldao.findByPK(edcBean.getDefaultVersionId());
edcBean.setDefaultVersionName(defaultVersion1.getName());
ordinalForNewCRF++;
edcs.add(edcBean);
}
session.setAttribute("eventDefinitionCRFs", edcs);
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);
addPageMessage(respage.getString("has_have_been_added_need_confirmation"));
forwardPage(Page.UPDATE_EVENT_DEFINITION1);
}
}
use of org.akaza.openclinica.dao.service.StudyParameterValueDAO in project OpenClinica by OpenClinica.
the class CreateStudyServlet method submitStudy.
/**
* Inserts the new study into database
*
*/
private void submitStudy() {
StudyDAO sdao = new StudyDAO(sm.getDataSource());
StudyParameterValueDAO spvdao = new StudyParameterValueDAO(sm.getDataSource());
StudyBean newStudy = (StudyBean) session.getAttribute("newStudy");
logger.info("study bean to be created:" + newStudy.getName() + newStudy.getProtocolDateVerification());
// newStudy.setType(StudyType.NONGENETIC);//need to refine in the future
newStudy.setOwner(ub);
newStudy.setCreatedDate(new Date());
// newStudy.setStatus(Status.AVAILABLE);
StudyBean finalStudy = (StudyBean) sdao.create(newStudy);
logger.info("new study created");
StudyParameterValueBean spv = new StudyParameterValueBean();
spv.setStudyId(finalStudy.getId());
spv.setParameter("collectDob");
spv.setValue(newStudy.getStudyParameterConfig().getCollectDob());
spvdao.create(spv);
spv.setParameter("discrepancyManagement");
spv.setValue(newStudy.getStudyParameterConfig().getDiscrepancyManagement());
spvdao.create(spv);
spv.setParameter("genderRequired");
spv.setValue(newStudy.getStudyParameterConfig().getGenderRequired());
spvdao.create(spv);
spv.setParameter("subjectPersonIdRequired");
spv.setValue(newStudy.getStudyParameterConfig().getSubjectPersonIdRequired());
spvdao.create(spv);
spv.setParameter("interviewerNameRequired");
spv.setValue(newStudy.getStudyParameterConfig().getInterviewerNameRequired());
spvdao.create(spv);
spv.setParameter("interviewerNameDefault");
spv.setValue(newStudy.getStudyParameterConfig().getInterviewerNameDefault());
spvdao.create(spv);
spv.setParameter("interviewerNameEditable");
spv.setValue(newStudy.getStudyParameterConfig().getInterviewerNameEditable());
spvdao.create(spv);
spv.setParameter("interviewDateRequired");
spv.setValue(newStudy.getStudyParameterConfig().getInterviewDateRequired());
spvdao.create(spv);
spv.setParameter("interviewDateDefault");
spv.setValue(newStudy.getStudyParameterConfig().getInterviewDateDefault());
spvdao.create(spv);
spv.setParameter("interviewDateEditable");
spv.setValue(newStudy.getStudyParameterConfig().getInterviewDateEditable());
spvdao.create(spv);
spv.setParameter("subjectIdGeneration");
spv.setValue(newStudy.getStudyParameterConfig().getSubjectIdGeneration());
spvdao.create(spv);
spv.setParameter("subjectIdPrefixSuffix");
spv.setValue(newStudy.getStudyParameterConfig().getSubjectIdPrefixSuffix());
spvdao.create(spv);
spv.setParameter("personIdShownOnCRF");
spv.setValue(newStudy.getStudyParameterConfig().getPersonIdShownOnCRF());
spvdao.create(spv);
spv.setParameter("secondaryLabelViewable");
spv.setValue(newStudy.getStudyParameterConfig().getSecondaryLabelViewable());
spvdao.create(spv);
spv.setParameter("adminForcedReasonForChange");
spv.setValue(newStudy.getStudyParameterConfig().getAdminForcedReasonForChange());
spvdao.create(spv);
logger.info("study parameters created done");
}
use of org.akaza.openclinica.dao.service.StudyParameterValueDAO in project OpenClinica by OpenClinica.
the class InitUpdateEventDefinitionServlet method processRequest.
@Override
public void processRequest() throws Exception {
StudyEventDefinitionDAO sdao = new StudyEventDefinitionDAO(sm.getDataSource());
String idString = request.getParameter("id");
logger.info("definition id: " + idString);
if (StringUtil.isBlank(idString)) {
addPageMessage(respage.getString("please_choose_a_definition_to_edit"));
forwardPage(Page.LIST_DEFINITION_SERVLET);
} else {
// definition id
int defId = Integer.valueOf(idString.trim()).intValue();
StudyEventDefinitionBean sed = (StudyEventDefinitionBean) sdao.findByPK(defId);
StudyParameterValueDAO spvdao = new StudyParameterValueDAO(sm.getDataSource());
String participateFormStatus = spvdao.findByHandleAndStudy(sed.getStudyId(), "participantPortal").getValue();
if (participateFormStatus.equals("enabled"))
baseUrl();
request.setAttribute("participateFormStatus", participateFormStatus);
if (currentStudy.getId() != sed.getStudyId()) {
addPageMessage(respage.getString("no_have_correct_privilege_current_study") + " " + respage.getString("change_active_study_or_contact"));
forwardPage(Page.MENU_SERVLET);
return;
}
EventDefinitionCRFDAO edao = new EventDefinitionCRFDAO(sm.getDataSource());
ArrayList eventDefinitionCRFs = (ArrayList) edao.findAllParentsByDefinition(defId);
FormLayoutDAO fldao = new FormLayoutDAO(sm.getDataSource());
CRFDAO cdao = new CRFDAO(sm.getDataSource());
ArrayList newEventDefinitionCRFs = new ArrayList();
for (int i = 0; i < eventDefinitionCRFs.size(); i++) {
EventDefinitionCRFBean edc = (EventDefinitionCRFBean) eventDefinitionCRFs.get(i);
ArrayList versions = (ArrayList) fldao.findAllActiveByCRF(edc.getCrfId());
edc.setVersions(versions);
CRFBean crf = (CRFBean) cdao.findByPK(edc.getCrfId());
edc.setCrfName(crf.getName());
edc.setCrf(crf);
edc.setParticipantForm(edc.isParticipantForm());
// TO DO: use a better way on JSP page,eg.function tag
edc.setNullFlags(processNullValues(edc));
FormLayoutBean formLayout = (FormLayoutBean) fldao.findByPK(edc.getDefaultVersionId());
edc.setDefaultVersionName(formLayout.getName());
String crfPath = sed.getOid() + "." + edc.getCrf().getOid();
edc.setOffline(getEventDefinitionCrfTagService().getEventDefnCrfOfflineStatus(2, crfPath, true));
newEventDefinitionCRFs.add(edc);
}
session.setAttribute("definition", sed);
session.setAttribute("eventDefinitionCRFs", newEventDefinitionCRFs);
// changed above to new list because static, in-place updating is
// updating all EDCs, tbh 102007
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);
forwardPage(Page.UPDATE_EVENT_DEFINITION1);
}
}
use of org.akaza.openclinica.dao.service.StudyParameterValueDAO in project OpenClinica by OpenClinica.
the class ListStudySubjectServlet method processRequest.
// >>
// < ResourceBundleresword;
@Override
public void processRequest() throws Exception {
FormProcessor fp = new FormProcessor(request);
locale = LocaleResolver.getLocale(request);
// < resword =
// ResourceBundle.getBundle("org.akaza.openclinica.i18n.words",locale);
// BWP 3098 << close the info side panel and show icons
request.setAttribute("closeInfoShowIcons", true);
// >>
// BWP 3195, 3330 : designed to address pagination issues
String pageNumber = fp.getString(SUBJECT_PAGE_NUMBER);
StringBuilder paginatingQuery = new StringBuilder("");
String filterKeyword = fp.getString(FILTER_KEYWORD);
String tmpSearch = fp.getString(SEARCH_SUBMITTED);
boolean searchSubmitted = !(tmpSearch == null || "".equalsIgnoreCase(tmpSearch)) && !"".equalsIgnoreCase(filterKeyword) && !"+".equalsIgnoreCase(filterKeyword);
if (pageNumber != null && !"".equalsIgnoreCase(pageNumber)) {
int tempNum = 0;
try {
tempNum = Integer.parseInt(pageNumber);
} catch (NumberFormatException nfe) {
// tempNum is already initialized to 0
}
if (tempNum > 0) {
paginatingQuery = new StringBuilder(SUBJECT_PAGE_NUMBER).append("=").append(pageNumber);
paginatingQuery.append("&ebl_paginated=1");
}
}
// URL encode the search keyword, since it will be a parameter in the
// URL
String filterKeywordURLEncode = java.net.URLEncoder.encode(filterKeyword, "UTF-8");
if (searchSubmitted) {
paginatingQuery.append("&ebl_sortColumnInd=0&submitted=1&ebl_sortAscending=1&ebl_filtered=1");
paginatingQuery.append("&").append(FILTER_KEYWORD).append("=").append(filterKeywordURLEncode);
}
request.setAttribute(PAGINATING_QUERY, paginatingQuery.toString());
StudyDAO stdao = new StudyDAO(sm.getDataSource());
StudySubjectDAO sdao = new StudySubjectDAO(sm.getDataSource());
StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource());
StudyEventDefinitionDAO seddao = new StudyEventDefinitionDAO(sm.getDataSource());
SubjectGroupMapDAO sgmdao = new SubjectGroupMapDAO(sm.getDataSource());
StudyGroupClassDAO sgcdao = new StudyGroupClassDAO(sm.getDataSource());
StudyGroupDAO sgdao = new StudyGroupDAO(sm.getDataSource());
StudySubjectDAO ssdao = new StudySubjectDAO(sm.getDataSource());
// YW << update study parameters of current study.
// "collectDob" and "genderRequired" are set as the same as the parent
// study
// tbh, also add the params "subjectPersonIdRequired",
// "subjectIdGeneration", "subjectIdPrefixSuffix"
int parentStudyId = currentStudy.getParentStudyId();
ArrayList studyGroupClasses = new ArrayList();
ArrayList allDefs = new ArrayList();
// tbh
if (parentStudyId > 0) {
StudyBean parentStudy = (StudyBean) stdao.findByPK(parentStudyId);
studyGroupClasses = sgcdao.findAllActiveByStudy(parentStudy);
allDefs = seddao.findAllActiveByStudy(parentStudy);
} else {
parentStudyId = currentStudy.getId();
studyGroupClasses = sgcdao.findAllActiveByStudy(currentStudy);
allDefs = seddao.findAllActiveByStudy(currentStudy);
}
StudyParameterValueDAO spvdao = new StudyParameterValueDAO(sm.getDataSource());
StudyParameterValueBean parentSPV = spvdao.findByHandleAndStudy(parentStudyId, "collectDob");
currentStudy.getStudyParameterConfig().setCollectDob(parentSPV.getValue());
parentSPV = spvdao.findByHandleAndStudy(parentStudyId, "genderRequired");
currentStudy.getStudyParameterConfig().setGenderRequired(parentSPV.getValue());
parentSPV = spvdao.findByHandleAndStudy(parentStudyId, "subjectPersonIdRequired");
currentStudy.getStudyParameterConfig().setSubjectPersonIdRequired(parentSPV.getValue());
parentSPV = spvdao.findByHandleAndStudy(parentStudyId, "subjectIdGeneration");
currentStudy.getStudyParameterConfig().setSubjectIdGeneration(parentSPV.getValue());
parentSPV = spvdao.findByHandleAndStudy(parentStudyId, "subjectIdPrefixSuffix");
currentStudy.getStudyParameterConfig().setSubjectIdPrefixSuffix(parentSPV.getValue());
// for all the study groups for each group class
for (int i = 0; i < studyGroupClasses.size(); i++) {
StudyGroupClassBean sgc = (StudyGroupClassBean) studyGroupClasses.get(i);
ArrayList groups = sgdao.findAllByGroupClass(sgc);
sgc.setStudyGroups(groups);
}
request.setAttribute("studyGroupClasses", studyGroupClasses);
// information for the event tabs
session.setAttribute("allDefsArray", allDefs);
session.setAttribute("allDefsNumber", new Integer(allDefs.size()));
session.setAttribute("groupSize", new Integer(studyGroupClasses.size()));
// find all the subjects in current study
ArrayList subjects = sdao.findAllByStudyId(currentStudy.getId());
ArrayList<DisplayStudySubjectBean> displayStudySubs = new ArrayList<DisplayStudySubjectBean>();
// BEGIN LOOPING THROUGH SUBJECTS
for (int i = 0; i < subjects.size(); i++) {
StudySubjectBean studySub = (StudySubjectBean) subjects.get(i);
ArrayList groups = (ArrayList) sgmdao.findAllByStudySubject(studySub.getId());
ArrayList subGClasses = new ArrayList();
for (int j = 0; j < studyGroupClasses.size(); j++) {
StudyGroupClassBean sgc = (StudyGroupClassBean) studyGroupClasses.get(j);
boolean hasClass = false;
for (int k = 0; k < groups.size(); k++) {
SubjectGroupMapBean sgmb = (SubjectGroupMapBean) groups.get(k);
if (sgmb.getGroupClassName().equalsIgnoreCase(sgc.getName())) {
subGClasses.add(sgmb);
hasClass = true;
break;
}
}
if (!hasClass) {
subGClasses.add(new SubjectGroupMapBean());
}
}
ArrayList subEvents = new ArrayList();
// find all events order by definition ordinal
ArrayList events = sedao.findAllByStudySubject(studySub);
for (int j = 0; j < allDefs.size(); j++) {
StudyEventDefinitionBean sed = (StudyEventDefinitionBean) allDefs.get(j);
boolean hasDef = false;
// logger.info("...set blank to "+blankid);
for (int k = 0; k < events.size(); k++) {
StudyEventBean se = (StudyEventBean) events.get(k);
if (se.getStudyEventDefinitionId() == sed.getId()) {
se.setStudyEventDefinition(sed);
// logger.info(">>>found assigned id "+sed.getId()+" sed
// name: "+sed.getName()+" "+se.getId());
subEvents.add(se);
hasDef = true;
}
}
if (!hasDef) {
StudyEventBean blank = new StudyEventBean();
blank.setSubjectEventStatus(SubjectEventStatus.NOT_SCHEDULED);
blank.setStudyEventDefinitionId(sed.getId());
// how can we set the following:
// logger.info("...resetting blank id: "+blank.getId()+" to
// "+blankid);
// blank.setId(blankid);
blank.setStudyEventDefinition(sed);
// logger.info(">>>blank id: "+blank.getId());
// logger.info(">>>found unassigned id "+sed.getId()+" sed
// name: "+sed.getName()+" ");
subEvents.add(blank);
}
}
// logger.info("subevents size after all adds: "+subEvents.size());
// reorganize the events and find the repeating ones
// subEvents:[aa bbb cc d ee]
// finalEvents:[a(2) b(3) c(2) d e(2)]
int prevDefId = 0;
int currDefId = 0;
ArrayList finalEvents = new ArrayList();
int repeatingNum = 1;
int count = 0;
StudyEventBean event = new StudyEventBean();
// begin looping through subject events
for (int j = 0; j < subEvents.size(); j++) {
StudyEventBean se = (StudyEventBean) subEvents.get(j);
currDefId = se.getStudyEventDefinitionId();
if (currDefId != prevDefId) {
// find a new event
if (repeatingNum > 1) {
event.setRepeatingNum(repeatingNum);
repeatingNum = 1;
}
// add current event to final
finalEvents.add(se);
event = se;
count++;
// logger.info("event id? "+event.getId());
} else {
// repeating event
repeatingNum++;
event.getRepeatEvents().add(se);
// event.getRepeatEvents().size());
if (j == subEvents.size() - 1) {
event.setRepeatingNum(repeatingNum);
repeatingNum = 1;
}
}
prevDefId = currDefId;
}
// end looping through subject events
DisplayStudySubjectBean dssb = new DisplayStudySubjectBean();
// logger.info("final events size: "+finalEvents.size());
dssb.setStudyEvents(finalEvents);
dssb.setStudySubject(studySub);
dssb.setStudyGroups(subGClasses);
displayStudySubs.add(dssb);
}
// END LOOPING THROUGH SUBJECTS
// Set a subject property to determine whether to show a signed-type
// icon (electronic signature)
// in the JSP view or not
// Get all event crfs by studyevent id; then use
// EventDefinitionCRFDAO.isRequired to
// determine whether any uncompleted CRFs are required.
boolean isRequiredUncomplete = false;
for (DisplayStudySubjectBean subject : displayStudySubs) {
for (Iterator it = subject.getStudyEvents().iterator(); it.hasNext(); ) {
StudyEventBean event = (StudyEventBean) it.next();
if (event.getSubjectEventStatus() != null && event.getSubjectEventStatus().getId() == 3) {
// disallow the subject from signing any studies
subject.setStudySignable(false);
break;
} else {
// determine whether the subject has any required,
// uncompleted event CRFs
isRequiredUncomplete = eventHasRequiredUncompleteCRFs(event);
if (isRequiredUncomplete) {
subject.setStudySignable(false);
break;
}
}
}
}
fp = new FormProcessor(request);
EntityBeanTable table = fp.getEntityBeanTable();
ArrayList allStudyRows = DisplayStudySubjectRow.generateRowsFromBeans(displayStudySubs);
ArrayList columnArray = new ArrayList();
columnArray.add(resword.getString("study_subject_ID"));
columnArray.add(resword.getString("subject_status"));
columnArray.add(resword.getString("OID"));
columnArray.add(resword.getString("gender"));
// new
columnArray.add(resword.getString("secondary_ID"));
for (int i = 0; i < studyGroupClasses.size(); i++) {
StudyGroupClassBean sgc = (StudyGroupClassBean) studyGroupClasses.get(i);
columnArray.add(sgc.getName());
}
for (int i = 0; i < allDefs.size(); i++) {
StudyEventDefinitionBean sed = (StudyEventDefinitionBean) allDefs.get(i);
columnArray.add(sed.getName());
}
columnArray.add(resword.getString("actions"));
String[] columns = new String[columnArray.size()];
columnArray.toArray(columns);
// String[] columns = {"ID", "Subject Status", "Gender", "Enrollment
// Date",
// "Study Events", "Actions" };
table.setColumns(new ArrayList(Arrays.asList(columns)));
table.setQuery(getBaseURL(), new HashMap());
table.hideColumnLink(columnArray.size() - 1);
// table.addLink("Enroll a new subject",
// "javascript:leftnavExpand('addSubjectRowExpress');");
table.setRows(allStudyRows);
if (filterKeyword != null && !"".equalsIgnoreCase(filterKeyword)) {
table.setKeywordFilter(filterKeyword);
}
table.computeDisplay();
request.setAttribute("table", table);
// request.setAttribute("subjects", subjects);
String idSetting = currentStudy.getStudyParameterConfig().getSubjectIdGeneration();
// set up auto study subject id
if (idSetting.equals("auto editable") || idSetting.equals("auto non-editable")) {
//Shaoyu Su
//int nextLabel = ssdao.findTheGreatestLabel() + 1;
//request.setAttribute("label", new Integer(nextLabel).toString());
request.setAttribute("label", resword.getString("id_generated_Save_Add"));
}
FormDiscrepancyNotes discNotes = new FormDiscrepancyNotes();
session.setAttribute(AddNewSubjectServlet.FORM_DISCREPANCY_NOTES_NAME, discNotes);
forwardPage(getJSP());
}
Aggregations