/* * Copyright 2009 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.eclipse.javascript.jstestdriver.ui.launch; import static com.google.eclipse.javascript.jstestdriver.core.model.LaunchConfigurationConstants.JSTD_LAUNCH_CONFIGURATION_TYPE; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.swt.widgets.Display; import com.google.eclipse.javascript.jstestdriver.core.model.LaunchConfigurationConstants; import com.google.eclipse.javascript.jstestdriver.ui.Activator; /** * @author shyamseshadri@gmail.com (Shyam Seshadri) */ public class JavascriptLaunchConfigurationHelper { public ILaunchConfiguration getLaunchConfiguration(String projectName) { try { ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); ILaunchConfigurationType type = launchManager.getLaunchConfigurationType(JSTD_LAUNCH_CONFIGURATION_TYPE); ILaunchConfiguration[] launchConfigurations = launchManager.getLaunchConfigurations(type); for (ILaunchConfiguration launchConfiguration : launchConfigurations) { String configProjectName = launchConfiguration.getAttribute(LaunchConfigurationConstants.PROJECT_NAME, ""); if (configProjectName.equals(projectName) && isValidToRun(projectName, launchConfiguration)) { return launchConfiguration; } } } catch (CoreException e) { IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.toString()); ErrorDialog.openError(Display.getCurrent().getActiveShell(), "JS Test Driver", "JS Test Driver Error", status); } return null; } public boolean isExistingLaunchConfigWithRunOnSaveOtherThanCurrent(String projectName, String launchConfigName) { try { ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager(); ILaunchConfigurationType type = launchManager.getLaunchConfigurationType(JSTD_LAUNCH_CONFIGURATION_TYPE); ILaunchConfiguration[] launchConfigurations = launchManager.getLaunchConfigurations(type); for (ILaunchConfiguration launchConfiguration : launchConfigurations) { String configProjectName = launchConfiguration.getAttribute(LaunchConfigurationConstants.PROJECT_NAME, ""); boolean runOnEveryBuild = launchConfiguration.getAttribute(LaunchConfigurationConstants.RUN_ON_EVERY_SAVE, false); String configName = launchConfiguration.getName(); boolean isProjectNameEqual = configProjectName.equals(projectName); boolean isLaunchConfigNameEqual = launchConfigName.equals(configName); if (isProjectNameEqual && runOnEveryBuild && !isLaunchConfigNameEqual) { return true; } } } catch (CoreException e) { // logger.logException(e); } return false; } public boolean isExistingLaunchConfigurationWithRunOnSave(String projectName) { return getLaunchConfiguration(projectName) != null; } private boolean isValidToRun(String projectName, ILaunchConfiguration launchConfiguration) throws CoreException { boolean runOnEveryBuild = launchConfiguration.getAttribute(LaunchConfigurationConstants.RUN_ON_EVERY_SAVE, false); if (runOnEveryBuild && !isExistingLaunchConfigWithRunOnSaveOtherThanCurrent(projectName, launchConfiguration.getName())) { return true; } return false; } }