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);
}
});
}
Aggregations