package org.ebayopensource.turmeric.eclipse.utils.ui; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.ebayopensource.turmeric.eclipse.core.logging.SOALogger; import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants; import org.ebayopensource.turmeric.eclipse.utils.plugin.ProgressUtil; import org.ebayopensource.turmeric.eclipse.utils.plugin.WorkspaceUtil; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; /** * The Class ProjectUtils. */ public class ProjectUtils { private static final SOALogger logger = SOALogger.getLogger(); /** * Checks if is project good for consumption. * * @param projectNames the project names * @return true, if is project good for consumption */ public static boolean isProjectGoodForConsumption(String... projectNames) { if (!ResourcesPlugin.getWorkspace().isAutoBuilding()) { final List<String> serviceNames = new ArrayList<String>(); ArrayList<IProject> projectsToBeBuilt = new ArrayList<IProject>(); for (String projectName : projectNames) { if (WorkspaceUtil.getProject(projectName).exists()) { serviceNames.add(projectName); projectsToBeBuilt.add(WorkspaceUtil.getProject(projectName)); } } final String serviceNameList = StringUtils.join(serviceNames, SOAProjectConstants.DELIMITER_COMMA); if (!projectsToBeBuilt.isEmpty()) { if (UIUtil .openChoiceDialog( "Cannot consume the selected service", "You have set build automatically off. These projects should be built before it could be consumed [" + serviceNameList + "].\n\n Click Ok to build it or otherwise Cancel.", IStatus.ERROR)) { for (IProject project : projectsToBeBuilt) { try { project.build(IncrementalProjectBuilder.FULL_BUILD, ProgressUtil.getDefaultMonitor(null)); } catch (CoreException e) { logger.warning(e); } } return true; } else { return false; } } } return true; } }