/*******************************************************************************
* Copyright Technophobia Ltd 2012
*
* This file is part of the Substeps Eclipse Plugin.
*
* The Substeps Eclipse Plugin is free software: you can redistribute it and/or modify
* it under the terms of the Eclipse Public License v1.0.
*
* The Substeps Eclipse Plugin is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* Eclipse Public License for more details.
*
* You should have received a copy of the Eclipse Public License
* along with the Substeps Eclipse Plugin. If not, see <http://www.eclipse.org/legal/epl-v10.html>.
******************************************************************************/
package com.technophobia.substeps.junit.launcher.model;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import com.technophobia.eclipse.launcher.config.SubstepsLaunchConfigurationConstants;
import com.technophobia.substeps.FeatureRunnerPlugin;
import com.technophobia.substeps.junit.launcher.SubstepsFeatureLaunchShortcut;
import com.technophobia.substeps.supplier.Transformer;
public class SubstepsLaunchModelFactory implements LaunchModelFactory {
private final Transformer<IProject, String> substepsFolderLocator;
public SubstepsLaunchModelFactory(final Transformer<IProject, String> substepsFolderLocator) {
this.substepsFolderLocator = substepsFolderLocator;
}
@Override
public LaunchModel createFrom(final IResource resource) {
final IProject project = resource.getProject();
final String filePath = resource.getFullPath().removeFirstSegments(1).toOSString();
final String substepsFolder = substepsFolderLocator.from(project);
return new SubstepsLaunchModel(project.getName(), filePath, substepsFolder);
}
@Override
public LaunchModel createFrom(final ILaunchConfiguration config) {
final String projectName = getConfigAttribute(config, SubstepsLaunchConfigurationConstants.ATTR_FEATURE_PROJECT);
final String featureFile = getConfigAttribute(config, SubstepsFeatureLaunchShortcut.ATTR_FEATURE_FILE);
final String substepsFile = getConfigAttribute(config, SubstepsLaunchConfigurationConstants.ATTR_SUBSTEPS_FILE);
return new SubstepsLaunchModel(projectName, featureFile, substepsFile);
}
private String getConfigAttribute(final ILaunchConfiguration config, final String configName) {
try {
return config.getAttribute(configName, "");
} catch (final CoreException e) {
FeatureRunnerPlugin.log(e);
return "";
}
}
}