Search in sources :

Example 36 with SectionDAO

use of org.akaza.openclinica.dao.submit.SectionDAO in project OpenClinica by OpenClinica.

the class UrlRewriteServlet method doGet.

/**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request
     * @param response
     * @throws ServletException
     * @throws java.io.IOException
     */
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
    try {
        String requestURI = request.getRequestURI();
        String requestQueryStr = request.getQueryString();
        OpenClinicaResource ocResource = null;
        String requestOIDStr = null;
        String RESTUrlStart = "/ClinicalData/html/view/";
        if ((null != requestURI) && (requestURI.contains("/ClinicalData/html/view/"))) {
            requestOIDStr = requestURI.substring(requestURI.indexOf(RESTUrlStart) + RESTUrlStart.length(), requestURI.length());
        }
        ocResource = getOpenClinicaResourceFromURL(requestOIDStr);
        if (null != ocResource) {
            if (ocResource.isInValid()) {
                response.sendError(HttpServletResponse.SC_NOT_FOUND);
                //request.setAttribute("errorMsg", ocResource.getMessages().get(0));
                errors = new HashMap();
                Validator.addError(errors, "error:", ocResource.getMessages().get(0));
                request.setAttribute("formMessages", errors);
            }
            // "/ViewSectionDataEntry"
            if ((null != ocResource) && (ocResource.getFormVersionOID() != null)) {
                HashMap<String, String> mapQueryParams = getQueryStringParameters(requestQueryStr);
                // set the required parameters into request
                if (null != ocResource.getEventDefinitionCrfId()) {
                    request.setAttribute("eventDefinitionCRFId", ocResource.getEventDefinitionCrfId());
                }
                if (null != ocResource.getEventCrfId()) {
                    request.setAttribute("ecId", ocResource.getEventCrfId().toString());
                }
                if (null != ocResource.getStudyEventId()) {
                    request.setAttribute("eventId", ocResource.getStudyEventId().toString());
                }
                if (null != ocResource.getStudySubjectID()) {
                    request.setAttribute("studySubjectId", ocResource.getStudySubjectID().toString());
                // request.setAttribute("exitTo", "ViewStudySubject?id=" +
                // ocResource.getStudySubjectID());
                }
                // request.setAttribute("crfVersionId","");
                if ((null != mapQueryParams) && (mapQueryParams.size() != 0)) {
                    if (mapQueryParams.containsKey("tabId")) {
                        request.setAttribute("tabId", mapQueryParams.get("tabId"));
                    }
                    /*   else
		                    	{
		                    	request.setAttribute("tabId", new Integer(1));
		                    	}*/
                    if ((null != ocResource.getStudySubjectID()) && (mapQueryParams.containsKey("exitTo"))) {
                        request.setAttribute("exitTo", "ViewStudySubject?id=" + ocResource.getStudySubjectID());
                    }
                    //@pgawade 16-Aug-2012: fix for issue https://issuetracker.openclinica.com/view.php?id=12343#c55853
                    //retrieve sectionId from tabId
                    SectionDAO sdao = new SectionDAO(getDataSource());
                    if (mapQueryParams.containsKey("tabId")) {
                        HashMap sectionIdMap = sdao.getSectionIdForTabId(ocResource.getFormVersionID(), Integer.parseInt(mapQueryParams.get("tabId")));
                        Integer sectionId = null;
                        if ((sectionIdMap != null) && (sectionIdMap.size() != 0)) {
                            sectionId = (Integer) sectionIdMap.get("section_id");
                        }
                        if (null != sectionId) {
                            request.setAttribute("sectionId", sectionId);
                        }
                    }
                /* else{
		                    	request.setAttribute("sectionId",1);
		                    }*/
                }
                //ToDo: Changes to work on to fix #0012507
                //		                else{
                //		                	request.setAttribute("crfId", ocResource.getFormID());
                //		                	request.setAttribute("crfVersionId", ocResource.getFormVersionID());
                //		                	request.setAttribute("module", "?");
                //		                }
                forwardPage(Page.VIEW_SECTION_DATA_ENTRY_SERVLET_REST_URL, request, response);
            // response.sendRedirect(Page.VIEW_SECTION_DATA_ENTRY_SERVLET.getFileName());
            }
        }
    // implement other RESTful URLs here forwarding to corresponding
    // pages of application
    // (and associated combinations of mode and format)
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : HashMap(java.util.HashMap) ServletException(javax.servlet.ServletException) InsufficientPermissionException(org.akaza.openclinica.web.InsufficientPermissionException) SectionDAO(org.akaza.openclinica.dao.submit.SectionDAO)

Example 37 with SectionDAO

use of org.akaza.openclinica.dao.submit.SectionDAO in project OpenClinica by OpenClinica.

the class CreateFiltersTwoServlet method processRequest.

// < ResourceBundle restext,resword,respage,resexception;
@Override
public void processRequest() throws Exception {
    // we can't get to here without an action:
    // begin--takes us to specify parameters,
    // where the user will select CRF, then section,
    // then parameters of the section: a little tricky
    // to do entirely with javascript, but can be done.
    // possible to set up the CRF-section relationship,
    // and then have a screen 3.5 with the parameters?
    // criteria--takes us to specify criteria, that is,
    // to specify and, or, not and, etc. here we'll take the
    // list we just generated online and generate a chain
    // of filterobjectbeans, which will in turn,
    // generate the SQL add on for the dataset.
    String action = request.getParameter("action");
    StudyBean studyWithEventDefs = currentStudy;
    if (currentStudy.getParentStudyId() > 0) {
        studyWithEventDefs = new StudyBean();
        studyWithEventDefs.setId(currentStudy.getParentStudyId());
    }
    if (StringUtil.isBlank(action)) {
    // throw an error
    } else if ("begin".equalsIgnoreCase(action)) {
        StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource());
        HashMap events = sedao.findCRFsByStudy(studyWithEventDefs);
        // if events are empty -- resend to first filter page with message
        if (events.isEmpty()) {
            addPageMessage(respage.getString("no_CRF_assigned_pick_another"));
            FormProcessor fp = new FormProcessor(request);
            FilterDAO fdao = new FilterDAO(sm.getDataSource());
            EntityBeanTable table = fp.getEntityBeanTable();
            ArrayList filters = (ArrayList) fdao.findAll();
            ArrayList filterRows = FilterRow.generateRowsFromBeans(filters);
            String[] columns = { resword.getString("filter_name"), resword.getString("description"), resword.getString("created_by"), resword.getString("created_date"), resword.getString("status"), resword.getString("actions") };
            table.setColumns(new ArrayList(Arrays.asList(columns)));
            table.hideColumnLink(5);
            table.addLink(resword.getString("create_new_filter"), "CreateFiltersOne?action=begin");
            table.setQuery("CreateFiltersOne", new HashMap());
            table.setRows(filterRows);
            table.computeDisplay();
            request.setAttribute("table", table);
            forwardPage(Page.CREATE_FILTER_SCREEN_1);
        } else {
            // else, send to the following page:
            request.setAttribute("events", events);
            forwardPage(Page.CREATE_FILTER_SCREEN_3);
        }
    } else if ("crfselected".equalsIgnoreCase(action)) {
        // get the crf id, return to a new page with sections
        // and parameters attached, tbh
        FormProcessor fp = new FormProcessor(request);
        HashMap errors = new HashMap();
        int crfId = fp.getInt("crfId");
        if (crfId > 0) {
            CRFVersionDAO cvDAO = new CRFVersionDAO(sm.getDataSource());
            CRFDAO cDAO = new CRFDAO(sm.getDataSource());
            SectionDAO secDAO = new SectionDAO(sm.getDataSource());
            Collection sections = secDAO.findByVersionId(crfId);
            CRFVersionBean cvBean = (CRFVersionBean) cvDAO.findByPK(crfId);
            CRFBean cBean = (CRFBean) cDAO.findByPK(cvBean.getCrfId());
            request.setAttribute("sections", sections);
            session.setAttribute("cBean", cBean);
            // for further pages,
            session.setAttribute("cvBean", cvBean);
            // tbh
            forwardPage(Page.CREATE_FILTER_SCREEN_3_1);
        } else {
            addPageMessage(respage.getString("select_a_CRF_before_picking"));
            StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource());
            HashMap events = sedao.findCRFsByStudy(studyWithEventDefs);
            request.setAttribute("events", events);
            forwardPage(Page.CREATE_FILTER_SCREEN_3);
        }
    } else if ("sectionselected".equalsIgnoreCase(action)) {
        // TODO set the crf and the section into session,
        // allow for the user to go back and forth,
        // set up the questions to be picked,
        // allow the user to move on to create_filter_screen_4
        FormProcessor fp = new FormProcessor(request);
        int sectionId = fp.getInt("sectionId");
        if (sectionId > 0) {
            SectionDAO secDAO = new SectionDAO(sm.getDataSource());
            SectionBean secBean = (SectionBean) secDAO.findByPK(sectionId);
            session.setAttribute("secBean", secBean);
            ItemFormMetadataDAO ifmDAO = new ItemFormMetadataDAO(sm.getDataSource());
            Collection metadatas = ifmDAO.findAllBySectionId(sectionId);
            if (metadatas.size() > 0) {
                request.setAttribute("metadatas", metadatas);
                forwardPage(Page.CREATE_FILTER_SCREEN_3_2);
            } else {
                CRFVersionBean cvBean = (CRFVersionBean) session.getAttribute("cvBean");
                addPageMessage(respage.getString("section_not_have_questions_select_another"));
                // SectionDAO secDAO = new SectionDAO(sm.getDataSource());
                Collection sections = secDAO.findByVersionId(cvBean.getId());
                request.setAttribute("sections", sections);
                forwardPage(Page.CREATE_FILTER_SCREEN_3_1);
            }
        } else {
            CRFVersionBean cvBean = (CRFVersionBean) session.getAttribute("cvBean");
            addPageMessage(respage.getString("select_section_before_select_question"));
            SectionDAO secDAO = new SectionDAO(sm.getDataSource());
            Collection sections = secDAO.findByVersionId(cvBean.getId());
            request.setAttribute("sections", sections);
            forwardPage(Page.CREATE_FILTER_SCREEN_3_1);
        }
    } else if ("questionsselected".equalsIgnoreCase(action)) {
        ArrayList alist = this.extractIdsFromForm();
        // and send the user to create_filter_screen_4
        if (alist.size() > 0) {
            ItemFormMetadataDAO ifmDAO = new ItemFormMetadataDAO(sm.getDataSource());
            Collection questions = ifmDAO.findByMultiplePKs(alist);
            session.setAttribute("questions", questions);
            forwardPage(Page.CREATE_FILTER_SCREEN_4);
        } else {
            SectionBean secBean = (SectionBean) session.getAttribute("secBean");
            addPageMessage(respage.getString("select_questions_before_set_parameters"));
            ItemFormMetadataDAO ifmDAO = new ItemFormMetadataDAO(sm.getDataSource());
            Collection metadatas = ifmDAO.findAllBySectionId(secBean.getId());
            request.setAttribute("metadatas", metadatas);
            forwardPage(Page.CREATE_FILTER_SCREEN_3_2);
        }
    } else if ("validatecriteria".equalsIgnoreCase(action)) {
        // TODO look at the criteria and create a list of filterobjectdata
        // beans, so that we can create the SQL later on in
        // the process.
        // also, throw the user back to the process or throw
        // them forward into the createServletThree process
        FormProcessor fp = new FormProcessor(request);
        String logical = fp.getString("logical");
        ArrayList questions = (ArrayList) session.getAttribute("questions");
        ArrayList filterobjects = new ArrayList();
        // (ArrayList)session.getAttribute("filterobjects");
        Iterator q_it = questions.iterator();
        int arrCnt = 0;
        while (q_it.hasNext()) {
            ItemFormMetadataBean ifmBean = (ItemFormMetadataBean) q_it.next();
            String opString = "operator:" + ifmBean.getId();
            String valString = "value:" + ifmBean.getId();
            String remString = "remove:" + ifmBean.getId();
            if ("remove".equals(fp.getString(remString))) {
                logger.info("found the string: " + remString);
                // TODO remove the question from from the list,
                // redirect to that page again????? <--maybe not?
                // questions.remove(arrCnt);
                // shouldn't have to remove the above, just do nothing
                arrCnt++;
            } else {
                String operator = fp.getString(opString);
                String value = fp.getString(valString);
                FilterObjectBean fob = new FilterObjectBean();
                fob.setItemId(ifmBean.getId());
                fob.setItemName(ifmBean.getHeader() + " " + ifmBean.getLeftItemText() + " " + ifmBean.getRightItemText());
                // case operator:
                if ("equal to".equalsIgnoreCase(operator)) {
                    fob.setOperand("=");
                } else if ("greater than".equalsIgnoreCase(operator)) {
                    fob.setOperand(">");
                } else if ("less than".equalsIgnoreCase(operator)) {
                    fob.setOperand("<");
                } else if ("greater than or equal".equalsIgnoreCase(operator)) {
                    fob.setOperand(">=");
                } else if ("less than or equal".equalsIgnoreCase(operator)) {
                    fob.setOperand("<=");
                } else if ("like".equalsIgnoreCase(operator)) {
                    fob.setOperand(" like ");
                } else if ("not like".equalsIgnoreCase(operator)) {
                    fob.setOperand(" not like ");
                } else {
                    fob.setOperand("!=");
                }
                fob.setValue(value);
                filterobjects.add(fob);
            }
        // end else
        //
        }
        // end while
        session.setAttribute("questions", questions);
        // TODO where does the connector come into play?
        // session.setAttribute("filterobjects",filterobjects);
        FilterDAO fDAO = new FilterDAO(sm.getDataSource());
        String newSQL = (String) session.getAttribute("newSQL");
        ArrayList newExp = (ArrayList) session.getAttribute("newExp");
        // human readable explanation
        String newNewSQL = fDAO.genSQLStatement(newSQL, logical, filterobjects);
        ArrayList newNewExp = fDAO.genExplanation(newExp, logical, filterobjects);
        if (arrCnt == questions.size()) {
            newNewSQL = newSQL;
            newNewExp = newExp;
        // don't change anything, if we've removed everything from this
        // list
        }
        logger.info("new SQL Generated: " + newNewSQL);
        String sub = fp.getString("submit");
        if ("Specify Filter Metadata".equals(sub)) {
            // add new params, create the filter object,
            // and go to create metadata
            FilterBean fb = new FilterBean();
            fb.setSQLStatement(newNewSQL + ")");
            // adding parens here to finish off other
            // statement--might add first part of statement here
            // for legibility's sake
            // tbh 06-02-2005
            session.removeAttribute("newSQL");
            // end of the road
            session.setAttribute("newFilter", fb);
            request.setAttribute("statuses", getStatuses());
            forwardPage(Page.CREATE_FILTER_SCREEN_5);
        } else {
            // replace the 'old' sql with the new sql gathered from the
            // session
            session.setAttribute("newSQL", newNewSQL);
            session.setAttribute("newExp", newNewExp);
            // add new params, and go back
            StudyEventDAO sedao = new StudyEventDAO(sm.getDataSource());
            HashMap events = sedao.findCRFsByStudy(currentStudy);
            //
            request.setAttribute("events", events);
            forwardPage(Page.CREATE_FILTER_SCREEN_3);
        }
    }
}
Also used : CRFDAO(org.akaza.openclinica.dao.admin.CRFDAO) CRFVersionDAO(org.akaza.openclinica.dao.submit.CRFVersionDAO) HashMap(java.util.HashMap) FormProcessor(org.akaza.openclinica.control.form.FormProcessor) EntityBeanTable(org.akaza.openclinica.web.bean.EntityBeanTable) StudyBean(org.akaza.openclinica.bean.managestudy.StudyBean) ArrayList(java.util.ArrayList) CRFBean(org.akaza.openclinica.bean.admin.CRFBean) SectionBean(org.akaza.openclinica.bean.submit.SectionBean) FilterDAO(org.akaza.openclinica.dao.extract.FilterDAO) StudyEventDAO(org.akaza.openclinica.dao.managestudy.StudyEventDAO) Iterator(java.util.Iterator) FilterObjectBean(org.akaza.openclinica.bean.extract.FilterObjectBean) Collection(java.util.Collection) CRFVersionBean(org.akaza.openclinica.bean.submit.CRFVersionBean) ItemFormMetadataDAO(org.akaza.openclinica.dao.submit.ItemFormMetadataDAO) ItemFormMetadataBean(org.akaza.openclinica.bean.submit.ItemFormMetadataBean) SectionDAO(org.akaza.openclinica.dao.submit.SectionDAO) FilterBean(org.akaza.openclinica.bean.extract.FilterBean)

