Search in sources :

Example 16 with Folder

use of org.structr.web.entity.Folder 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 17 with Folder

use of org.structr.web.entity.Folder in project structr by structr.

the class JavaParserModule method handlePackage.

private org.structr.javaparser.entity.Package handlePackage(final PackageDeclaration pkg) {
    final PropertyMap packageIdentifyingProperties = new PropertyMap();
    packageIdentifyingProperties.put(org.structr.javaparser.entity.Package.name, pkg.getNameAsString());
    org.structr.javaparser.entity.Package clsPackage = (org.structr.javaparser.entity.Package) getOrCreate(Package.class, packageIdentifyingProperties, packageIdentifyingProperties);
    if (clsPackage != null) {
        try {
            // Find corresponding folder
            final Folder packageFolder = app.nodeQuery(Folder.class).and(StructrApp.key(Folder.class, "path"), StringUtils.replaceAll(clsPackage.getName(), ".", "/")).getFirst();
            if (packageFolder != null) {
                clsPackage.setProperty(Package.folder, packageFolder);
            }
        } catch (final FrameworkException ex) {
        }
        ;
    }
    return clsPackage;
}
Also used : Package(org.structr.javaparser.entity.Package) PropertyMap(org.structr.core.property.PropertyMap) FrameworkException(org.structr.common.error.FrameworkException) Package(org.structr.javaparser.entity.Package) Folder(org.structr.web.entity.Folder)

Example 18 with Folder

use of org.structr.web.entity.Folder in project structr by structr.

the class JavaParserModule method addJarsToIndex.

/**
 * Add compilation units of all jar files found in the given folder to the index.
 *
 * @param folderPath
 */
