Search in sources :

Example 21 with JavaSourceRootProperties

use of org.jetbrains.jps.model.java.JavaSourceRootProperties in project moe-ide-integration by multi-os-engine.

the class MOEModuleBuilder method setupRootModel.

@Override
public void setupRootModel(final ModifiableRootModel rootModel) throws ConfigurationException {
    Project project = rootModel.getProject();
    Module module = rootModel.getModule();
    myJdk = MOESdkType.getJDK();
    ProjectRootManager.getInstance(project).setProjectSdk(myJdk);
    rootModel.getModuleExtension(LanguageLevelModuleExtension.class).setLanguageLevel(MOESdkType.REQUIRED_JAVA_LANGUAGE_LEVEL);
    super.setupRootModel(rootModel);
    ProjectRootManager projectRootManager = ProjectRootManager.getInstance(project);
    String projectPath = rootModel.getProject().getBasePath();
    String contentEntryPath = getContentEntryPath();
    if (contentEntryPath == null || contentEntryPath.isEmpty()) {
        throw new RuntimeException("Can't get content entry path.");
    }
    VirtualFile contentRoot = LocalFileSystem.getInstance().findFileByIoFile(new File(contentEntryPath));
    try {
        createModule(contentRoot, project);
    } catch (MOEProjectComposer.MOEProjectComposerException e) {
        throw new ConfigurationException(e.getMessage());
    }
    VirtualFile[] contentFiles = new VirtualFile[] { contentRoot };
    VfsUtil.markDirtyAndRefresh(false, true, true, contentFiles);
    new ReformatCodeProcessor(project, module, false).run();
    String resourcePath = "src/main/" + MOESdkPlugin.getResourcesFolderName();
    String sourcePath = "src/main/java";
    for (ContentEntry entry : rootModel.getContentEntries()) {
        for (SourceFolder srcFolder : entry.getSourceFolders()) {
            entry.removeSourceFolder(srcFolder);
        }
        VirtualFile sourceFile = null;
        if (contentRoot != null) {
            sourceFile = contentRoot.findFileByRelativePath(sourcePath);
        }
        if (sourceFile != null) {
            entry.addSourceFolder(sourceFile, false);
        }
        VirtualFile resourceFolder = null;
        if (contentRoot != null) {
            resourceFolder = contentRoot.findFileByRelativePath(resourcePath);
        }
        if (resourceFolder != null && resourceFolder.exists()) {
            SourceFolder sourceFolder = entry.addSourceFolder(resourceFolder, JavaResourceRootType.RESOURCE);
            JavaSourceRootProperties properties = sourceFolder.getJpsElement().getProperties(JavaModuleSourceRootTypes.SOURCES);
            if (properties != null) {
                properties.setForGeneratedSources(true);
            }
        }
    }
    try {
        configureGradle(rootModel);
    } catch (IOException e) {
        MOEToolWindow.getInstance(project).error("Error occurred during gradle configuration: " + e.getMessage());
    }
    if (!isNewProject) {
        File settingsGradle = new File(projectPath, "settings.gradle");
        try {
            if (!settingsGradle.exists()) {
                if (!settingsGradle.createNewFile()) {
                    MOEToolWindow.getInstance(project).error("Error occurred during gradle settings file.");
                }
            }
            modifyGradleSettings(settingsGradle, new Module[] { rootModel.getModule() });
        } catch (IOException e) {
            MOEToolWindow.getInstance(project).error("Error occurred during gradle configuration: " + e.getMessage());
        }
    }
    if (contentRoot != null) {
        contentRoot.refresh(false, true);
    }
    Sdk sdk = MOESdkType.getMOESdk(rootModel.getModule());
    if (sdk != null) {
        rootModel.setSdk(sdk);
    } else {
        MOEToolWindow.getInstance(project).error("Error, unable set Sdk.");
    }
    rootModel.getModuleExtension(LanguageLevelModuleExtension.class).setLanguageLevel(MOESdkType.REQUIRED_JAVA_LANGUAGE_LEVEL);
    StartupManager.getInstance(project).runWhenProjectIsInitialized(new Runnable() {

        @Override
        public void run() {
            configureRun(rootModel);
        }
    });
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) MOEProjectComposer(org.moe.generator.project.MOEProjectComposer) ReformatCodeProcessor(com.intellij.codeInsight.actions.ReformatCodeProcessor) IOException(java.io.IOException) JavaSourceRootProperties(org.jetbrains.jps.model.java.JavaSourceRootProperties) Project(com.intellij.openapi.project.Project) SourceFolder(com.intellij.openapi.roots.SourceFolder) ConfigurationException(com.intellij.openapi.options.ConfigurationException) ContentEntry(com.intellij.openapi.roots.ContentEntry) Sdk(com.intellij.openapi.projectRoots.Sdk) Module(com.intellij.openapi.module.Module) LanguageLevelModuleExtension(com.intellij.openapi.roots.LanguageLevelModuleExtension) ProjectRootManager(com.intellij.openapi.roots.ProjectRootManager) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File)

Aggregations

JavaSourceRootProperties (org.jetbrains.jps.model.java.JavaSourceRootProperties)21 SourceFolder (com.intellij.openapi.roots.SourceFolder)6 VirtualFile (com.intellij.openapi.vfs.VirtualFile)5 JpsModuleSourceRoot (org.jetbrains.jps.model.module.JpsModuleSourceRoot)5 JpsElement (org.jetbrains.jps.model.JpsElement)4 JavaSourceRootType (org.jetbrains.jps.model.java.JavaSourceRootType)4 File (java.io.File)3 IOException (java.io.IOException)2 NotNull (org.jetbrains.annotations.NotNull)2 Nullable (org.jetbrains.annotations.Nullable)2 JavaResourceRootProperties (org.jetbrains.jps.model.java.JavaResourceRootProperties)2 AnalysisScope (com.intellij.analysis.AnalysisScope)1 ReformatCodeProcessor (com.intellij.codeInsight.actions.ReformatCodeProcessor)1 Module (com.intellij.openapi.module.Module)1 ConfigurationException (com.intellij.openapi.options.ConfigurationException)1 Project (com.intellij.openapi.project.Project)1 Sdk (com.intellij.openapi.projectRoots.Sdk)1 ContentEntry (com.intellij.openapi.roots.ContentEntry)1 LanguageLevelModuleExtension (com.intellij.openapi.roots.LanguageLevelModuleExtension)1 ProjectRootManager (com.intellij.openapi.roots.ProjectRootManager)1