Search in sources :

Example 1 with Module

use of org.structr.javaparser.entity.Module in project structr by structr.

the class JavaParserModule method handlePackageFolder.

private void handlePackageFolder(final Folder folder, final Folder parentFolder) {
    // Folder contains a package-info.java so it must be a package
    String[] parts = folder.getPath().split("src/main/java/");
    if (parts.length > 1) {
        final PropertyMap identifyingProperties = new PropertyMap();
        final PropertyMap allProperties = new PropertyMap();
        // Convert path to package path
        String path = StringUtils.replaceAll(parts[1], "/", ".");
        identifyingProperties.put(Package.name, path);
        allProperties.putAll(identifyingProperties);
        allProperties.put(Package.folder, folder);
        // Check if we are contained in a module:
        // Find the closest ancestor folder which has a module
        Module mod = null;
        Package pkg = null;
        Folder possibleModuleParentFolder = parentFolder;
        // Continue until root folder or a module was found
        while (possibleModuleParentFolder != null && mod == null) {
            try {
                mod = app.nodeQuery(Module.class).and(Module.folder, possibleModuleParentFolder).getFirst();
                pkg = app.nodeQuery(Package.class).and(Module.folder, possibleModuleParentFolder).getFirst();
            } catch (FrameworkException ignore) {
            }
            if (pkg != null) {
                // Parent folder contains a package
                allProperties.put(Package.parent, pkg);
            } else if (mod != null) {
                // Parent folder contains a module
                allProperties.put(Package.module, mod);
                break;
            }
            // Continue while loop
            possibleModuleParentFolder = possibleModuleParentFolder.getParent();
        }
        getOrCreate(Package.class, identifyingProperties, allProperties);
        logger.info("Created or found package '" + path + "' in folder " + folder.getPath());
    }
}
Also used : PropertyMap(org.structr.core.property.PropertyMap) FrameworkException(org.structr.common.error.FrameworkException) Package(org.structr.javaparser.entity.Package) StructrModule(org.structr.module.StructrModule) Module(org.structr.javaparser.entity.Module) Folder(org.structr.web.entity.Folder)

Example 2 with Module

use of org.structr.javaparser.entity.Module in project structr by structr.

the class JavaParserModule method handlePomFile.

private void handlePomFile(final File file, final Folder folder, final Folder parentFolder) {
    final XPath xpath = XPathFactory.newInstance().newXPath();
    QName returnType = XPathConstants.STRING;
    final String content = file.getFavoriteContent();
    final String projectName;
    try {
        projectName = (String) xpath.evaluate("/project/name", parseXml(content), returnType);
        final Module newMod = createModule(projectName, folder);
        logger.info("Created module '" + projectName + "' in folder " + folder.getPath());
        // Check if we are child of a parent module
        // Find the closest ancestor folder which has a module
        Module mod = null;
        Folder possibleModuleParentFolder = parentFolder;
        // Continue until root folder or a module was found
        while (possibleModuleParentFolder != null && mod == null) {
            try {
                mod = app.nodeQuery(Module.class).and(Module.folder, possibleModuleParentFolder).getFirst();
            } catch (FrameworkException ignore) {
            }
            if (mod != null) {
                newMod.setProperty(Module.parent, mod);
                break;
            }
            // Continue while loop
            possibleModuleParentFolder = possibleModuleParentFolder.getParent();
        }
    } catch (ParserConfigurationException | SAXException | IOException | XPathExpressionException | FrameworkException ex) {
        logger.warn("Exception exception occured", ex);
    }
}
Also used : XPath(javax.xml.xpath.XPath) FrameworkException(org.structr.common.error.FrameworkException) QName(javax.xml.namespace.QName) XPathExpressionException(javax.xml.xpath.XPathExpressionException) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) IOException(java.io.IOException) StructrModule(org.structr.module.StructrModule) Module(org.structr.javaparser.entity.Module) Folder(org.structr.web.entity.Folder) SAXException(org.xml.sax.SAXException)

Example 3 with Module

use of org.structr.javaparser.entity.Module in project structr by structr.

the class JavaParserModule method createModule.

private Module createModule(final String moduleName, final Folder moduleFolder) {
    final PropertyMap identifyingProperties = new PropertyMap();
    identifyingProperties.put(Module.name, moduleName);
    final PropertyMap allProperties = new PropertyMap();
    allProperties.putAll(identifyingProperties);
    allProperties.put(Module.folder, moduleFolder);
    return (Module) getOrCreate(Module.class, identifyingProperties, allProperties);
}
Also used : PropertyMap(org.structr.core.property.PropertyMap) StructrModule(org.structr.module.StructrModule) Module(org.structr.javaparser.entity.Module)

Aggregations

Module (org.structr.javaparser.entity.Module)3 StructrModule (org.structr.module.StructrModule)3 FrameworkException (org.structr.common.error.FrameworkException)2 PropertyMap (org.structr.core.property.PropertyMap)2 Folder (org.structr.web.entity.Folder)2 IOException (java.io.IOException)1 QName (javax.xml.namespace.QName)1 ParserConfigurationException (javax.xml.parsers.ParserConfigurationException)1 XPath (javax.xml.xpath.XPath)1 XPathExpressionException (javax.xml.xpath.XPathExpressionException)1 Package (org.structr.javaparser.entity.Package)1 SAXException (org.xml.sax.SAXException)1