use of org.akaza.openclinica.web.bean.EntityBeanTable 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());
}
use of org.akaza.openclinica.web.bean.EntityBeanTable in project OpenClinica by OpenClinica.
the class ListStudyUserServlet method processRequest.
@Override
public void processRequest() throws Exception {
FormProcessor fp = new FormProcessor(request);
UserAccountDAO udao = new UserAccountDAO(sm.getDataSource());
ArrayList users = udao.findAllUsersByStudy(currentStudy.getId());
EntityBeanTable table = fp.getEntityBeanTable();
ArrayList allStudyUserRows = StudyUserRoleRow.generateRowsFromBeans(users);
String[] columns = { resword.getString("user_name"), resword.getString("first_name"), resword.getString("last_name"), resword.getString("role"), resword.getString("study_name"), resword.getString("status"), resword.getString("actions") };
table.setColumns(new ArrayList(Arrays.asList(columns)));
table.hideColumnLink(6);
table.setQuery("ListStudyUser", new HashMap());
table.addLink(restext.getString("assign_new_user_to_current_study"), "AssignUserToStudy");
table.setRows(allStudyUserRows);
table.computeDisplay();
request.setAttribute("table", table);
request.setAttribute("siteRoleMap", Role.siteRoleMap);
request.setAttribute("studyRoleMap", Role.studyRoleMap);
request.setAttribute("study", currentStudy);
// request.setAttribute("users", users);
forwardPage(Page.LIST_USER_IN_STUDY);
}
use of org.akaza.openclinica.web.bean.EntityBeanTable 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"));
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);
}
}
use of org.akaza.openclinica.web.bean.EntityBeanTable in project OpenClinica by OpenClinica.
the class ListEventDefinitionServlet method processRequest.
/**
* Processes the request
*/
@Override
public void processRequest() throws Exception {
StudyEventDefinitionDAO edao = new StudyEventDefinitionDAO(sm.getDataSource());
UserAccountDAO sdao = new UserAccountDAO(sm.getDataSource());
EventDefinitionCRFDAO edcdao = new EventDefinitionCRFDAO(sm.getDataSource());
CRFDAO crfDao = new CRFDAO(sm.getDataSource());
CRFVersionDAO crfVersionDao = new CRFVersionDAO(sm.getDataSource());
ArrayList seds = edao.findAllByStudy(currentStudy);
// request.setAttribute("seds", seds);
StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource());
EventCRFDAO ecdao = new EventCRFDAO(sm.getDataSource());
ItemDataDAO iddao = new ItemDataDAO(sm.getDataSource());
for (int i = 0; i < seds.size(); i++) {
StudyEventDefinitionBean sed = (StudyEventDefinitionBean) seds.get(i);
Collection eventDefinitionCRFlist = edcdao.findAllParentsByDefinition(sed.getId());
Map crfWithDefaultVersion = new LinkedHashMap();
for (Iterator it = eventDefinitionCRFlist.iterator(); it.hasNext(); ) {
EventDefinitionCRFBean edcBean = (EventDefinitionCRFBean) it.next();
CRFBean crfBean = (CRFBean) crfDao.findByPK(edcBean.getCrfId());
CRFVersionBean crfVersionBean = (CRFVersionBean) crfVersionDao.findByPK(edcBean.getDefaultVersionId());
logger.info("ED[" + sed.getName() + "]crf[" + crfBean.getName() + "]dv[" + crfVersionBean.getName() + "]");
crfWithDefaultVersion.put(crfBean.getName(), crfVersionBean.getName());
}
sed.setCrfsWithDefaultVersion(crfWithDefaultVersion);
logger.info("CRF size [" + sed.getCrfs().size() + "]");
if (sed.getUpdater().getId() == 0) {
sed.setUpdater(sed.getOwner());
sed.setUpdatedDate(sed.getCreatedDate());
}
if (isPopulated(sed, sedao)) {
sed.setPopulated(true);
}
}
FormProcessor fp = new FormProcessor(request);
EntityBeanTable table = fp.getEntityBeanTable();
ArrayList allStudyRows = StudyEventDefinitionRow.generateRowsFromBeans(seds);
String[] columns = { resword.getString("order"), resword.getString("name"), resword.getString("OID"), resword.getString("repeating"), resword.getString("type"), resword.getString("category"), resword.getString("populated"), resword.getString("date_created"), resword.getString("date_updated"), resword.getString("CRFs"), resword.getString("default_version"), resword.getString("actions") };
table.setColumns(new ArrayList(Arrays.asList(columns)));
// >> tbh #4169 09/2009
table.hideColumnLink(2);
table.hideColumnLink(3);
table.hideColumnLink(4);
table.hideColumnLink(6);
table.hideColumnLink(7);
table.hideColumnLink(8);
table.hideColumnLink(9);
// crfs, tbh
table.hideColumnLink(10);
table.hideColumnLink(11);
table.hideColumnLink(12);
// << tbh 09/2009
table.setQuery("ListEventDefinition", new HashMap());
// if (!currentStudy.getStatus().isLocked()) {
// table.addLink(resworkflow.getString(
// "create_a_new_study_event_definition"), "DefineStudyEvent");
// }
table.setRows(allStudyRows);
table.setPaginated(false);
table.computeDisplay();
request.setAttribute("table", table);
request.setAttribute("defSize", new Integer(seds.size()));
if (request.getParameter("read") != null && request.getParameter("read").equals("true")) {
request.setAttribute("readOnly", true);
}
forwardPage(Page.STUDY_EVENT_DEFINITION_LIST);
}
use of org.akaza.openclinica.web.bean.EntityBeanTable in project OpenClinica by OpenClinica.
the class ListSubjectGroupClassServlet method processRequest.
@Override
public void processRequest() throws Exception {
FormProcessor fp = new FormProcessor(request);
StudyGroupClassDAO sgcdao = new StudyGroupClassDAO(sm.getDataSource());
// YW <<
StudyDAO stdao = new StudyDAO(sm.getDataSource());
int parentStudyId = currentStudy.getParentStudyId();
ArrayList groups = new ArrayList();
if (parentStudyId > 0) {
StudyBean parentStudy = (StudyBean) stdao.findByPK(parentStudyId);
groups = sgcdao.findAllByStudy(parentStudy);
} else {
groups = sgcdao.findAllByStudy(currentStudy);
}
// YW >>
String isReadOnly = request.getParameter("read");
StudyGroupDAO sgdao = new StudyGroupDAO(sm.getDataSource());
for (int i = 0; i < groups.size(); i++) {
StudyGroupClassBean group = (StudyGroupClassBean) groups.get(i);
ArrayList studyGroups = sgdao.findAllByGroupClass(group);
group.setStudyGroups(studyGroups);
}
EntityBeanTable table = fp.getEntityBeanTable();
ArrayList allGroupRows = StudyGroupClassRow.generateRowsFromBeans(groups);
boolean isParentStudy = currentStudy.getParentStudyId() > 0 ? false : true;
request.setAttribute("isParentStudy", isParentStudy);
String[] columns = { resword.getString("subject_group_class"), resword.getString("type"), resword.getString("subject_assignment"), resword.getString("study_name"), resword.getString("subject_groups"), resword.getString("status"), resword.getString("actions") };
table.setColumns(new ArrayList(Arrays.asList(columns)));
table.hideColumnLink(4);
table.hideColumnLink(6);
table.setQuery("ListSubjectGroupClass", new HashMap());
// if (isParentStudy && (!currentStudy.getStatus().isLocked())) {
// table.addLink(resword.getString("create_a_subject_group_class"),
// "CreateSubjectGroupClass");
// }
table.setRows(allGroupRows);
table.computeDisplay();
request.setAttribute("table", table);
if (request.getParameter("read") != null && request.getParameter("read").equals("true")) {
request.setAttribute("readOnly", true);
}
forwardPage(Page.SUBJECT_GROUP_CLASS_LIST);
}
Aggregations