/** createODMfile, added by tbh, 01/2009 */ public HashMap<String, Integer> createODMFile( String odmVersion, long sysTimeBegin, String generalFileDir, DatasetBean datasetBean, StudyBean currentStudy, String generalFileDirCopy, ExtractBean eb, Integer currentStudyId, Integer parentStudyId, String studySubjectNumber) { Integer ssNumber = getStudySubjectNumber(studySubjectNumber); MetaDataCollector mdc = new MetaDataCollector(ds, datasetBean, currentStudy); AdminDataCollector adc = new AdminDataCollector(ds, datasetBean, currentStudy); ClinicalDataCollector cdc = new ClinicalDataCollector(ds, datasetBean, currentStudy); MetaDataCollector.setTextLength(200); if (odmVersion != null) { // by default odmVersion is 1.2 if ("1.3".equals(odmVersion)) { ODMBean odmb = new ODMBean(); odmb.setSchemaLocation("http://www.cdisc.org/ns/odm/v1.3 ODM1-3-0.xsd"); ArrayList<String> xmlnsList = new ArrayList<String>(); xmlnsList.add("xmlns=\"http://www.cdisc.org/ns/odm/v1.3\""); odmb.setXmlnsList(xmlnsList); odmb.setODMVersion("1.3"); mdc.setODMBean(odmb); adc.setOdmbean(odmb); cdc.setODMBean(odmb); } else if ("oc1.2".equals(odmVersion)) { ODMBean odmb = new ODMBean(); // odmb.setSchemaLocation("http://www.cdisc.org/ns/odm/v1.2 OpenClinica-ODM1-2-1.xsd"); odmb.setSchemaLocation("http://www.cdisc.org/ns/odm/v1.2 OpenClinica-ODM1-2-1-OC1.xsd"); ArrayList<String> xmlnsList = new ArrayList<String>(); xmlnsList.add("xmlns=\"http://www.cdisc.org/ns/odm/v1.2\""); xmlnsList.add("xmlns:OpenClinica=\"http://www.openclinica.org/ns/openclinica_odm/v1.2\""); odmb.setXmlnsList(xmlnsList); odmb.setODMVersion("oc1.2"); mdc.setODMBean(odmb); adc.setOdmbean(odmb); cdc.setODMBean(odmb); } else if ("oc1.3".equals(odmVersion)) { ODMBean odmb = mdc.getODMBean(); // odmb.setSchemaLocation("http://www.cdisc.org/ns/odm/v1.3 OpenClinica-ODM1-3-0.xsd"); odmb.setSchemaLocation("http://www.cdisc.org/ns/odm/v1.3 OpenClinica-ODM1-3-0-OC1.xsd"); ArrayList<String> xmlnsList = new ArrayList<String>(); xmlnsList.add("xmlns=\"http://www.cdisc.org/ns/odm/v1.3\""); xmlnsList.add("xmlns:OpenClinica=\"http://www.openclinica.org/ns/openclinica_odm/v1.3\""); odmb.setXmlnsList(xmlnsList); odmb.setODMVersion("oc1.3"); mdc.setODMBean(odmb); adc.setOdmbean(odmb); cdc.setODMBean(odmb); } } ////////////////////////////////////////// ////////// MetaData Extraction ////////// mdc.collectFileData(); MetaDataReportBean metaReport = new MetaDataReportBean(mdc.getOdmStudyMap()); metaReport.setODMVersion(odmVersion); metaReport.setOdmBean(mdc.getODMBean()); metaReport.createChunkedOdmXml(Boolean.TRUE); long sysTimeEnd = System.currentTimeMillis() - sysTimeBegin; String ODMXMLFileName = mdc.getODMBean().getFileOID() + ".xml"; int fId = this.createFileK( ODMXMLFileName, generalFileDir, metaReport.getXmlOutput().toString(), datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, false); if (!"".equals(generalFileDirCopy)) { int fId2 = this.createFileK( ODMXMLFileName, generalFileDirCopy, metaReport.getXmlOutput().toString(), datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, false); } ////////////////////////////////////////// ////////// AdminData Extraction ////////// adc.collectFileData(); AdminDataReportBean adminReport = new AdminDataReportBean(adc.getOdmAdminDataMap()); adminReport.setODMVersion(odmVersion); adminReport.setOdmBean(mdc.getODMBean()); adminReport.createChunkedOdmXml(Boolean.TRUE); sysTimeEnd = System.currentTimeMillis() - sysTimeBegin; fId = this.createFileK( ODMXMLFileName, generalFileDir, adminReport.getXmlOutput().toString(), datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, false); if (!"".equals(generalFileDirCopy)) { int fId2 = this.createFileK( ODMXMLFileName, generalFileDirCopy, adminReport.getXmlOutput().toString(), datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, false); } ////////////////////////////////////////// ////////// ClinicalData Extraction /////// DatasetDAO dsdao = new DatasetDAO(ds); String sql = eb.getDataset().getSQLStatement(); String st_sed_in = dsdao.parseSQLDataset(sql, true, true); String st_itemid_in = dsdao.parseSQLDataset(sql, false, true); int datasetItemStatusId = eb.getDataset().getDatasetItemStatus().getId(); String ecStatusConstraint = dsdao.getECStatusConstraint(datasetItemStatusId); String itStatusConstraint = dsdao.getItemDataStatusConstraint(datasetItemStatusId); Iterator<OdmStudyBase> it = cdc.getStudyBaseMap().values().iterator(); while (it.hasNext()) { OdmStudyBase u = it.next(); ArrayList newRows = dsdao.selectStudySubjects( u.getStudy().getId(), 0, st_sed_in, st_itemid_in, dsdao.genDatabaseDateConstraint(eb), ecStatusConstraint, itStatusConstraint); /////////////// int fromIndex = 0; boolean firstIteration = true; while (fromIndex < newRows.size()) { int toIndex = fromIndex + ssNumber < newRows.size() ? fromIndex + ssNumber : newRows.size() - 1; List x = newRows.subList(fromIndex, toIndex + 1); fromIndex = toIndex + 1; String studySubjectIds = ""; for (int i = 0; i < x.size(); i++) { StudySubjectBean sub = new StudySubjectBean(); sub = (StudySubjectBean) x.get(i); studySubjectIds += "," + sub.getId(); } // for studySubjectIds = studySubjectIds.replaceFirst(",", ""); ClinicalDataUnit cdata = new ClinicalDataUnit( ds, datasetBean, cdc.getOdmbean(), u.getStudy(), cdc.getCategory(), studySubjectIds); cdata.setCategory(cdc.getCategory()); cdata.collectOdmClinicalData(); FullReportBean report = new FullReportBean(); report.setClinicalData(cdata.getOdmClinicalData()); report.setOdmStudyMap(mdc.getOdmStudyMap()); report.setODMVersion(odmVersion); // report.setOdmStudy(mdc.getOdmStudy()); report.setOdmBean(mdc.getODMBean()); if (firstIteration && fromIndex >= newRows.size()) { report.createChunkedOdmXml(Boolean.TRUE, true, true); firstIteration = false; } else if (firstIteration) { report.createChunkedOdmXml(Boolean.TRUE, true, false); firstIteration = false; } else if (fromIndex >= newRows.size()) { report.createChunkedOdmXml(Boolean.TRUE, false, true); } else { report.createChunkedOdmXml(Boolean.TRUE, false, false); } fId = this.createFileK( ODMXMLFileName, generalFileDir, report.getXmlOutput().toString(), datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, false); if (!"".equals(generalFileDirCopy)) { int fId2 = this.createFileK( ODMXMLFileName, generalFileDirCopy, report.getXmlOutput().toString(), datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, false); } } } sysTimeEnd = System.currentTimeMillis() - sysTimeBegin; fId = this.createFileK( ODMXMLFileName, generalFileDir, "</ODM>", datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, true); if (!"".equals(generalFileDirCopy)) { int fId2 = this.createFileK( ODMXMLFileName, generalFileDirCopy, "</ODM>", datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, false); } ////////////////////////////////////////// ////////// pre pagination extraction ///// /* mdc.collectFileData(); adc.collectOdmAdminDataMap(); cdc.collectOdmClinicalDataMap(); FullReportBean report = new FullReportBean(); report.setClinicalDataMap(cdc.getOdmClinicalDataMap()); report.setAdminDataMap(adc.getOdmAdminDataMap()); report.setOdmStudyMap(mdc.getOdmStudyMap()); report.setOdmBean(mdc.getODMBean()); report.setODMVersion(odmVersion); report.createOdmXml(Boolean.TRUE); long sysTimeEnd = System.currentTimeMillis() - sysTimeBegin; String ODMXMLFileName = mdc.getODMBean().getFileOID() + ".xml"; int fId = this.createFile(ODMXMLFileName, generalFileDir, report.getXmlOutput().toString(), datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, true); if (!"".equals(generalFileDirCopy)) { int fId2 = this.createFile(ODMXMLFileName, generalFileDirCopy, report.getXmlOutput().toString(), datasetBean, sysTimeEnd, ExportFormatBean.XMLFILE, false); } */ // return ODMXMLFileName; HashMap answerMap = new HashMap<String, Integer>(); answerMap.put(ODMXMLFileName, new Integer(fId)); return answerMap; }
@RequestMapping(value = "/studies/{study}/metadata", method = RequestMethod.GET) public ModelAndView studyMetadata( Model model, HttpSession session, @PathVariable("study") String studyOid, HttpServletResponse response) throws Exception { ResourceBundleProvider.updateLocale(new Locale("en_US")); StudyBean currentStudy = (StudyBean) session.getAttribute("study"); UserAccountBean userAccount = (UserAccountBean) session.getAttribute("userBean"); UserAccountDAO userAccountDao = new UserAccountDAO(dataSource); userAccount = (UserAccountBean) userAccountDao.findByUserName("root"); StudyDAO studyDao = new StudyDAO(dataSource); currentStudy = studyDao.findByOid(studyOid); MetaDataCollector mdc = new MetaDataCollector(dataSource, currentStudy, getRuleSetRuleDao()); AdminDataCollector adc = new AdminDataCollector(dataSource, currentStudy); // RulesDataCollector rdc = new RulesDataCollector(sm.getDataSource(), // currentStudy,getRuleSetRuleDao()); MetaDataCollector.setTextLength(200); ODMBean odmb = mdc.getODMBean(); odmb.setSchemaLocation("http://www.cdisc.org/ns/odm/v1.3 OpenClinica-ODM1-3-0-OC2-0.xsd"); ArrayList<String> xmlnsList = new ArrayList<String>(); xmlnsList.add("xmlns=\"http://www.cdisc.org/ns/odm/v1.3\""); // xmlnsList.add("xmlns:OpenClinica=\"http://www.openclinica.org/ns/openclinica_odm/v1.3\""); xmlnsList.add("xmlns:OpenClinica=\"http://www.openclinica.org/ns/odm_ext_v130/v3.1\""); xmlnsList.add("xmlns:OpenClinicaRules=\"http://www.openclinica.org/ns/rules/v3.1\""); odmb.setXmlnsList(xmlnsList); odmb.setODMVersion("oc1.3"); mdc.setODMBean(odmb); adc.setOdmbean(odmb); // rdc.setOdmbean(odmb); mdc.collectFileData(); MetaDataReportBean metaReport = new MetaDataReportBean(mdc.getOdmStudyMap(), coreResources); metaReport.setODMVersion("oc1.3"); metaReport.setOdmBean(mdc.getODMBean()); metaReport.createChunkedOdmXml(Boolean.FALSE); adc.collectFileData(); AdminDataReportBean adminReport = new AdminDataReportBean(adc.getOdmAdminDataMap()); adminReport.setODMVersion("oc1.3"); adminReport.setOdmBean(mdc.getODMBean()); adminReport.createChunkedOdmXml(Boolean.FALSE); // rdc.collectFileData(); // RulesDataReportBean rulesReport = new // RulesDataReportBean(rdc.getOdmRulesDataMap(),getCoreResources()); // rulesReport.setODMVersion("oc1.3"); // rulesReport.setOdmBean(mdc.getODMBean()); // rulesReport.createChunkedOdmXml(Boolean.FALSE); FullReportBean report = new FullReportBean(); report.setAdminDataMap(adc.getOdmAdminDataMap()); report.setOdmStudyMap(mdc.getOdmStudyMap()); report.setCoreResources(coreResources); // report.setRulesDataMap(rdc.getOdmRulesDataMap()); report.setOdmBean(mdc.getODMBean()); report.setODMVersion("oc1.3"); report.createStudyMetaOdmXml(Boolean.FALSE); response.setContentType("application/xml"); PrintWriter out = response.getWriter(); out.print(report.getXmlOutput().toString().trim()); return null; }