Search in sources :

Example 1 with Query

use of fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Query in project muikku by otavanopisto.

the class DeusNexMachinaController method importResource.

private void importResource(WorkspaceNode importRoot, WorkspaceNode parent, Resource resource, DeusNexDocument deusNexDocument, List<WorkspaceNode> createdNodes) throws DeusNexException {
    WorkspaceNode node = findNode(parent, resource);
    if (resource.getType() == Type.FOLDER) {
        Folder folderResource = (Folder) resource;
        WorkspaceFolder folder = null;
        if (node instanceof WorkspaceFolder) {
            folder = (WorkspaceFolder) node;
        }
        if (folder == null) {
            folder = createFolder(parent, folderResource);
            try {
                setResourceWorkspaceNodeId(resource.getNo(), folder.getId());
            } catch (IOException e) {
                throw new DeusNexInternalException("Failed to store resourceNo lookup file", e);
            }
            createdNodes.add(folder);
        }
        for (Resource childResource : folderResource.getResources()) {
            importResource(importRoot, folder, childResource, deusNexDocument, createdNodes);
        }
    } else {
        if (node == null) {
            logger.fine("importing " + resource.getPath());
            Material material = createMaterial(importRoot, resource, deusNexDocument);
            if (material != null) {
                WorkspaceMaterialAssignmentType assignmentType = null;
                if (resource instanceof Query) {
                    switch(((Query) resource).getQueryType()) {
                        case "1":
                            assignmentType = WorkspaceMaterialAssignmentType.EXERCISE;
                            break;
                        case "2":
                            assignmentType = WorkspaceMaterialAssignmentType.EVALUATED;
                            break;
                    }
                } else if (material instanceof HtmlMaterial) {
                    assignmentType = determineEmbeddedAssignmentType((HtmlMaterial) material);
                }
                WorkspaceMaterial workspaceMaterial = workspaceMaterialController.createWorkspaceMaterial(parent, material, resource.getName(), assignmentType, WorkspaceMaterialCorrectAnswersDisplay.ALWAYS);
                try {
                    setResourceWorkspaceNodeId(resource.getNo(), workspaceMaterial.getId());
                } catch (IOException e) {
                    throw new DeusNexInternalException("Failed to store resourceNo lookup file", e);
                }
                if (resource instanceof ResourceContainer) {
                    List<Resource> childResources = ((ResourceContainer) resource).getResources();
                    if (childResources != null) {
                        for (Resource childResource : childResources) {
                            importResource(importRoot, workspaceMaterial, childResource, deusNexDocument, createdNodes);
                        }
                    }
                }
                if (resource.getHidden()) {
                    workspaceMaterialController.hideWorkspaceNode(workspaceMaterial);
                }
                createdNodes.add(workspaceMaterial);
            }
        } else {
            logger.info(node.getPath() + " already exists, skipping");
        }
    }
}
Also used : Query(fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Query) DeusNexInternalException(fi.otavanopisto.muikku.plugins.dnm.parser.DeusNexInternalException) Resource(fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Resource) Material(fi.otavanopisto.muikku.plugins.material.model.Material) HtmlMaterial(fi.otavanopisto.muikku.plugins.material.model.HtmlMaterial) BinaryMaterial(fi.otavanopisto.muikku.plugins.material.model.BinaryMaterial) WorkspaceMaterial(fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceMaterial) IOException(java.io.IOException) WorkspaceMaterialAssignmentType(fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceMaterialAssignmentType) WorkspaceFolder(fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceFolder) Folder(fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Folder) WorkspaceNode(fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceNode) WorkspaceMaterial(fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceMaterial) WorkspaceFolder(fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceFolder) HtmlMaterial(fi.otavanopisto.muikku.plugins.material.model.HtmlMaterial) ResourceContainer(fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.ResourceContainer)

Example 2 with Query

use of fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Query in project muikku by otavanopisto.

the class DeusNexStructureParser method parseQueryDocument.

