package org.erlide.cover.runtime.launch;
import java.util.Collection;
import org.erlide.cover.api.Configuration;
import org.erlide.cover.api.CoverException;
import org.erlide.cover.api.IConfiguration;
import org.erlide.cover.core.Activator;
import org.erlide.cover.core.Logger;
import org.erlide.engine.model.ErlModelException;
import org.erlide.engine.model.root.IErlModule;
import org.erlide.util.ErlLogger;
/**
* Settings for performing coverage.
*
* @author Aleksandra Lipiec <aleksandra.lipiec@erlang.solutions.com>
*
*/
public class CoverLaunchSettings {
private final LaunchType type;
private final FrameworkType frameworkType;
private final Configuration config;
private final Logger log; // logger
/**
* Create coverage settings, depend mainly on launch type
*
* @param t
* @param data
*/
public CoverLaunchSettings(final LaunchType t, final CoverLaunchData data)
throws CoverException {
type = t;
frameworkType = data.getFramework();
config = new Configuration();
log = Activator.getDefault();
if (data.getFramework() == null) {
throw new CoverException("No test framework set");
}
switch (t) {
case MODULE:
// new
config.setProject(data.getProject());
if (data.getProject() == null || data.getProject().length() == 0) {
throw new CoverException("No project name set");
}
if (data.getModule() == null || data.getModule().length() == 0) {
throw new CoverException("No module name set");
}
try {
config.addModule(data.getModule().replace(".erl", ""));
} catch (final ErlModelException e) {
ErlLogger.error(e);
throw new CoverException(e.getMessage());
}
break;
case ALL:
// new
if (data.getProjectAll() == null || data.getProjectAll().length() == 0) {
throw new CoverException("No project name set");
}
config.setProject(data.getProjectAll());
try {
final Collection<IErlModule> allModules = config.getProject()
.getModules();
for (final IErlModule m : allModules) {
log.info(m.getFilePath());
if (!m.getFilePath().contains("/test/")) {
config.addModule(m);
}
}
} catch (final ErlModelException e) {
ErlLogger.error(e);
throw new CoverException(e.getMessage());
}
break;
case CUSTOM:
break;
}
}
public LaunchType getType() {
return type;
}
public String getTypeAsString() {
return type.name().toLowerCase();
}
public String getFramework() {
return frameworkType.name().toLowerCase();
}
public IConfiguration getConfig() {
return config;
}
}