/* * OpenClinica is distributed under the * GNU Lesser General Public License (GNU LGPL). * For details see: http://www.openclinica.org/license * copyright 2003-2005 Akaza Research */ package org.akaza.openclinica.control.extract; import org.akaza.openclinica.bean.admin.CRFBean; import org.akaza.openclinica.bean.submit.CRFVersionBean; import org.akaza.openclinica.bean.submit.ItemBean; import org.akaza.openclinica.bean.submit.ItemFormMetadataBean; import org.akaza.openclinica.bean.submit.SectionBean; import org.akaza.openclinica.control.core.SecureController; import org.akaza.openclinica.control.form.FormProcessor; import org.akaza.openclinica.control.submit.SubmitDataServlet; import org.akaza.openclinica.dao.admin.CRFDAO; import org.akaza.openclinica.dao.submit.CRFVersionDAO; import org.akaza.openclinica.dao.submit.ItemDAO; import org.akaza.openclinica.dao.submit.ItemFormMetadataDAO; import org.akaza.openclinica.dao.submit.ItemGroupMetadataDAO; import org.akaza.openclinica.dao.submit.SectionDAO; import org.akaza.openclinica.i18n.core.LocaleResolver; import org.akaza.openclinica.view.Page; import org.akaza.openclinica.web.InsufficientPermissionException; import java.util.ArrayList; import java.util.Locale; /** * @author jxu * * View all related metadata for an item */ public class ViewItemDetailServlet extends SecureController { Locale locale; // < ResourceBundle respage; public static String ITEM_ID = "itemId"; public static String ITEM_OID = "itemOid"; public static String ITEM_BEAN = "item"; public static String VERSION_ITEMS = "versionItems"; @Override public void mayProceed() throws InsufficientPermissionException { locale = LocaleResolver.getLocale(request); // < respage = // ResourceBundle.getBundle("org.akaza.openclinica.i18n.page_messages",locale); if (currentStudy.getParentStudyId() == 0 && SubmitDataServlet.mayViewData(ub, currentRole)) { return; } addPageMessage(respage.getString("no_have_correct_privilege_current_study") + respage.getString("change_study_contact_sysadmin")); throw new InsufficientPermissionException(Page.MENU_SERVLET, resexception.getString("not_allowed_access_extract_data_servlet"), "1");// TODO } @Override public void processRequest() throws Exception { FormProcessor fp = new FormProcessor(request); int itemId = fp.getInt(ITEM_ID); String itemOid = fp.getString(ITEM_OID); ItemDAO idao = new ItemDAO(sm.getDataSource()); ItemFormMetadataDAO ifmdao = new ItemFormMetadataDAO(sm.getDataSource()); ItemGroupMetadataDAO igmdao = new ItemGroupMetadataDAO(sm.getDataSource()); CRFVersionDAO cvdao = new CRFVersionDAO(sm.getDataSource()); CRFDAO cdao = new CRFDAO(sm.getDataSource()); SectionDAO sectionDao = new SectionDAO(sm.getDataSource()); if (itemId == 0 && itemOid == null) { addPageMessage(respage.getString("please_choose_an_item_first")); forwardPage(Page.ITEM_DETAIL); return; } ItemBean item = itemId > 0 ? (ItemBean) idao.findByPK(itemId) : (ItemBean) idao.findByOid(itemOid).get(0); ArrayList versions = idao.findAllVersionsByItemId(item.getId()); ArrayList versionItems = new ArrayList(); CRFBean crf = null; ItemFormMetadataBean imfBean = null; // finds each item metadata for each version for (int i = 0; i < versions.size(); i++) { Integer versionId = (Integer) versions.get(i); CRFVersionBean version = (CRFVersionBean) cvdao.findByPK(versionId.intValue()); if (versionId != null && versionId.intValue() > 0) { // YW 08-22-2007 if (igmdao.versionIncluded(versionId)) { imfBean = ifmdao.findByItemIdAndCRFVersionId(item.getId(), versionId.intValue()); imfBean.setCrfVersionName(version.getName()); crf = (CRFBean) cdao.findByPK(version.getCrfId()); imfBean.setCrfName(crf.getName()); versionItems.add(imfBean); } else { imfBean = ifmdao.findByItemIdAndCRFVersionIdNotInIGM(item.getId(), versionId.intValue()); imfBean.setCrfVersionName(version.getName()); crf = (CRFBean) cdao.findByPK(version.getCrfId()); imfBean.setCrfName(crf.getName()); versionItems.add(imfBean); } } } SectionBean section = (SectionBean) sectionDao.findByPK(imfBean.getSectionId()); request.setAttribute(VERSION_ITEMS, versionItems); request.setAttribute(ITEM_BEAN, item); request.setAttribute("crf", crf); request.setAttribute("section", section); request.setAttribute("ifmdBean", imfBean); forwardPage(Page.ITEM_DETAIL); } }