public void addJarsToIndex(final String folderPath) {
    logger.info("Starting adding jar files in " + folderPath);
    final CombinedTypeSolver typeSolver = new CombinedTypeSolver();
    typeSolver.add(new ReflectionTypeSolver());
    final AtomicLong count = new AtomicLong(0);
    try {
        Files.newDirectoryStream(Paths.get(folderPath), path -> path.toString().endsWith(".jar")).forEach((file) -> {
            try {
                typeSolver.add(new JarTypeSolver(new FileInputStream(file.toFile())));
                count.addAndGet(1L);
            } catch (IOException ex) {
            }
        });
    } catch (IOException ex) {
    }
    logger.info("Added " + count.toString() + " jar files to the type solver");
    typeSolver.add(structrTypeSolver);
    facade = JavaParserFacade.get(typeSolver);
    logger.info("Done with adding jar files in " + folderPath);
}
Also used : JsonObject(com.google.gson.JsonObject) Package(org.structr.javaparser.entity.Package) XPathExpressionException(javax.xml.xpath.XPathExpressionException) UnsolvedSymbolException(com.github.javaparser.symbolsolver.javaparsermodel.UnsolvedSymbolException) LoggerFactory(org.slf4j.LoggerFactory) SecurityContext(org.structr.common.SecurityContext) StringUtils(org.apache.commons.lang3.StringUtils) ConstructorDeclaration(com.github.javaparser.ast.body.ConstructorDeclaration) Actions(org.structr.schema.action.Actions) FrameworkException(org.structr.common.error.FrameworkException) App(org.structr.core.app.App) NodeWithSimpleName(com.github.javaparser.ast.nodeTypes.NodeWithSimpleName) Type(com.github.javaparser.ast.type.Type) Document(org.w3c.dom.Document) Map(java.util.Map) CompilationUnit(com.github.javaparser.ast.CompilationUnit) JavaInterface(org.structr.javaparser.entity.JavaInterface) NodeList(com.github.javaparser.ast.NodeList) Folder(org.structr.web.entity.Folder) TypeDeclaration(com.github.javaparser.ast.body.TypeDeclaration) Set(java.util.Set) GraphObject(org.structr.core.GraphObject) ResolvedValueDeclaration(com.github.javaparser.resolution.declarations.ResolvedValueDeclaration) Functions(org.structr.core.function.Functions) JsonArray(com.google.gson.JsonArray) List(java.util.List) StructrModule(org.structr.module.StructrModule) JarTypeSolver(com.github.javaparser.symbolsolver.resolution.typesolvers.JarTypeSolver) SAXException(org.xml.sax.SAXException) LicenseManager(org.structr.api.service.LicenseManager) Optional(java.util.Optional) BlockStmt(com.github.javaparser.ast.stmt.BlockStmt) QName(javax.xml.namespace.QName) DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) NodeWithOptionalBlockStmt(com.github.javaparser.ast.nodeTypes.NodeWithOptionalBlockStmt) StructrApp(org.structr.core.app.StructrApp) JavaParserFacade(com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade) Method(org.structr.javaparser.entity.Method) PackageDeclaration(com.github.javaparser.ast.PackageDeclaration) XPath(javax.xml.xpath.XPath) XPathConstants(javax.xml.xpath.XPathConstants) Parameter(com.github.javaparser.ast.body.Parameter) HashMap(java.util.HashMap) CombinedTypeSolver(com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver) ArrayList(java.util.ArrayList) PropertyMap(org.structr.core.property.PropertyMap) File(org.structr.web.entity.File) JavaClass(org.structr.javaparser.entity.JavaClass) JsonPrimitive(com.google.gson.JsonPrimitive) ClassOrInterface(org.structr.javaparser.entity.ClassOrInterface) LinkedHashSet(java.util.LinkedHashSet) InputSource(org.xml.sax.InputSource) Logger(org.slf4j.Logger) NodeWithModifiers(com.github.javaparser.ast.nodeTypes.NodeWithModifiers) Files(java.nio.file.Files) AbstractSchemaNode(org.structr.core.entity.AbstractSchemaNode) BodyDeclaration(com.github.javaparser.ast.body.BodyDeclaration) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) CallableDeclaration(com.github.javaparser.ast.body.CallableDeclaration) AddJarsToIndexFunction(org.structr.javaparser.entity.AddJarsToIndexFunction) AtomicLong(java.util.concurrent.atomic.AtomicLong) XPathFactory(javax.xml.xpath.XPathFactory) FieldDeclaration(com.github.javaparser.ast.body.FieldDeclaration) StringReader(java.io.StringReader) MethodDeclaration(com.github.javaparser.ast.body.MethodDeclaration) SymbolReference(com.github.javaparser.symbolsolver.model.resolution.SymbolReference) Paths(java.nio.file.Paths) ParserConfigurationException(javax.xml.parsers.ParserConfigurationException) DocumentBuilder(javax.xml.parsers.DocumentBuilder) ReflectionTypeSolver(com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver) Module(org.structr.javaparser.entity.Module) JavaParser(com.github.javaparser.JavaParser) InputStream(java.io.InputStream) AtomicLong(java.util.concurrent.atomic.AtomicLong) JarTypeSolver(com.github.javaparser.symbolsolver.resolution.typesolvers.JarTypeSolver) IOException(java.io.IOException) ReflectionTypeSolver(com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver) CombinedTypeSolver(com.github.javaparser.symbolsolver.resolution.typesolvers.CombinedTypeSolver) FileInputStream(java.io.FileInputStream)

Example 19 with Folder

use of org.structr.web.entity.Folder in project structr by structr.

the class Importer method createFileNode.

private File createFileNode(final String path, final String contentType, final long size, final long checksum, final Class fileClass) throws FrameworkException {
    final PropertyKey<Integer> versionKey = StructrApp.key(File.class, "version");
    final PropertyKey<Folder> parentKey = StructrApp.key(File.class, "parent");
    final PropertyKey<String> contentTypeKey = StructrApp.key(File.class, "contentType");
    final PropertyKey<String> pathKey = StructrApp.key(File.class, "path");
    final PropertyKey<Long> checksumKey = StructrApp.key(File.class, "checksum");
    final PropertyKey<Long> sizeKey = StructrApp.key(File.class, "size");
    return app.create(fileClass != null ? fileClass : File.class, new NodeAttribute(AbstractNode.name, PathHelper.getName(path)), new NodeAttribute(parentKey, FileHelper.createFolderPath(securityContext, PathHelper.getFolderPath(path))), new NodeAttribute(contentTypeKey, contentType), new NodeAttribute(sizeKey, size), new NodeAttribute(checksumKey, checksum), new NodeAttribute(versionKey, 1), new NodeAttribute(AbstractNode.visibleToPublicUsers, publicVisible), new NodeAttribute(AbstractNode.visibleToAuthenticatedUsers, authVisible));
}
Also used : NodeAttribute(org.structr.core.graph.NodeAttribute) Folder(org.structr.web.entity.Folder) File(org.structr.web.entity.File)

