package de.ovgu.cide.mining.autoeval;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.junit.Assert;
import de.ovgu.cide.features.FeatureModelManager;
import de.ovgu.cide.features.FeatureModelNotFoundException;
import de.ovgu.cide.features.IFeature;
public class Projects {
}
abstract class EvalProject {
abstract IProject getProject() throws CoreException;
abstract String[] getFeatures();
String[] getAllFeatures() {
return getFeatures();
}
abstract Map<String, String[]> getSeeds();
IFeature getFeatureByName(String name) throws CoreException,
FeatureModelNotFoundException {
IProject project = getProject();
Set<IFeature> features = FeatureModelManager.getInstance()
.getFeatureModel(project).getFeatures();
return getFeature(name, features);
}
private static IFeature getFeature(String featureName,
Set<IFeature> features) {
IFeature color = null;
for (IFeature f : features)
if (f.getName().equals(featureName))
color = f;
Assert.assertNotNull(color);
return color;
}
}
class MobileMediaProject extends EvalProject {
public String[] getFeaturesAll() {
return new String[] { "Copy_Media", "Count_and_Sort", "Favourites",
"SMS_Transfer", "Play_Music", "View_Photo", "SMS_or_Copy" };
}
Map<String, String[]> getSeeds() {
HashMap<String, String[]> seeds = new HashMap<String, String[]>();
seeds.put("Copy_Media", new String[] { "seed_Copy_Media_1_1.log",
"seed_Copy_Media_2_0961.log", "seed_Copy_Media_3_0694.log",
"seed_Copy_Media_4_0579.log", "seed_Copy_Media_5_0507.log",
"seed_Copy_Media_domain.log" });
seeds.put("Count_and_Sort", new String[] {
"seed_Count_and_Sort_1_1.log",
"seed_Count_and_Sort_2_0707.log",
"seed_Count_and_Sort_3_066.log",
"seed_Count_and_Sort_4_0577.log",
"seed_Count_and_Sort_5_0412.log",
"seed_Count_and_Sort_domain.log" });
seeds.put("Favourites", new String[] { "seed_Favourites_1_1.log",
"seed_Favourites_2_0875.log", "seed_Favourites_3_075.log",
"seed_Favourites_4_0438.log", "seed_Favourites_5_025.log",
"seed_Favourites_domain.log" });
seeds.put("Play_Music", new String[] { "seed_Play_Music_1_1.log",
"seed_Play_Music_2_08.log", "seed_Play_Music_3_08.log",
"seed_Play_Music_4_0707.log", "seed_Play_Music_5_0707.log",
"seed_Play_Music_domain.log" });
seeds
.put("SMS_Transfer", new String[] {
"seed_SMS_Transfer_2_0373.log",
"seed_SMS_Transfer_3_0323.log",
"seed_SMS_Transfer_4_0311.log",
"seed_SMS_Transfer_5_0308.log",
"seed_SMS_Transfer_6_308.log",
"seed_SMS_Transfer_domain.log" });
return seeds;
}
@Override
String[] getFeatures() {
return new String[] { "Copy_Media", "Count_and_Sort", "Favourites",
"SMS_Transfer", "Play_Music" };
}
@Override
IProject getProject() throws CoreException {
return EvalHelper.getProject("MobileMedia_Eval");
}
}
class PrevalerProject extends EvalProject {
String[] getFeatures() {
return new String[] { "Snapshot", "Censor", "GZip", "Monitor",
"Replication" };
}
Map<String, String[]> seedsPrevayler = new HashMap<String, String[]>();
{
seedsPrevayler.put("Censor", new String[] { "seed_Censor_1_1.log",
"seed_Censor_package.log" });
seedsPrevayler.put("GZip", new String[] { "seed_GZip_1_x.log",
"seed_GZip_package.log" });
seedsPrevayler.put("Monitor", new String[] { "seed_Monitor_1_1.log",
"seed_Monitor_package.log" });
seedsPrevayler.put("Replication", new String[] {
"seed_Replication_1_1.log", "seed_Replication_package.log" });
seedsPrevayler.put("Snapshot", new String[] { "seed_Snapshot_1_1.log",
"seed_Censor_package.log" });
}
@Override
public Map<String, String[]> getSeeds() {
return seedsPrevayler;
}
@Override
IProject getProject() throws CoreException {
return EvalHelper.getProject("Prevayler_Eval");
}
}
class LampiroProject extends EvalProject {
String[] getFeatures() {
return new String[] { "Compression", "TLS" };
}
Map<String, String[]> seeds = new HashMap<String, String[]>();
{
seeds.put("Compression",
new String[] { "seed_Compression.log" });
seeds.put("TLS", new String[] { "seed_TLS.log" });
}
@Override
public Map<String, String[]> getSeeds() {
return seeds;
}
@Override
IProject getProject() throws CoreException {
return EvalHelper.getProject("Lampiro_Eval");
}
}