Example 38 with SectionDAO

use of org.akaza.openclinica.dao.submit.SectionDAO in project OpenClinica by OpenClinica.

the class TableOfContentsServlet method getDisplayBeanWithShownSections.

/**
     * A section contains all hidden dynamics will be removed from data entry tab and jump box.
     *
     * @param ds
     * @param displayTableOfContentsBean
     * @param dynamicsMetadataService
     * @return
     */
public static DisplayTableOfContentsBean getDisplayBeanWithShownSections(DataSource ds, DisplayTableOfContentsBean displayTableOfContentsBean, DynamicsMetadataService dynamicsMetadataService) {
    if (displayTableOfContentsBean == null) {
        return displayTableOfContentsBean;
    }
    EventCRFBean ecb = displayTableOfContentsBean.getEventCRF();
    SectionDAO sectionDAO = new SectionDAO(ds);
    ArrayList<SectionBean> sectionBeans = getSections(ecb, ds);
    ArrayList<SectionBean> showSections = new ArrayList<SectionBean>();
    if (sectionBeans != null && sectionBeans.size() > 0) {
        for (SectionBean s : sectionBeans) {
            if (sectionDAO.containNormalItem(s.getCRFVersionId(), s.getId())) {
                showSections.add(s);
            } else {
                //for section contains dynamics, does it contain showing item_group/item?
                if (dynamicsMetadataService.hasShowingDynGroupInSection(s.getId(), s.getCRFVersionId(), ecb.getId())) {
                    showSections.add(s);
                } else {
                    if (dynamicsMetadataService.hasShowingDynItemInSection(s.getId(), s.getCRFVersionId(), ecb.getId())) {
                        showSections.add(s);
                    }
                }
            }
        }
        displayTableOfContentsBean.setSections(showSections);
    }
    return displayTableOfContentsBean;
}
Also used : SectionBean(org.akaza.openclinica.bean.submit.SectionBean) EventCRFBean(org.akaza.openclinica.bean.submit.EventCRFBean) DisplayEventCRFBean(org.akaza.openclinica.bean.submit.DisplayEventCRFBean) ArrayList(java.util.ArrayList) SectionDAO(org.akaza.openclinica.dao.submit.SectionDAO)