Example 20 with Folder

use of org.structr.web.entity.Folder in project structr by structr.

the class DeployCommand method exportFiles.

private void exportFiles(final Path target, final Path configTarget) throws FrameworkException {
    logger.info("Exporting files (unchanged files will be skipped)");
    final PropertyKey<Boolean> inclKey = StructrApp.key(File.class, "includeInFrontendExport");
    final PropertyKey<Boolean> jsKey = StructrApp.key(File.class, "useAsJavascriptLibrary");
    final PropertyKey<Folder> parentKey = StructrApp.key(File.class, "parent");
    final Map<String, Object> config = new TreeMap<>();
    final App app = StructrApp.getInstance();
    try (final Tx tx = app.tx()) {
        // fetch toplevel folders and recurse
        for (final Folder folder : app.nodeQuery(Folder.class).and(parentKey, null).sort(Folder.name).and(inclKey, true).getAsList()) {
            exportFilesAndFolders(target, folder, config);
        }
        // fetch toplevel files that are marked for export or for use as a javascript library
        for (final File file : app.nodeQuery(File.class).and(parentKey, null).sort(File.name).and().or(inclKey, true).or(jsKey, true).getAsList()) {
            exportFile(target, file, config);
        }
        tx.success();
    } catch (IOException ioex) {
        logger.warn("", ioex);
    }
    try (final Writer fos = new OutputStreamWriter(new FileOutputStream(configTarget.toFile()))) {
        getGson().toJson(config, fos);
    } catch (IOException ioex) {
        logger.warn("", ioex);
    }
}
Also used : App(org.structr.core.app.App) StructrApp(org.structr.core.app.StructrApp) Tx(org.structr.core.graph.Tx) IOException(java.io.IOException) Folder(org.structr.web.entity.Folder) TreeMap(java.util.TreeMap) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) AbstractFile(org.structr.web.entity.AbstractFile) AbstractMinifiedFile(org.structr.web.entity.AbstractMinifiedFile) MinifiedCssFile(org.structr.web.entity.MinifiedCssFile) File(org.structr.web.entity.File) MinifiedJavaScriptFile(org.structr.web.entity.MinifiedJavaScriptFile) Writer(java.io.Writer) OutputStreamWriter(java.io.OutputStreamWriter) FileWriter(java.io.FileWriter)

Aggregations

Folder (org.structr.web.entity.Folder)95 Tx (org.structr.core.graph.Tx)64 FrameworkException (org.structr.common.error.FrameworkException)60 AbstractFile (org.structr.web.entity.AbstractFile)42 App (org.structr.core.app.App)35 StructrApp (org.structr.core.app.StructrApp)35 File (org.structr.web.entity.File)34 Test (org.junit.Test)23 StructrUiTest (org.structr.web.StructrUiTest)21 IOException (java.io.IOException)20 PropertyMap (org.structr.core.property.PropertyMap)16 Path (java.nio.file.Path)14 LinkedList (java.util.LinkedList)10 NodeAttribute (org.structr.core.graph.NodeAttribute)9 InputStream (java.io.InputStream)5 CmisObjectNotFoundException (org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException)5 CMISRootFolder (org.structr.files.cmis.repository.CMISRootFolder)5 User (org.structr.web.entity.User)5 Page (org.structr.web.entity.dom.Page)5 BasicFileAttributes (java.nio.file.attribute.BasicFileAttributes)4