List of usage examples for org.dom4j DocumentFactory getInstance
public static synchronized DocumentFactory getInstance()
From source file:org.nuxeo.template.XMLSerializer.java
License:Open Source License
public static String serialize(List<TemplateInput> params) { Element root = DocumentFactory.getInstance().createElement(fieldsTag); for (TemplateInput input : params) { Element field = root.addElement(fieldTag); field.addAttribute("name", input.getName()); InputType type = input.getType(); if (type == null) { log.warn(input.getName() + " is null"); }//from ww w.j ava2 s. c o m field.addAttribute("type", type.getValue()); if (input.isReadOnly()) { field.addAttribute("readonly", "true"); } if (input.isAutoLoop()) { field.addAttribute("autoloop", "true"); } if (InputType.StringValue.equals(type)) { field.addAttribute("value", input.getStringValue()); } else if (InputType.DateValue.equals(type)) { field.addAttribute("value", dateFormat.format(input.getDateValue())); } else if (InputType.BooleanValue.equals(type)) { field.addAttribute("value", input.getBooleanValue().toString()); } else { field.addAttribute("source", input.getSource()); } if (input.getDesciption() != null) { field.setText(input.getDesciption()); } } return root.asXML(); }
From source file:org.ofbiz.entity.CsvEntityFileReader.java
License:Apache License
@Override public String getEntitiesInXml(InputStream is) throws Exception { CSVReader reader = new CSVReader(new InputStreamReader(is)); String entityName = this.readEntityName(reader); Map<Integer, String> attrNameMap = this.readAttributeNames(reader); this.doc = DocumentFactory.getInstance().createDocument("UTF-8"); this.root = this.doc.addElement("entity-engine-xml"); String[] nextLine;/*from ww w .java 2 s.c o m*/ String key; String value; while ((nextLine = reader.readNext()) != null) { int len = nextLine.length; Element entity = this.root.addElement(entityName); for (int i = 0; i < len; i++) { key = attrNameMap.get(i); value = nextLine[i]; entity.addAttribute(key, value); } } return doc.asXML(); }
From source file:org.ofbiz.entity.XlsEntityFileReader.java
License:Apache License
@Override public String getEntitiesInXml(InputStream is) throws BiffException, IOException { this.doc = DocumentFactory.getInstance().createDocument("UTF-8"); this.root = this.doc.addElement("entity-engine-xml"); Workbook workbook = Workbook.getWorkbook(is); Sheet[] sheets = workbook.getSheets(); for (Sheet sheet : sheets) { getEntities(sheet);//from ww w . j a v a 2s . c o m } return doc.asXML(); }
From source file:org.olat.core.gui.control.generic.textmarker.TextMarkerManagerImpl.java
License:Apache License
/** * @see org.olat.core.gui.control.generic.textmarker.TextMarkerManager#saveToFile(org.olat.core.util.vfs.VFSLeaf, java.util.List) *//*from ww w. j a va 2 s .c o m*/ @Override public void saveToFile(VFSLeaf textMarkerFile, List textMarkerList) { DocumentFactory df = DocumentFactory.getInstance(); Document doc = df.createDocument(); // create root element with version information Element root = df.createElement(XML_ROOT_ELEMENT); root.addAttribute(XML_VERSION_ATTRIBUTE, String.valueOf(VERSION)); doc.setRootElement(root); // add TextMarker elements Iterator iter = textMarkerList.iterator(); while (iter.hasNext()) { TextMarker textMarker = (TextMarker) iter.next(); textMarker.addToElement(root); } OutputStream stream = textMarkerFile.getOutputStream(false); try { XMLWriter writer = new XMLWriter(stream); writer.write(doc); writer.close(); stream.close(); } catch (UnsupportedEncodingException e) { Tracing.logError("Error while saving text marker file", e, TextMarkerManagerImpl.class); } catch (IOException e) { Tracing.logError("Error while saving text marker file", e, TextMarkerManagerImpl.class); } }
From source file:org.olat.ims.qti.editor.ItemPreviewController.java
License:Apache License
private String getQuestionPreview(final Item theItem) { final Element el = DocumentFactory.getInstance().createElement("dummy"); theItem.addToElement(el);/* w w w.j ava2 s . c o m*/ final StringBuilder sb = new StringBuilder(); final org.olat.ims.qti.container.qtielements.Item foo = new org.olat.ims.qti.container.qtielements.Item( (Element) el.elements().get(0)); foo.render(sb, renderInstructions); final String previewWithFormattedMathElements = Formatter.formatLatexFormulas(sb.toString()); final Filter filter = FilterFactory.getBaseURLToMediaRelativeURLFilter(qtiPackage.getMediaBaseURL()); return filter.filter(previewWithFormattedMathElements); }
From source file:org.olat.ims.qti.export.QTIWordExport.java
License:Apache License
public static void renderItem(Item item, OpenXMLDocument document, boolean withResponses, Translator translator) {//w w w .ja v a 2s.c o m Element el = DocumentFactory.getInstance().createElement("dummy"); item.addToElement(el); Element itemEl = (Element) el.elements().get(0); org.olat.ims.qti.container.qtielements.Item foo = new org.olat.ims.qti.container.qtielements.Item(itemEl); RenderInstructions renderInstructions = new RenderInstructions(); renderInstructions.put(RenderInstructions.KEY_STATICS_PATH, "/"); renderInstructions.put(RenderInstructions.KEY_LOCALE, translator.getLocale()); renderInstructions.put(RenderInstructions.KEY_RENDER_TITLE, Boolean.TRUE); if (item.getQuestion() != null) { Map<String, String> iinput = new HashMap<String, String>(); String questionType = null; String questionScore = null; Question question = item.getQuestion(); if (question instanceof ChoiceQuestion) { ChoiceQuestion choice = (ChoiceQuestion) question; if (question.getType() == Question.TYPE_SC) { questionType = translator.translate("item.type.sc"); fetchPointsOfMultipleChoices(itemEl, choice, iinput); } else if (question.getType() == Question.TYPE_MC) { questionType = translator.translate("item.type.mc"); fetchPointsOfMultipleChoices(itemEl, choice, iinput); } else if (question.getType() == Question.TYPE_KPRIM) { questionType = translator.translate("item.type.kprim"); fetchPointsOfKPrim(itemEl, choice, iinput); } } else if (question instanceof FIBQuestion) { questionType = translator.translate("item.type.sc"); for (Response response : question.getResponses()) { FIBResponse fibResponse = (FIBResponse) response; if ("BLANK".equals(fibResponse.getType())) { iinput.put(fibResponse.getIdent(), fibResponse.getCorrectBlank()); } } } else if (question instanceof EssayQuestion) { questionType = translator.translate("item.type.essay"); } if (question != null && question.getMaxValue() > 0.0f) { questionScore = AssessmentHelper.getRoundedScore(question.getMaxValue()); questionScore = translator.translate("item.score.long", new String[] { questionScore }); } renderInstructions.put(RenderInstructions.KEY_RENDER_CORRECT_RESPONSES, new Boolean(withResponses)); renderInstructions.put(RenderInstructions.KEY_CORRECT_RESPONSES_MAP, iinput); renderInstructions.put(RenderInstructions.KEY_QUESTION_TYPE, questionType); renderInstructions.put(RenderInstructions.KEY_QUESTION_SCORE, questionScore); renderInstructions.put(RenderInstructions.KEY_QUESTION_OO_TYPE, new Integer(question.getType())); } foo.renderOpenXML(document, renderInstructions); }
From source file:org.olat.ims.qti.qpool.QTIExportProcessor.java
License:Apache License
private Element createSectionBasedAssessment(String title) { DocumentFactory df = DocumentFactory.getInstance(); Document doc = df.createDocument(); doc.addDocType(QTIConstants.XML_DOCUMENT_ROOT, null, QTIConstants.XML_DOCUMENT_DTD); /*//from ww w. j ava2 s.c o m <questestinterop> <assessment ident="frentix_9_87230240084930" title="SR Test"> */ Element questestinterop = doc.addElement(QTIConstants.XML_DOCUMENT_ROOT); Element assessment = questestinterop.addElement("assessment"); assessment.addAttribute("ident", CodeHelper.getGlobalForeverUniqueID()); assessment.addAttribute("title", title); //metadata /* <qtimetadata> <qtimetadatafield> <fieldlabel>qmd_assessmenttype</fieldlabel> <fieldentry>Assessment</fieldentry> </qtimetadatafield> </qtimetadata> */ Element qtimetadata = assessment.addElement("qtimetadata"); addMetadataField("qmd_assessmenttype", "Assessment", qtimetadata); //section /* <section ident="frentix_9_87230240084931" title="Section"> <selection_ordering> <selection/> <order order_type="Sequential"/> </selection_ordering> */ Element section = assessment.addElement("section"); section.addAttribute("ident", CodeHelper.getGlobalForeverUniqueID()); section.addAttribute("title", "Section"); Element selectionOrdering = section.addElement("selection_ordering"); selectionOrdering.addElement("selection"); Element order = selectionOrdering.addElement("order"); order.addAttribute("order_type", "Sequential"); return section; }
From source file:org.olat.ims.qti.qpool.QTIImportProcessor.java
License:Apache License
protected void processAssessmentFiles(QuestionItemImpl item, ItemInfos itemInfos) { //a package with an item String dir = item.getDirectory(); String rootFilename = item.getRootFilename(); VFSContainer container = qpoolFileStorage.getContainer(dir); VFSLeaf endFile = container.createChildLeaf(rootFilename); //embed in <questestinterop> DocumentFactory df = DocumentFactory.getInstance(); Document itemDoc = df.createDocument(); Element questestinteropEl = df.createElement(QTIDocument.DOCUMENT_ROOT); itemDoc.setRootElement(questestinteropEl); Element deepClone = (Element) itemInfos.getItemEl().clone(); questestinteropEl.add(deepClone);//from ww w . ja va 2s . com //write try { OutputStream os = endFile.getOutputStream(false); ; XMLWriter xw = new XMLWriter(os, new OutputFormat(" ", true)); xw.write(itemDoc.getRootElement()); xw.close(); os.close(); } catch (IOException e) { log.error("", e); } //there perhaps some other materials if (importedFilename.toLowerCase().endsWith(".zip")) { processAssessmentMaterials(deepClone, container); } }
From source file:org.olat.ims.qti.render.ResultsBuilder.java
License:Apache License
/** * Method getResDoc./*from w ww . jav a2 s .c om*/ * * @param ai The assessment instance * @param locale The users locale * @param identity * @return Document The XML document */ public Document getResDoc(final AssessmentInstance ai, final Locale locale, final Identity identity) { final AssessmentContext ac = ai.getAssessmentContext(); final DocumentFactory df = DocumentFactory.getInstance(); final Document res_doc = df.createDocument(); final Element root = df.createElement("qti_result_report"); res_doc.setRootElement(root); final Element result = root.addElement("result"); final Element extension_result = result.addElement("extension_result"); // add items (not qti standard, but nice to display original questions -> // put it into extensions) // extension_result. final int sectioncnt = ac.getSectionContextCount(); for (int i = 0; i < sectioncnt; i++) { final SectionContext sc = ac.getSectionContext(i); final int itemcnt = sc.getItemContextCount(); for (int j = 0; j < itemcnt; j++) { final ItemContext it = sc.getItemContext(j); final Element el_item = it.getEl_item(); extension_result.add(el_item); } } // add ims cp id for any media references addStaticsPath(extension_result, ai); // add assessment_result // Add User information final Element context = result.addElement("context"); final User user = identity.getUser(); final String name = user.getProperty(UserConstants.LASTNAME, locale) + " " + user.getProperty(UserConstants.FIRSTNAME, locale) + " (" + identity.getName() + ")"; String instId = user.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, locale); final String instName = user.getProperty(UserConstants.INSTITUTIONALNAME, locale); if (instId == null) { instId = "N/A"; } context.addElement("name").addText(name); String institution; if (instName == null) { institution = "N/A"; } else { institution = instName; } if (institution == null) { institution = "N/A"; } // Add institutional identifier (e.g. Matrikelnummer) final Element generic_identifier = context.addElement("generic_identifier"); generic_identifier.addElement("type_label").addText(institution); generic_identifier.addElement("identifier_string").addText(instId); // Add start and stop date formatted as datetime final Element beginDate = context.addElement("date"); beginDate.addElement("type_label").addText("Start"); beginDate.addElement("datetime").addText(Formatter.formatDatetime(new Date(ac.getTimeOfStart()))); final Element stopDate = context.addElement("date"); stopDate.addElement("type_label").addText("Stop"); stopDate.addElement("datetime").addText(Formatter.formatDatetime(new Date(ac.getTimeOfStop()))); final Element ares = result.addElement("assessment_result"); ares.addAttribute("ident_ref", ac.getIdent()); if (ac.getTitle() != null) { ares.addAttribute("asi_title", ac.getTitle()); } // process assessment score final Element a_score = ares.addElement("outcomes").addElement("score"); a_score.addAttribute("varname", "SCORE"); String strVal = StringHelper.formatFloat(ac.getScore(), 2); a_score.addElement("score_value").addText(strVal); strVal = ac.getMaxScore() == -1.0f ? "N/A" : StringHelper.formatFloat(ac.getMaxScore(), 2); a_score.addElement("score_max").addText(strVal); strVal = ac.getCutvalue() == -1.0f ? "N/A" : StringHelper.formatFloat(ac.getCutvalue(), 2); a_score.addElement("score_cut").addText(strVal); addElementText(ares, "duration", QTIHelper.getISODuration(ac.getDuration())); addElementText(ares, "num_sections", "" + ac.getSectionContextCount()); addElementText(ares, "num_sections_presented", "0"); addElementText(ares, "num_items", "" + ac.getItemContextCount()); addElementText(ares, "num_items_presented", "" + ac.getItemsPresentedCount()); addElementText(ares, "num_items_attempted", "" + ac.getItemsAttemptedCount()); // add section_result final int secnt = ac.getSectionContextCount(); for (int i = 0; i < secnt; i++) { final SectionContext secc = ac.getSectionContext(i); final Element secres = ares.addElement("section_result"); secres.addAttribute("ident_ref", secc.getIdent()); if (secc.getTitle() != null) { secres.addAttribute("asi_title", secc.getTitle()); } addElementText(secres, "duration", QTIHelper.getISODuration(secc.getDuration())); addElementText(secres, "num_items", "" + secc.getItemContextCount()); addElementText(secres, "num_items_presented", "" + secc.getItemsPresentedCount()); addElementText(secres, "num_items_attempted", "" + secc.getItemsAttemptedCount()); // process section score final Element sec_score = secres.addElement("outcomes").addElement("score"); sec_score.addAttribute("varname", "SCORE"); strVal = secc.getScore() == -1.0f ? "N/A" : "" + StringHelper.formatFloat(secc.getScore(), 2); sec_score.addElement("score_value").addText(strVal); strVal = secc.getMaxScore() == -1.0f ? "N/A" : "" + StringHelper.formatFloat(secc.getMaxScore(), 2); sec_score.addElement("score_max").addText(strVal); strVal = secc.getCutValue() == -1 ? "N/A" : "" + secc.getCutValue(); sec_score.addElement("score_cut").addText(strVal); // iterate over all items in this section context final List itemsc = secc.getSectionItemContexts(); for (final Iterator it_it = itemsc.iterator(); it_it.hasNext();) { final ItemContext itemc = (ItemContext) it_it.next(); final Element itres = secres.addElement("item_result"); itres.addAttribute("ident_ref", itemc.getIdent()); itres.addAttribute("asi_title", itemc.getEl_item().attributeValue("title")); final Element it_duration = itres.addElement("duration"); it_duration.addText(QTIHelper.getISODuration(itemc.getTimeSpent())); // process item score final DecimalVariable scoreVar = (DecimalVariable) (itemc.getVariables().getSCOREVariable()); final Element it_score = itres.addElement("outcomes").addElement("score"); it_score.addAttribute("varname", "SCORE"); it_score.addElement("score_value") .addText(StringHelper.formatFloat(scoreVar.getTruncatedValue(), 2)); strVal = scoreVar.hasMinValue() ? "" + scoreVar.getMinValue() : "0.0"; it_score.addElement("score_min").addText(strVal); strVal = scoreVar.hasMaxValue() ? "" + scoreVar.getMaxValue() : "N/A"; it_score.addElement("score_max").addText(strVal); strVal = scoreVar.hasCutValue() ? "" + scoreVar.getCutValue() : "N/A"; it_score.addElement("score_cut").addText(strVal); final Element el_item = itemc.getEl_item(); final Map res_responsehash = new HashMap(3); // iterate over all responses of this item final List resps = el_item.selectNodes( ".//response_lid|.//response_xy|.//response_str|.//response_num|.//response_grp"); for (final Iterator it_resp = resps.iterator(); it_resp.hasNext();) { final Element resp = (Element) it_resp.next(); final String ident = resp.attributeValue("ident"); final String rcardinality = resp.attributeValue("rcardinality"); final String rtiming = resp.attributeValue("rtiming"); // add new response final Element res_response = itres.addElement("response"); res_response.addAttribute("ident_ref", ident); res_responsehash.put(ident, res_response); // enable lookup of // @identref of <response> // (needed with <varequal> // elements // add new response_form // <response_lid ident="MR01" rcardinality="Multiple" rtiming="No"> final Element res_responseform = res_response.addElement("response_form"); res_responseform.addAttribute("cardinality", rcardinality); res_responseform.addAttribute("timing", rtiming); final String respName = resp.getName(); final String type = respName.substring(respName.indexOf("_") + 1); res_responseform.addAttribute("response_type", type); // add user answer final ItemInput itemInp = itemc.getItemInput(); final Translator trans = Util.createPackageTranslator(QTIModule.class, locale); if (itemInp == null) { // user did not answer this question at all res_response.addElement("response_value").addText(trans.translate("ResBuilder.NoAnswer")); } else { final List userAnswer = itemInp.getAsList(ident); if (userAnswer == null) { // user did not answer this question at // all res_response.addElement("response_value") .addText(trans.translate("ResBuilder.NoAnswer")); } else { // the user chose at least one option of an answer (did not // simply click send) for (final Iterator it_ans = userAnswer.iterator(); it_ans.hasNext();) { res_response.addElement("response_value").addText((String) it_ans.next()); } } } } /* * The simple element correct_response can only list correct elements, that is, no "or" or "and" elements may be in the conditionvar. Pragmatic solution: * if condition has ors or ands, then put whole conditionvar into <extension_response> (proprietary), and for easier cases (just "varequal" "not" * elements) use correct_response. */ final Map corr_answers = new HashMap(); // keys: respIdents, values: HashSet // of correct answers for this // respIdent final List respconds = el_item.selectNodes(".//respcondition"); for (final Iterator it_respc = respconds.iterator(); it_respc.hasNext();) { final Element el_respc = (Element) it_respc.next(); // check for add/set in setvar elements (check for single instance // only -> spec allows for multiple instances) final Element el_setvar = (Element) el_respc.selectSingleNode(".//setvar"); if (el_setvar == null) { continue; } if (el_setvar.attributeValue("action").equals("Add") || el_setvar.attributeValue("action").equals("Set")) { // This resrocessing gives points -> assume correct answer float numPoints = 0; try { numPoints = Float.parseFloat(el_setvar.getTextTrim()); } catch (final NumberFormatException nfe) { // } if (numPoints <= 0) { continue; } Element conditionvar = (Element) el_respc.selectSingleNode(".//conditionvar"); // there is an evaluation defined (a "resprocessing" element exists) // if (xpath(count(.//varequal) + count(.//not) = count(.//*)) is // true, then there are only "not" and "varequal" elements final XPath xCanHandle = DocumentHelper .createXPath("count(.//varequal) + count(.//not) = count(.//*)"); boolean canHandle = xCanHandle.matches(conditionvar); if (!canHandle) { // maybe we have <condvar> <and> <...>, try again final Element el_and = (Element) conditionvar.selectSingleNode("and"); if (el_and != null) { canHandle = xCanHandle.matches(el_and); if (canHandle) { // simultate the el_and to be the conditionvar conditionvar = el_and; } } else { // and finally, maybe we have an <or> element .. final Element el_or = (Element) conditionvar.selectSingleNode("or"); if (el_or != null) { canHandle = xCanHandle.matches(el_or); if (canHandle) { // simultate the el_and to be the conditionvar conditionvar = el_or; } } } } if (!canHandle) { // qti res 1.2.1 can't handle it final Element condcopy = conditionvar.createCopy(); itres.addElement("extension_item_result").add(condcopy); } else { /* * easy case: get all varequal directly under the conditionvar element and assume the "not" elements do not contain "not" elements again... * <!ELEMENT response (qti_comment? , response_form? , num_attempts? , response_value* , extension_response?)> <!ELEMENT response_form * (correct_response* , extension_responseform?)> <!ELEMENT correct_response (#PCDATA)> */ final List vareqs = conditionvar.selectNodes("./varequal"); for (final Iterator it_vareq = vareqs.iterator(); it_vareq.hasNext();) { /* * get the identifier of the response, so that we can attach the <correct_response> to the right <response> element quote: ims qti asi xml * binding :3.6.23.1 <varequal> Element: respident (required). The identifier of the corresponding <response_lid>, <response_xy>, etc. * element (this was assigned using its ident attribute). */ final Element vareq = (Element) it_vareq.next(); final String respIdent = vareq.attributeValue("respident"); Set respIdent_corr_answers = (Set) corr_answers.get(respIdent); if (respIdent_corr_answers == null) { respIdent_corr_answers = new HashSet(3); } respIdent_corr_answers.add(vareq.getText()); corr_answers.put(respIdent, respIdent_corr_answers); } // for varequal } // else varequal } // add/set setvar } // for resprocessing final Set resp_ids = corr_answers.keySet(); for (final Iterator idents = resp_ids.iterator(); idents.hasNext();) { final String respIdent = (String) idents.next(); final Set respIdent_corr_answers = (Set) corr_answers.get(respIdent); final Element res_response = (Element) res_responsehash.get(respIdent); final Element res_respform = res_response.element("response_form"); for (final Iterator iter = respIdent_corr_answers.iterator(); iter.hasNext();) { final String answer = (String) iter.next(); res_respform.addElement("correct_response").addText(answer); } } } // for response_xy } return res_doc; }
From source file:org.olat.ims.qti.render.ResultsBuilder.java
License:Apache License
private static void addStaticsPath(final Element el_in, final AssessmentInstance ai) { Element el_staticspath = (Element) el_in.selectSingleNode(STATICS_PATH); if (el_staticspath == null) { final DocumentFactory df = DocumentFactory.getInstance(); el_staticspath = df.createElement(STATICS_PATH); final Resolver resolver = ai.getResolver(); el_staticspath.addAttribute("ident", resolver.getStaticsBaseURI()); el_in.add(el_staticspath);/*from www . j a v a 2s.co m*/ } }