Example 39 with SectionDAO

use of org.akaza.openclinica.dao.submit.SectionDAO in project OpenClinica by OpenClinica.

the class TableOfContentsServlet method getDisplayBean.

public static DisplayTableOfContentsBean getDisplayBean(EventCRFBean ecb, DataSource ds, StudyBean currentStudy) {
    DisplayTableOfContentsBean answer = new DisplayTableOfContentsBean();
    answer.setEventCRF(ecb);
    // get data
    StudySubjectDAO ssdao = new StudySubjectDAO(ds);
    StudySubjectBean ssb = (StudySubjectBean) ssdao.findByPK(ecb.getStudySubjectId());
    answer.setStudySubject(ssb);
    StudyEventDAO sedao = new StudyEventDAO(ds);
    StudyEventBean seb = (StudyEventBean) sedao.findByPK(ecb.getStudyEventId());
    answer.setStudyEvent(seb);
    SectionDAO sdao = new SectionDAO(ds);
    ArrayList sections = getSections(ecb, ds);
    answer.setSections(sections);
    // get metadata
    StudyEventDefinitionDAO seddao = new StudyEventDefinitionDAO(ds);
    StudyEventDefinitionBean sedb = (StudyEventDefinitionBean) seddao.findByPK(seb.getStudyEventDefinitionId());
    answer.setStudyEventDefinition(sedb);
    CRFVersionDAO cvdao = new CRFVersionDAO(ds);
    CRFVersionBean cvb = (CRFVersionBean) cvdao.findByPK(ecb.getCRFVersionId());
    answer.setCrfVersion(cvb);
    CRFDAO cdao = new CRFDAO(ds);
    CRFBean cb = (CRFBean) cdao.findByPK(cvb.getCrfId());
    answer.setCrf(cb);
    StudyBean studyForStudySubject = new StudyDAO(ds).findByStudySubjectId(ssb.getId());
    EventDefinitionCRFDAO edcdao = new EventDefinitionCRFDAO(ds);
    EventDefinitionCRFBean edcb = edcdao.findByStudyEventDefinitionIdAndCRFId(studyForStudySubject, sedb.getId(), cb.getId());
    answer.setEventDefinitionCRF(edcb);
    answer.setAction(getActionForStage(ecb.getStage()));
    return answer;
}
Also used : EventDefinitionCRFDAO(org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO) EventCRFDAO(org.akaza.openclinica.dao.submit.EventCRFDAO) CRFDAO(org.akaza.openclinica.dao.admin.CRFDAO) CRFVersionDAO(org.akaza.openclinica.dao.submit.CRFVersionDAO) StudyBean(org.akaza.openclinica.bean.managestudy.StudyBean) ArrayList(java.util.ArrayList) DisplayTableOfContentsBean(org.akaza.openclinica.bean.submit.DisplayTableOfContentsBean) StudyEventDefinitionBean(org.akaza.openclinica.bean.managestudy.StudyEventDefinitionBean) EventDefinitionCRFDAO(org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO) StudyEventBean(org.akaza.openclinica.bean.managestudy.StudyEventBean) StudySubjectDAO(org.akaza.openclinica.dao.managestudy.StudySubjectDAO) EventDefinitionCRFBean(org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean) EventCRFBean(org.akaza.openclinica.bean.submit.EventCRFBean) CRFBean(org.akaza.openclinica.bean.admin.CRFBean) DisplayEventCRFBean(org.akaza.openclinica.bean.submit.DisplayEventCRFBean) StudySubjectBean(org.akaza.openclinica.bean.managestudy.StudySubjectBean) StudyEventDefinitionDAO(org.akaza.openclinica.dao.managestudy.StudyEventDefinitionDAO) StudyEventDAO(org.akaza.openclinica.dao.managestudy.StudyEventDAO) CRFVersionBean(org.akaza.openclinica.bean.submit.CRFVersionBean) EventDefinitionCRFBean(org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean) StudyDAO(org.akaza.openclinica.dao.managestudy.StudyDAO) SectionDAO(org.akaza.openclinica.dao.submit.SectionDAO)

