public String getDependency(Node node) { return XPathHelper.getNodeValue("./dependency/@identifierref", node); } }
public List getResourceNodes(Document manifest) { return XPathHelper.selectNodes("//resource", manifest); }
public Node getResourceForId(String resourceId, Document manifest) { return XPathHelper.selectNode("//resource[@identifier='" + resourceId + "']",archiveManifest); }
private List getAttachments(Node resourceNode, Document descriptor, String archiveBasePath) throws IOException { List rv = new ArrayList(); List fileNodes = XPathHelper.selectNodes("//FILEREF", descriptor); for (Iterator i = fileNodes.iterator(); i.hasNext();) { Node fileNode = (Node)i.next(); String relFile = XPathHelper.getNodeValue("./RELFILE/@value", fileNode); String filePath = archiveBasePath + "/" + XPathHelper.getNodeValue("./CONTENTID/@value", fileNode) + "/" + relFile; FileResource attachment = new FileResource(); attachment.setInputStream(new FileInputStream(filePath)); attachment.setFileName(relFile.substring(relFile.lastIndexOf("/") + 1)); rv.add(attachment); } return rv; }
answers = new HashMap(); questionNode = (Node)i.next(); String questionId = XPathHelper.getNodeValue("./@id", questionNode); int questionPosition = XPathHelper.selectNodes("../QUESTIONLIST/QUESTION[@id='" + questionId + "']/preceding-sibling::QUESTION", questionNode).size() + 1; q.setPosition(new Integer(questionPosition)); List answerNodes = XPathHelper.selectNodes("./ANSWER", questionNode); for (Iterator j = answerNodes.iterator();j.hasNext();) { a = new AssessmentAnswer(); answerNode = (Node)j.next(); a.setAnswerId(XPathHelper.getNodeValue("./@id", answerNode)); try { a.setPosition(Integer.parseInt(XPathHelper.getNodeValue("./@position", answerNode))); } catch (NumberFormatException nfe) { String answerText = XPathHelper.getNodeValue("./TEXT", answerNode); if (XPathHelper.selectNode("./IMAGE", answerNode) != null) { answerText += "\n<p>\n " + createHtmlImageReference(XPathHelper.selectNode("./IMAGE", answerNode), XPathHelper.getNodeValue("./IMAGE/@style", answerNode)) + "\n</p>"; AssessmentAnswer c; Node choiceNode; List choiceNodes = XPathHelper.selectNodes("./CHOICE", questionNode); for (Iterator j = choiceNodes.iterator();j.hasNext();) { c = new AssessmentAnswer(); choiceNode = (Node)j.next(); c.setAnswerId(XPathHelper.getNodeValue("./@id", choiceNode)); try { c.setPosition(Integer.parseInt(XPathHelper.getNodeValue("./@position", choiceNode))); } catch (NumberFormatException nfe) {
public String getTitle(Node resourceNode) { String title = null; Node itemNode = XPathHelper.selectNode("//item[@identifierref='" + this.getId(resourceNode) + "']", resourceNode.getOwnerDocument()); if (itemNode != null) { title = XPathHelper.getNodeValue("./title", itemNode); if (title == null || "".equals(title)) { Document descriptor = getDescriptor(resourceNode); if (descriptor != null) { title = XPathHelper.getNodeValue("/CONTENT/TITLE",descriptor); } } } return title; }
public Importable translate(Node resourceNode, Document descriptor, String contextPath, String archiveBasePath) { if (resourceNode.hasChildNodes() && (resourceNode.getChildNodes().getLength() > 1)) { // this is a compound document, and it's already being handled by the Blackboard55FileParser return null; } if (XPathHelper.selectNodes("//STARTASSESSMENT", descriptor).size() > 0) { // this signifies a document that serves as a link to an assessment // these links aren't meaningful in the Sakai context return null; } String content = XPathHelper.getNodeValue("//TEXT", descriptor); String title = XPathHelper.getNodeValue("/CONTENT/TITLE", descriptor); int priority = Integer.parseInt(((Element)resourceNode).getAttribute("priority")); // HTML docs in the archive have the < character replaced with the equivalent HTML entity // Without this, the TEXT node contents would be treated as sub-nodes. content.replaceAll("<", "<"); contextPath = contextPath + title.replaceAll("/", "_"); //Validator.escapeResourceName(title); HtmlDocument html = new HtmlDocument(); html.setContent(content); html.setTitle(title); html.setContextPath(contextPath); html.setSequenceNum(priority); return html; }
public String getTitle(Node resourceNode) { String title = null; Node itemNode = XPathHelper.selectNode("//item[@identifierref='" + this.getId(resourceNode) + "']", resourceNode.getOwnerDocument()); if (itemNode != null) { title = XPathHelper.getNodeValue("./title", itemNode); if (title == null || "".equals(title)) { Document descriptor = getDescriptor(resourceNode); if (descriptor != null) { title = XPathHelper.getNodeValue("/CONTENT/TITLE",descriptor); } } } return title; }
public String getFilePathForNode(Node node, String basePath) { return XPathHelper.getNodeValue("./@href", node); } }
public Importable translate(Node resourceNode, Document descriptor, String contextPath, String archiveBasePath) { Assessment rv = newImportable(); rv.setDescription((XPathHelper.getNodeValue( "/questestinterop/assessment/presentation_material/flow_mat/material/mat_extension/mat_formattedtext", descriptor))); rv.setTitle(XPathHelper.getNodeValue("/questestinterop/assessment/@title", descriptor)); List multiChoiceNodes = XPathHelper.selectNodes("//item/itemmetadata/bbmd_questiontype[. = 'Multiple Choice']/ancestor::item", descriptor); List essayNodes = XPathHelper.selectNodes("//item/itemmetadata/bbmd_questiontype[. = 'Essay']/ancestor::item", descriptor); List fillTheBlankNodes = XPathHelper.selectNodes("//item/itemmetadata/bbmd_questiontype[. = 'Fill in the Blank']/ancestor::item", descriptor); List matchingNodes = XPathHelper.selectNodes("//item/itemmetadata/bbmd_questiontype[. = 'Matching']/ancestor::item", descriptor); List multiAnswerNodes = XPathHelper.selectNodes("//item/itemmetadata/bbmd_questiontype[. = 'Multiple Answer']/ancestor::item", descriptor); List orderingNodes = XPathHelper.selectNodes("//item/itemmetadata/bbmd_questiontype[. = 'Ordering']/ancestor::item", descriptor); List trueFalseNodes = XPathHelper.selectNodes("//item/itemmetadata/bbmd_questiontype[. = 'True/False']/ancestor::item", descriptor);
public List getTopLevelItemNodes(Document manifest) { return XPathHelper.selectNodes("//tableofcontents/item", manifest); }
public Importable translate(Node resourceNode, Document descriptor, String contextPath, String archiveBasePath) { String content = XPathHelper.getNodeValue("/CONTENT/BODY/TEXT", descriptor); String title = XPathHelper.getNodeValue("/CONTENT/TITLE/@value", descriptor).trim().replaceAll("\\<.*?\\>", "").replaceAll("/", "_"); int priority = Integer.parseInt(((Element)resourceNode).getAttribute("priority")); // SmartText replaces the double-quote with the HTML entity equivalent content.replaceAll(""", "\""); contextPath = contextPath + title; //Validator.escapeResourceName(title); //Some smart text has files, frequently zipped up 'learning modules' if (!XPathHelper.selectNode("/CONTENT/FILES", descriptor).hasChildNodes()) { TextDocument text = new TextDocument(); text.setContent(content); text.setTitle(title); text.setContextPath(contextPath); text.setSequenceNum(priority); return text; } else { Folder folder = new Folder(); folder.setDescription(content); folder.setTitle(title); folder.setPath(contextPath); folder.setSequenceNum(priority); return folder; } }
public Node getResourceForId(String resourceId, Document manifest) { return XPathHelper.selectNode("//resource[@identifier='" + resourceId + "']",archiveManifest); }
public String getResourceId(Node itemNode) { return XPathHelper.getNodeValue("./@identifierref", itemNode); } }
protected Importable getCompanionForCompoundDocument(Document resourceDescriptor, Folder folder) { HtmlDocument html = new HtmlDocument(); StringBuffer content = new StringBuffer(); List<Node> fileNodes = XPathHelper.selectNodes("/CONTENT/FILES/FILE", resourceDescriptor); content.append("<html>\n"); content.append(" <head><title>" + folder.getTitle() + "</title></head>\n"); content.append(" <body>\n"); content.append(" <p>" + XPathHelper.getNodeValue("/CONTENT/BODY/TEXT", resourceDescriptor) + "</p>\n"); content.append(" <table border=\"1\">\n"); for (Node fileNode : fileNodes) { String fileName = XPathHelper.getNodeValue("./NAME", fileNode); content.append(" <tr><td><a href=\""+ folder.getTitle() + "/" + fileName + "\">" + fileName + "</a></td></tr>\n"); } content.append(" </table>\n"); content.append(" </body>\n"); content.append("</html>"); html.setContent(content.toString()); html.setTitle(folder.getTitle()); html.setContextPath(folder.getPath() + folder.getTitle() + "_manifest"); html.setLegacyGroup(folder.getLegacyGroup()); // we want the html document to come before the folder in sequence html.setSequenceNum(folder.getSequenceNum() - 1); return html; }
public List getItemNodes(Document manifest) { return XPathHelper.selectNodes("//item", manifest); }
public Node getResourceForId(String resourceId, Document manifest) { return XPathHelper.selectNode("//resource[@identifier='" + resourceId + "']",archiveManifest); }
public String getType(Node resourceNode) { return XPathHelper.getNodeValue("./@type", resourceNode); }
protected Importable getCompanionForCompoundDocument(Document resourceDescriptor, Folder folder) { HtmlDocument html = new HtmlDocument(); StringBuffer content = new StringBuffer(); List<Node> linkFileNodes = XPathHelper.selectNodes("//FILEREF/FILEACTION[@value='link']/parent::node()", resourceDescriptor); List<Node> embedFileNodes = XPathHelper.selectNodes("//FILEREF/FILEACTION[@value='embed']/parent::node()", resourceDescriptor); String documentText = XPathHelper.getNodeValue("//TEXT", resourceDescriptor); content.append("<html>\n"); content.append(" <head><title>" + folder.getTitle() + "</title></head>\n"); content.append(" <table border=\"1\">\n"); for (Node fileNode : linkFileNodes) { String fileName = XPathHelper.getNodeValue("./RELFILE/@value", fileNode); content.append(" <tr><td><a href=\""+ folder.getTitle() + "/" + fileName + "\">" + fileName + "</a></td></tr>\n");
public List getItemNodes(Document manifest) { return XPathHelper.selectNodes("//item", manifest); }