List of usage examples for org.dom4j DocumentFactory createElement
public Element createElement(String name)
From source file:org.itracker.web.util.ImportExportUtilities.java
License:Open Source License
private static void addIdCollection(XMLWriter writer, List<? extends AbstractEntity> entities, String elName, String itName, String idPrefix) throws IOException { if (entities.size() > 0) { Element elTmp;//from www . j a v a 2s. c o m final DocumentFactory factory = getDocumentFactory(); final Element el = factory.createElement(elName); writer.writeOpen(el); for (AbstractEntity c : entities) { elTmp = factory.createElement(itName); elTmp.setText(idPrefix + c.getId()); writer.write(elTmp); } writer.writeClose(el); } }
From source file:org.itracker.web.util.ImportExportUtilities.java
License:Open Source License
private static void addIssueFields(XMLWriter writer, List<IssueField> entities) throws IOException { if (entities.size() > 0) { Element elTmp;/* www . java2s .com*/ final DocumentFactory factory = getDocumentFactory(); final Element el = factory.createElement(TAG_ISSUE_FIELDS); writer.writeOpen(el); for (IssueField c : entities) { elTmp = factory.createElement(TAG_ISSUE_FIELD); elTmp.addAttribute(ATTR_ID, TAG_CUSTOM_FIELD + c.getId()); elTmp.add(factory.createCDATA(c.getValue(EXPORT_LOCALE))); writer.write(elTmp); } writer.writeClose(el); } }
From source file:org.itracker.web.util.ImportExportUtilities.java
License:Open Source License
private static void addIssueAttachments(XMLWriter writer, List<IssueAttachment> entities) throws IOException { if (entities.size() > 0) { Element elTmp;/* w w w . j a va2s. co m*/ final DocumentFactory factory = getDocumentFactory(); final Element el = factory.createElement(TAG_ISSUE_ATTACHMENTS); writer.writeOpen(el); for (IssueAttachment c : entities) { elTmp = factory.createElement(TAG_ISSUE_ATTACHMENT); writer.writeOpen(elTmp); Properties pTmp = new Properties(); pTmp.setProperty(TAG_ISSUE_ATTACHMENT_DESCRIPTION, ITrackerResources.escapeUnicodeString(c.getDescription(), false)); pTmp.setProperty(TAG_ISSUE_ATTACHMENT_FILENAME, ITrackerResources.escapeUnicodeString(c.getFileName(), false)); pTmp.setProperty(TAG_ISSUE_ATTACHMENT_ORIGFILE, ITrackerResources.escapeUnicodeString(c.getOriginalFileName(), false)); addCdataPropertyTags(writer, pTmp); pTmp.clear(); pTmp.setProperty(TAG_ISSUE_ATTACHMENT_SIZE, String.valueOf(c.getSize())); pTmp.setProperty(TAG_ISSUE_ATTACHMENT_TYPE, StringUtils.defaultString(c.getType(), "application/octet-stream")); pTmp.setProperty(TAG_ISSUE_ATTACHMENT_CREATOR, TAG_USER + c.getUser().getId()); addPropertyTags(writer, pTmp); writer.writeClose(elTmp); } writer.writeClose(el); } }
From source file:org.itracker.web.util.ImportExportUtilities.java
License:Open Source License
private static void addIssueHistory(XMLWriter writer, List<IssueHistory> entities) throws IOException { if (entities.size() > 0) { Element elTmp;//from ww w. j a v a2s . c o m final DocumentFactory factory = getDocumentFactory(); final Element el = factory.createElement(TAG_ISSUE_HISTORY); writer.writeOpen(el); for (IssueHistory c : entities) { elTmp = factory.createElement(TAG_HISTORY_ENTRY); elTmp.addAttribute(ATTR_CREATOR_ID, TAG_USER + c.getUser().getId()); elTmp.addAttribute(ATTR_DATE, DATE_FORMATTER.format(c.getCreateDate())); elTmp.addAttribute(ATTR_STATUS, String.valueOf(c.getStatus())); writer.writeOpen(elTmp); writer.write(factory.createCDATA(ITrackerResources.escapeUnicodeString(c.getDescription(), false))); writer.writeClose(elTmp); } writer.writeClose(el); } }
From source file:org.itracker.web.util.ImportExportUtilities.java
License:Open Source License
private static void addProjectComponents(XMLWriter writer, List<Component> entities) throws IOException { if (entities.size() > 0) { Element elTmp;/* w w w . j av a 2 s . co m*/ final DocumentFactory factory = getDocumentFactory(); final Element el = factory.createElement(TAG_COMPONENTS); writer.writeOpen(el); for (Component c : entities) { elTmp = factory.createElement(TAG_COMPONENT); elTmp.addAttribute(ATTR_ID, TAG_CUSTOM_FIELD + c.getId()); elTmp.addAttribute(ATTR_SYSTEMID, String.valueOf(c.getId())); writer.writeOpen(elTmp); Properties tags = new Properties(); tags.setProperty(TAG_COMPONENT_NAME, ITrackerResources.escapeUnicodeString(c.getName(), false)); tags.setProperty(TAG_COMPONENT_DESCRIPTION, ITrackerResources.escapeUnicodeString(c.getDescription(), false)); addCdataPropertyTags(writer, tags); writer.writeClose(elTmp); } writer.writeClose(el); } }
From source file:org.itracker.web.util.ImportExportUtilities.java
License:Open Source License
private static void addProjectVersions(XMLWriter writer, List<Version> entities) throws IOException { if (entities.size() > 0) { Element elTmp;//from w ww . j a v a 2 s . c o m final DocumentFactory factory = getDocumentFactory(); final Element el = factory.createElement(TAG_VERSIONS); writer.writeOpen(el); for (Version c : entities) { elTmp = factory.createElement(TAG_VERSION); elTmp.addAttribute(ATTR_ID, TAG_VERSION + c.getId()); elTmp.addAttribute(ATTR_SYSTEMID, String.valueOf(c.getId())); writer.writeOpen(elTmp); Properties tags = new Properties(); tags.setProperty(TAG_VERSION_NUMBER, ITrackerResources.escapeUnicodeString(c.getNumber(), false)); tags.setProperty(TAG_VERSION_DESCRIPTION, ITrackerResources.escapeUnicodeString(c.getDescription(), false)); addCdataPropertyTags(writer, tags); writer.writeClose(elTmp); } writer.writeClose(el); } }
From source file:org.mule.intents.AppBuilder.java
License:Open Source License
protected Document createMuleConfig() { DocumentFactory factory = DocumentFactory.getInstance(); Element root = factory.createElement(new QName("mule", muleNS)); root.addAttribute("version", app.getPlatformVersion()); return DocumentFactory.getInstance().createDocument(root); }
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) */// ww w .j a va 2s. 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.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);//w w w .j av a 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.// ww w. j a v a 2 s . co m * * @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; }