Example 40 with SectionDAO

use of org.akaza.openclinica.dao.submit.SectionDAO in project OpenClinica by OpenClinica.

the class FormBeanUtil method createDisplaySectionBWithFormGroupsForPrint.

public DisplaySectionBean createDisplaySectionBWithFormGroupsForPrint(int sectionId, int crfVersionId, DataSource dataSource, int eventCRFDefId, EventCRFBean eventCrfBean, ServletContext context) {
    DisplaySectionBean displaySectionBean = new DisplaySectionBean();
    ItemGroupDAO formGroupDAO = new ItemGroupDAO(dataSource);
    ItemGroupMetadataDAO igMetaDAO = new ItemGroupMetadataDAO(dataSource);
    ItemDAO itemDao = new ItemDAO(dataSource);
    ItemFormMetadataDAO metaDao = new ItemFormMetadataDAO(dataSource);
    SectionDAO sectionDao = new SectionDAO(dataSource);
    // Give the DisplaySectionBean a legitimate SectionBean
    SectionBean secBean = (SectionBean) sectionDao.findByPK(sectionId);
    displaySectionBean.setSection(secBean);
    // changed from: findGroupBySectionId
    List<ItemGroupBean> itemGroupBeans = formGroupDAO.findLegitGroupAllBySectionId(sectionId);
    // all items associated with the section, including those not in a group
    List<ItemFormMetadataBean> allMetas = new ArrayList<ItemFormMetadataBean>();
    try {
        allMetas = metaDao.findAllBySectionId(sectionId);
    } catch (OpenClinicaException oce) {
        logger.info("oce.getOpenClinicaMessage() = " + oce.getOpenClinicaMessage());
    }
    // Sort these items according to their position on the CRF; their
    // ordinal
    Collections.sort(allMetas);
    // The DisplayItemGroupBean(s) for "nongrouped" items
    List<DisplayItemGroupBean> nonGroupBeans = null;
    // if(itemGroupBeans.isEmpty()) return displaySectionBean;
    // Find out whether there are any checkboxes/radios/select elements
    // and if so, get any null values
    // associated with them
    List<String> nullValuesList = new ArrayList<String>();
    boolean itemsHaveChecksRadios = itemsIncludeChecksRadiosSelects(allMetas);
    if (itemsHaveChecksRadios && eventCRFDefId > 0) {
        // method returns null values as a List<String>
        nullValuesList = this.getNullValuesByEventCRFDefId(eventCRFDefId, dataSource);
    }
    // Get the items associated with each group
    List<ItemBean> itBeans;
    List<DisplayItemBean> displayItems;
    List<DisplayItemGroupBean> displayFormBeans = new ArrayList<DisplayItemGroupBean>();
    DisplayItemGroupBean displayItemGBean;
    for (ItemGroupBean itemGroup : itemGroupBeans) {
        //TODO:fix me!
        itBeans = itemDao.findAllItemsByGroupIdForPrint(itemGroup.getId(), crfVersionId, sectionId);
        logger.debug("just ran find all by group id " + itemGroup.getId() + " found " + itBeans.size() + " item beans");
        //TODO:fix me add item_form_metadata.section_id to the query
        List<ItemGroupMetadataBean> metadata = igMetaDAO.findMetaByGroupAndSectionForPrint(itemGroup.getId(), crfVersionId, sectionId);
        if (!metadata.isEmpty()) {
            // for a given crf version, all the items in the same group
            // have the same group metadata info
            // so we can get one of the metadata and set the metadata for
            // the group
            ItemGroupMetadataBean meta = metadata.get(0);
            itemGroup.setMeta(meta);
        }
        displayItems = getDisplayBeansFromItemsForPrint(itBeans, dataSource, eventCrfBean, sectionId, nullValuesList, context, crfVersionId);
        displayItemGBean = this.createDisplayFormGroup(displayItems, itemGroup);
        displayFormBeans.add(displayItemGBean);
    }
    // We still have to sort these display item group beans on their
    // ItemGroupMetadataBean?
    // then number their ordinals accordingly
    Collections.sort(displayFormBeans, new Comparator<DisplayItemGroupBean>() {

        public int compare(DisplayItemGroupBean displayItemGroupBean, DisplayItemGroupBean displayItemGroupBean1) {
            return displayItemGroupBean.getGroupMetaBean().compareTo(displayItemGroupBean1.getGroupMetaBean());
        }
    });
    // Now provide the display item group beans with an ordinal
    int digOrdinal = 0;
    for (DisplayItemGroupBean digBean : displayFormBeans) {
        digBean.setOrdinal(++digOrdinal);
    }
    // find out whether there are any ungrouped items by comparing the
    // number of
    // grouped items to allMetas.size()
    // List<DisplayItemGroupBean> nonGroupBeans=null;
    int tempCount = 0;
    for (DisplayItemGroupBean groupBean : displayFormBeans) {
        tempCount += groupBean.getItems().size();
    }
    if (tempCount < allMetas.size()) {
        nonGroupBeans = createGroupBeansForNongroupedItems(allMetas, displayFormBeans, sectionId, dataSource, nullValuesList, eventCrfBean, context);
    }
    if (nonGroupBeans != null) {
        displayFormBeans.addAll(nonGroupBeans);
    }
    // sort the list according to the ordinal of the contained
    // DisplayItemGroupBeans
    Collections.sort(displayFormBeans, new Comparator<DisplayItemGroupBean>() {

        public int compare(DisplayItemGroupBean disFormGroupBean, DisplayItemGroupBean disFormGroupBean1) {
            Integer compInt = disFormGroupBean1.getOrdinal();
            Integer compInt2 = disFormGroupBean.getOrdinal();
            return compInt2.compareTo(compInt);
        }
    });
    displaySectionBean.setDisplayFormGroups(displayFormBeans);
    return displaySectionBean;
}
Also used : DisplayItemBean(org.akaza.openclinica.bean.submit.DisplayItemBean) ItemBean(org.akaza.openclinica.bean.submit.ItemBean) ItemDAO(org.akaza.openclinica.dao.submit.ItemDAO) ItemGroupDAO(org.akaza.openclinica.dao.submit.ItemGroupDAO) ArrayList(java.util.ArrayList) OpenClinicaException(org.akaza.openclinica.exception.OpenClinicaException) ItemGroupMetadataBean(org.akaza.openclinica.bean.submit.ItemGroupMetadataBean) DisplayItemBean(org.akaza.openclinica.bean.submit.DisplayItemBean) ItemFormMetadataDAO(org.akaza.openclinica.dao.submit.ItemFormMetadataDAO) DisplayItemGroupBean(org.akaza.openclinica.bean.submit.DisplayItemGroupBean) DisplaySectionBean(org.akaza.openclinica.bean.submit.DisplaySectionBean) ItemGroupMetadataDAO(org.akaza.openclinica.dao.submit.ItemGroupMetadataDAO) SectionBean(org.akaza.openclinica.bean.submit.SectionBean) DisplaySectionBean(org.akaza.openclinica.bean.submit.DisplaySectionBean) DisplayItemGroupBean(org.akaza.openclinica.bean.submit.DisplayItemGroupBean) ItemGroupBean(org.akaza.openclinica.bean.submit.ItemGroupBean) ItemFormMetadataBean(org.akaza.openclinica.bean.submit.ItemFormMetadataBean) SectionDAO(org.akaza.openclinica.dao.submit.SectionDAO)

