/**
* Copyright (c) Red Hat, Inc., contributors and others 2013 - 2014. All rights reserved
*
* Licensed under the Eclipse Public License version 1.0, available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.jboss.tools.forge.core.util;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.maven.model.Model;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.WorkspaceJob;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.project.MavenProjectInfo;
import org.eclipse.m2e.core.project.ProjectImportConfiguration;
public class ProjectTools {
private ProjectTools() {
}
public static void updateProjectConfiguration(final IProject project) {
Job job = new WorkspaceJob("Updating project configuration") {
public IStatus runInWorkspace(IProgressMonitor monitor) {
try {
MavenPlugin.getProjectConfigurationManager().updateProjectConfiguration(
project,
monitor);
} catch(CoreException ex) {
return ex.getStatus();
}
return Status.OK_STATUS;
}
};
job.setRule(MavenPlugin.getProjectConfigurationManager().getRule());
job.schedule();
}
public static void importProject(final String baseDirPath, final String projectName) {
Job job = new WorkspaceJob("Importing Forge project") {
public IStatus runInWorkspace(IProgressMonitor monitor) {
try {
MavenPlugin.getProjectConfigurationManager().importProjects(
getProjectToImport(baseDirPath, projectName),
new ProjectImportConfiguration(),
monitor);
} catch(CoreException ex) {
return ex.getStatus();
}
return Status.OK_STATUS;
}
};
job.setRule(MavenPlugin.getProjectConfigurationManager().getRule());
job.schedule();
}
private static Collection<MavenProjectInfo> getProjectToImport(String baseDirPath, String projectName) {
ArrayList<MavenProjectInfo> result = new ArrayList<>(1);
result.add(createMavenProjectInfo(baseDirPath, projectName));
return result;
}
private static MavenProjectInfo createMavenProjectInfo(String baseDirPath, String projectName) {
MavenProjectInfo result = null;
try {
File projectDir = new File(baseDirPath, projectName);
File pomFile = new File(projectDir, "pom.xml");
Model model = MavenPlugin.getMavenModelManager().readMavenModel(pomFile);
String pomName = projectName + "/" + "pom.xml";
result = new MavenProjectInfo(pomName, pomFile, model, null);
} catch (CoreException e) {
}
return result;
}
}