private Query parseQueryDocument(Element resourceElement) throws DeusNexSyntaxException, XPathExpressionException, DeusNexInternalException {
    Element documentElement = (Element) DeusNexXmlUtils.findNodeByXPath(resourceElement, "styledocument");
    List<Resource> embeddedElements = new ArrayList<>();
    if (documentElement == null) {
        logger.severe("Missing data/document node");
        return null;
    }
    List<Element> embeddedResourceElements = DeusNexXmlUtils.getElementsByXPath(resourceElement, "embedded/res");
    for (Element embeddedResourceElement : embeddedResourceElements) {
        Resource resource = parseResource(embeddedResourceElement);
        if (resource != null) {
            embeddedElements.add(resource);
        }
    }
    Query query = new Query();
    parseBasicResourceProperties(resourceElement, query);
    query.setDocument(documentElement);
    query.setResources(embeddedElements);
    query.setQueryIdType(DeusNexXmlUtils.getChildValue(resourceElement, "queryIdType"));
    query.setQueryStorageType(DeusNexXmlUtils.getChildValue(resourceElement, "queryStorageType"));
    query.setQueryState(DeusNexXmlUtils.getChildValue(resourceElement, "queryState"));
    query.setQueryType(DeusNexXmlUtils.getChildValue(resourceElement, "queryType"));
    return query;
}
Also used : Query(fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Query) Element(org.w3c.dom.Element) Resource(fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Resource) ArrayList(java.util.ArrayList)

Example 3 with Query

use of fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Query in project muikku by otavanopisto.

the class DeusNexStructureParser method parseFCKQuery.

private Query parseFCKQuery(Element resourceElement) throws DeusNexSyntaxException, XPathExpressionException, DeusNexInternalException {
    Element documentElement = (Element) DeusNexXmlUtils.findNodeByXPath(resourceElement, "document");
    if (documentElement == null) {
        logger.severe("Missing data/document node");
        return null;
    }
    List<Resource> embeddedElements = new ArrayList<>();
    List<Element> embeddedResourceElements = DeusNexXmlUtils.getElementsByXPath(resourceElement, "embedded/res");
    for (Element embeddedResourceElement : embeddedResourceElements) {
        Resource resource = parseResource(embeddedResourceElement);
        if (resource != null) {
            embeddedElements.add(resource);
        }
    }
    Query query = new Query();
    parseBasicResourceProperties(resourceElement, query);
    query.setDocument(documentElement);
    query.setResources(embeddedElements);
    query.setQueryIdType(DeusNexXmlUtils.getChildValue(resourceElement, "queryIdType"));
    query.setQueryStorageType(DeusNexXmlUtils.getChildValue(resourceElement, "queryStorageType"));
    query.setQueryState(DeusNexXmlUtils.getChildValue(resourceElement, "queryState"));
    query.setQueryType(DeusNexXmlUtils.getChildValue(resourceElement, "queryType"));
    return query;
}
Also used : Query(fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Query) Element(org.w3c.dom.Element) Resource(fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Resource) ArrayList(java.util.ArrayList)

Aggregations

Query (fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Query)3 Resource (fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Resource)3 ArrayList (java.util.ArrayList)2 Element (org.w3c.dom.Element)2 DeusNexInternalException (fi.otavanopisto.muikku.plugins.dnm.parser.DeusNexInternalException)1 Folder (fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.Folder)1 ResourceContainer (fi.otavanopisto.muikku.plugins.dnm.parser.structure.model.ResourceContainer)1 BinaryMaterial (fi.otavanopisto.muikku.plugins.material.model.BinaryMaterial)1 HtmlMaterial (fi.otavanopisto.muikku.plugins.material.model.HtmlMaterial)1 Material (fi.otavanopisto.muikku.plugins.material.model.Material)1 WorkspaceFolder (fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceFolder)1 WorkspaceMaterial (fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceMaterial)1 WorkspaceMaterialAssignmentType (fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceMaterialAssignmentType)1 WorkspaceNode (fi.otavanopisto.muikku.plugins.workspace.model.WorkspaceNode)1 IOException (java.io.IOException)1