public boolean isValidArchive(InputStream fileData) { if (super.isValidArchive(fileData)) { if (!fileExistsInArchive("/imsmanifest.xml", fileData)) return false; return true; } else return false; }
public byte[] getFileBytesForNode(Node node, String contextPath) throws IOException { String filePath = getFilePathForNode(node, contextPath); return getBytesFromFile(new File(pathToData + "/" + filePath)); }
("item".equals(tag) && (XPathHelper.selectNodes("./item", node).size() > 0)) || ( "item".equals(tag) && isCompoundDocument(manifestHelper.getResourceForId(itemResourceId, archiveManifest),resourceDescriptor) )) { String folderTitle = getTitleForNode(node); Folder folder = new Folder(); folder.setPath(contextPath); folder.setTitle(folderTitle); folder.setDescription(getDescriptionForNode(node)); folder.setSequenceNum(priority); if (parent != null) { if (isCompoundDocument(manifestHelper.getResourceForId(itemResourceId, archiveManifest),resourceDescriptor)) { if (wantsCompanionForCompoundDocument()) { priority++; folder.setSequenceNum(priority); branchOfImportables.add(getCompanionForCompoundDocument(resourceDescriptor, folder)); branchOfImportables.addAll(translateFromNodeToImportables(manifestHelper.getResourceForId(itemResourceId, archiveManifest), folderPath, priority, folder)); } else { List children = XPathHelper.selectNodes("./item", node); for (Iterator i = children.iterator(); i.hasNext();) { branchOfImportables.addAll( translateFromNodeToImportables((Node)i.next(),folderPath, childPriority, folder)); childPriority++; translateFromNodeToImportables(resourceNode,contextPath, priority, parent));
public boolean isValidArchive(InputStream fileData) { inputStream = fileData; if (super.isValidArchive(fileData)) { Document manifest = extractFileAsDOM("/imsmanifest.xml", fileData); for (int i = 0; i < CC_NAMESPACE_URIS.length; i++) { if (enclosingDocumentContainsNamespaceDeclaration(manifest, CC_NAMESPACE_URIS[i])) return true; } return false; } else return false; }
protected Collection getImportableItemsFromArchive(String pathToData) { Collection rv = new ArrayList(); Document manifest = this.archiveManifest; List itemNodes = manifestHelper.getTopLevelItemNodes(manifest); List resourceNodes = manifestHelper.getResourceNodes(manifest); Node resourceNode; // set up a Map of resource Nodes keyed on their identifier attribute for(Iterator i = resourceNodes.iterator(); i.hasNext();) { resourceNode = (Node) i.next(); resourceMap.put(resourceHelper.getId(resourceNode), resourceNode); } Node itemNode; int priority = 1; for(Iterator i = itemNodes.iterator(); i.hasNext(); ) { itemNode = (Node) i.next(); String title = itemHelper.getTitle(itemNode); rv.addAll(translateFromNodeToImportables(itemNode, "", priority, null)); priority++; } // the remainder of resources in the resourcesMap need to be processed Object[] remainingRes = resourceMap.values().toArray(); for (int i = 0;i < remainingRes.length; i++) { resourceNode = (Node)remainingRes[i]; rv.addAll(translateFromNodeToImportables(resourceNode, "",i+1, null)); resourceMap.remove(XPathHelper.getNodeValue("./attribute::identifier", resourceNode)); } return rv; }
("item".equals(tag) && (XPathHelper.selectNodes("./item", node).size() > 0)) || ( "item".equals(tag) && isCompoundDocument(manifestHelper.getResourceForId(itemResourceId, archiveManifest),resourceDescriptor) )) { String folderTitle = getTitleForNode(node); Folder folder = new Folder(); folder.setPath(contextPath); folder.setTitle(folderTitle); folder.setDescription(getDescriptionForNode(node)); folder.setSequenceNum(priority); if (parent != null) { if (isCompoundDocument(manifestHelper.getResourceForId(itemResourceId, archiveManifest),resourceDescriptor)) { if (wantsCompanionForCompoundDocument()) { priority++; folder.setSequenceNum(priority); branchOfImportables.add(getCompanionForCompoundDocument(resourceDescriptor, folder)); branchOfImportables.addAll(translateFromNodeToImportables(manifestHelper.getResourceForId(itemResourceId, archiveManifest), folderPath, priority, folder)); } else { List children = XPathHelper.selectNodes("./item", node); for (Iterator i = children.iterator(); i.hasNext();) { branchOfImportables.addAll( translateFromNodeToImportables((Node)i.next(),folderPath, childPriority, folder)); childPriority++; translateFromNodeToImportables(resourceNode,contextPath, priority, parent));
public boolean isValidArchive(InputStream fileData) { if (super.isValidArchive(fileData)) { Document manifest = extractFileAsDOM("/imsmanifest.xml", fileData); return (enclosingDocumentContainsNamespaceDeclaration(manifest, CC_NAMESPACE_URI)); } else return false; }
protected Collection getImportableItemsFromArchive(String pathToData) { Collection rv = new ArrayList(); Document manifest = this.archiveManifest; List itemNodes = manifestHelper.getTopLevelItemNodes(manifest); List resourceNodes = manifestHelper.getResourceNodes(manifest); Node resourceNode; // set up a Map of resource Nodes keyed on their identifier attribute for(Iterator i = resourceNodes.iterator(); i.hasNext();) { resourceNode = (Node) i.next(); resourceMap.put(resourceHelper.getId(resourceNode), resourceNode); } Node itemNode; int priority = 1; for(Iterator i = itemNodes.iterator(); i.hasNext(); ) { itemNode = (Node) i.next(); String title = itemHelper.getTitle(itemNode); rv.addAll(translateFromNodeToImportables(itemNode, "", priority, null)); priority++; } // the remainder of resources in the resourcesMap need to be processed Object[] remainingRes = resourceMap.values().toArray(); for (int i = 0;i < remainingRes.length; i++) { resourceNode = (Node)remainingRes[i]; rv.addAll(translateFromNodeToImportables(resourceNode, "",i+1, null)); resourceMap.remove(XPathHelper.getNodeValue("./attribute::identifier", resourceNode)); } return rv; }
public boolean isValidArchive(InputStream fileData) { inputStream = fileData; if (super.isValidArchive(fileData)) { Document manifest = extractFileAsDOM("/imsmanifest.xml", fileData); for (int i = 0; i < CC_NAMESPACE_URIS.length; i++) { if (enclosingDocumentContainsNamespaceDeclaration(manifest, CC_NAMESPACE_URIS[i])) return true; } return false; } else return false; }
public boolean isValidArchive(InputStream fileData) { if (super.isValidArchive(fileData)) { if (!fileExistsInArchive("/imsmanifest.xml", fileData)) return false; return true; } else return false; }
public byte[] getFileBytesForNode(Node node, String contextPath) throws IOException { String filePath = getFilePathForNode(node, contextPath); return getBytesFromFile(new File(pathToData + "/" + filePath)); }
public boolean isValidArchive(InputStream fileData) { if (super.isValidArchive(fileData)) { Document manifest = extractFileAsDOM("/imsmanifest.xml", fileData); return (enclosingDocumentContainsNamespaceDeclaration(manifest, CC_NAMESPACE_URI)); } else return false; }
public boolean isValidArchive(InputStream fileData) { if (super.isValidArchive(fileData)) { //TODO check for compliance with IMS 1.0 DTD Document manifest = extractFileAsDOM("/imsmanifest.xml", fileData); return (XPathHelper.selectNodes("/manifest/organizations/tableofcontents/item",manifest).size() > 0 || XPathHelper.selectNodes("/manifest/resources/resource",manifest).size() > 0 || XPathHelper.selectNodes("/manifest/organization/tableofcontents/item", manifest).size() > 0); } else return false; }
public boolean isValidArchive(InputStream fileData) { if (super.isValidArchive(fileData)) { //TODO check for compliance with IMS 1.1 DTD Document manifest = extractFileAsDOM("/imsmanifest.xml", fileData); //String head = extractFileHead("/imsmanifest.xml", fileData); // originally head.indexOf("xmlns:bb=\"http://www.blackboard.com/content-packaging/\"") >= 0 // but we've already read the whole stream, so have to get it from the document NodeList nl = manifest.getElementsByTagName("manifest"); if (nl.getLength() > 0) { Element node = (Element)nl.item(0); String url = node.getAttribute("xmlns:bb"); if (url == null || !url.equals("http://www.blackboard.com/content-packaging/")) return false; } else return false; // xmlns:bb means it's v6. However I'm worried about packages generated by other // software not being quite right. Since we're most concerned about tests, if it // has 5.5 format tests, let 5.5 deal with it. return ((XPathHelper.selectNodes("//resource[@type='assessment/x-bb-quiz']", manifest).size() + XPathHelper.selectNodes("//resource[@type='assessment/x-bb-pool']", manifest).size() + XPathHelper.selectNodes("//resource[@type='assessment/x-bb-survey']", manifest).size()) == 0 || (XPathHelper.selectNodes("//resource[@type='assessment/x-bb-qti-test']", manifest).size() + XPathHelper.selectNodes("//resource[@type='assessment/x-bb-qti-pool']", manifest).size()) > 0); // return (XPathHelper.selectNodes("/manifest/organizations/organization/item",manifest).size() > 0 // || XPathHelper.selectNodes("/manifest/resources/resource",manifest).size() > 0); } else return false; }