Aggregations

SectionDAO (org.akaza.openclinica.dao.submit.SectionDAO)40 SectionBean (org.akaza.openclinica.bean.submit.SectionBean)35 ArrayList (java.util.ArrayList)31 EventCRFBean (org.akaza.openclinica.bean.submit.EventCRFBean)28 DisplaySectionBean (org.akaza.openclinica.bean.submit.DisplaySectionBean)19 FormProcessor (org.akaza.openclinica.control.form.FormProcessor)18 CRFVersionDAO (org.akaza.openclinica.dao.submit.CRFVersionDAO)18 EventDefinitionCRFBean (org.akaza.openclinica.bean.managestudy.EventDefinitionCRFBean)17 CRFVersionBean (org.akaza.openclinica.bean.submit.CRFVersionBean)17 HashMap (java.util.HashMap)16 CRFBean (org.akaza.openclinica.bean.admin.CRFBean)14 CRFDAO (org.akaza.openclinica.dao.admin.CRFDAO)14 EventCRFDAO (org.akaza.openclinica.dao.submit.EventCRFDAO)14 StudyBean (org.akaza.openclinica.bean.managestudy.StudyBean)13 EventDefinitionCRFDAO (org.akaza.openclinica.dao.managestudy.EventDefinitionCRFDAO)12 ItemDataDAO (org.akaza.openclinica.dao.submit.ItemDataDAO)12 DisplayItemGroupBean (org.akaza.openclinica.bean.submit.DisplayItemGroupBean)11 ItemGroupBean (org.akaza.openclinica.bean.submit.ItemGroupBean)11 ItemGroupDAO (org.akaza.openclinica.dao.submit.ItemGroupDAO)11 ItemDataBean (org.akaza.openclinica.bean.submit.ItemDataBean)10