/** * @param locale * @param olatResource * @param shortTitle * @param olatResourceDetail * @param repositoryRef * @param type * @param exportDirectory * @param anonymizerCallback callback that should be used to anonymize the user names or NULL if * row counter should be used (only for type 2 and 3) * @return */ public boolean selectAndExportResults( final QTIExportFormatter qef, final Long olatResource, final String shortTitle, final String olatResourceDetail, final Long repositoryRef, final File exportDirectory, final String charset, final String fileNameSuffix) { boolean resultsFoundAndExported = false; final List results = qtiResultService.selectResults( olatResource, olatResourceDetail, repositoryRef, qef.getType()); if (results.size() > 0) { final QTIResult res0 = (QTIResult) results.get(0); final QTIObjectTreeBuilder qotb = new QTIObjectTreeBuilder(new Long(res0.getResultSet().getRepositoryRef())); final List qtiItemObjectList = qotb.getQTIItemObjectList(); qef.setQTIItemObjectList(qtiItemObjectList); if (results.size() > 0) { createContentOfExportFile(results, qtiItemObjectList, qef); writeContentToFile(shortTitle, exportDirectory, charset, qef, fileNameSuffix); resultsFoundAndExported = true; } } return resultsFoundAndExported; }
/** writes content of all results to a file */ private String writeContentToFile( final String shortTitle, final File exportDirectory, final String charset, final QTIExportFormatter qef, final String fileNameSuffix) { // defining target filename final StringBuilder tf = new StringBuilder(); tf.append(qef.getFileNamePrefix()); tf.append(Formatter.makeStringFilesystemSave(shortTitle)); tf.append("_"); final DateFormat myformat = new SimpleDateFormat("yyyy-MM-dd__hh-mm-ss__SSS"); final String timestamp = myformat.format(new Date()); tf.append(timestamp); tf.append(fileNameSuffix); final String targetFileName = tf.toString(); ExportUtil.writeContentToFile(targetFileName, qef.getReport(), exportDirectory, charset); return targetFileName; }
/** * @param locale Locale used for export file headers / default values * @param results * @param type * @param anonymizerCallback * @return String */ private void createContentOfExportFile( final List qtiResults, final List qtiItemObjectList, final QTIExportFormatter qef) { qef.openReport(); // formatter has information about how to format the different qti objects final Map mapWithConfigs = qef.getMapWithExportItemConfigs(); final QTIExportItemFactory qeif = new QTIExportItemFactory(mapWithConfigs); while (qtiResults.size() > 0) { final List assessIDresults = stripNextAssessID(qtiResults); qef.openResultSet(new QTIExportSet((QTIResult) assessIDresults.get(0))); for (final Iterator iter = qtiItemObjectList.iterator(); iter.hasNext(); ) { final QTIItemObject element = (QTIItemObject) iter.next(); QTIResult qtir; qtir = element.extractQTIResult(assessIDresults); qef.visit(qeif.getExportItem(qtir, element)); } qef.closeResultSet(); } qef.closeReport(); }
/** * @param qef * @param results * @param qtiItemObjectList * @param shortTitle * @param exportDirectory * @param charset * @param fileNameSuffix * @return */ public String exportResults( final QTIExportFormatter qef, final List results, final List qtiItemObjectList, final String shortTitle, final File exportDirectory, final String charset, final String fileNameSuffix) { String targetFileName = null; qef.setQTIItemObjectList(qtiItemObjectList); if (results.size() > 0) { createContentOfExportFile(results, qtiItemObjectList, qef); targetFileName = writeContentToFile(shortTitle, exportDirectory, charset, qef, fileNameSuffix); } return targetFileName; }