Index: /trunk/quest-plugin-guitar/pom.xml
===================================================================
--- /trunk/quest-plugin-guitar/pom.xml	(revision 582)
+++ /trunk/quest-plugin-guitar/pom.xml	(revision 583)
@@ -1,11 +1,18 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>de.ugoe.cs.quest</groupId>
-  <artifactId>quest-plugin-guitar</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
-  <name>quest-plugin-guitar</name>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>de.ugoe.cs.quest</groupId>
+	<artifactId>quest-plugin-guitar</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>quest-plugin-guitar</name>
 	<scm>
 		<url>https://quest.informatik.uni-goettingen.de/svn/quest/trunk/quest-plugin-guitar</url>
 	</scm>
+	<repositories>
+		<repository>
+			<id>quest-repo</id>
+			<url>https://trex.informatik.uni-goettingen.de/nexus/content/repositories/thirdparty</url>
+		</repository>
+	</repositories>
 	<dependencies>
 		<dependency>
@@ -18,4 +25,24 @@
 			<artifactId>quest-plugin-core</artifactId>
 			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>de.ugoe.cs.quest</groupId>
+			<artifactId>quest-core-events</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>de.ugoe.cs.quest</groupId>
+			<artifactId>quest-core-usageprofiles</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>de.ugoe.cs.quest</groupId>
+			<artifactId>quest-ui-core</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>edu.umd.cs</groupId>
+			<artifactId>guitar-model-core</artifactId>
+			<version>1.0</version>
 		</dependency>
 	</dependencies>
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGModelGenerator.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGModelGenerator.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGModelGenerator.java	(revision 583)
@@ -0,0 +1,135 @@
+package de.ugoe.cs.quest.plugin.guitar;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITAREventTarget;
+import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITAREventType;
+import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITARReplayable;
+import de.ugoe.cs.quest.ui.commands.CMDupdateModel;
+import de.ugoe.cs.quest.usageprofiles.DeterministicFiniteAutomaton;
+import de.ugoe.cs.quest.usageprofiles.FirstOrderMarkovModel;
+import edu.umd.cs.guitar.model.GUITARConstants;
+import edu.umd.cs.guitar.model.IO;
+import edu.umd.cs.guitar.model.data.EFG;
+import edu.umd.cs.guitar.model.data.EventGraphType;
+import edu.umd.cs.guitar.model.data.EventType;
+
+/**
+ * <p>
+ * Provides functionality to generates models defined in the package
+ * de.ugoe.cs.quest.usageprofiles from EFGs.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class EFGModelGenerator {
+
+	/**
+	 * <p>
+	 * Generates a {@link FirstOrderMarkovModel} from an EFG. In the generated
+	 * model, all following events are equally possible, i.e., the model is
+	 * equal to a {@link DeterministicFiniteAutomaton}. However, through further
+	 * training (e.g., {@link CMDupdateModel}) this can be changed.
+	 * </p>
+	 * 
+	 * @param efgFileName
+	 *            name of the EFG file
+	 * @return model generated from the EFG
+	 */
+	public FirstOrderMarkovModel efgToFirstOrderMarkovModel(String efgFileName) {
+		EFG efg = (EFG) IO.readObjFromFile(efgFileName, EFG.class);
+
+		Collection<List<Event>> subsequences = generateEdgeSequences(efg);
+		FirstOrderMarkovModel model = new FirstOrderMarkovModel(new Random());
+		model.train(subsequences);
+		return model;
+	}
+
+	/**
+	 * <p>
+	 * Generates a {@link DeterministicFiniteAutomaton} from an EFG.
+	 * </p>
+	 * 
+	 * @param efgFileName
+	 *            name of the EFG file
+	 * @return model generated from the EFG
+	 */
+	public DeterministicFiniteAutomaton efgToDeterministicFiniteAutomaton(
+			String efgFileName) {
+		EFG efg = (EFG) IO.readObjFromFile(efgFileName, EFG.class);
+
+		Collection<List<Event>> subsequences = generateEdgeSequences(efg);
+		DeterministicFiniteAutomaton model = new DeterministicFiniteAutomaton(
+				new Random());
+		model.train(subsequences);
+		return model;
+	}
+
+	/**
+	 * <p>
+	 * Extracts the graph structure from the EFG. The result is a set of
+	 * sequences, where each sequence has length two and represents an edge in
+	 * the EFG.
+	 * </p>
+	 * 
+	 * @param efg
+	 *            EFG for which the edge sequence set is generated
+	 * @return edge sequence set
+	 */
+	private Collection<List<Event>> generateEdgeSequences(EFG efg) {
+		List<Event> events = createEvents(efg);
+		/*
+		 * getEventGraph returns an adjacency matrix, i.e., a square matrix of
+		 * efgEvents.size(), where a 1 in row i, column j means an edge
+		 * efgEvents.get(i)->efgEvents.get(j) exists.
+		 */
+		EventGraphType efgGraph = efg.getEventGraph();
+		Collection<List<Event>> subsequences = new LinkedList<List<Event>>();
+
+		int efgSize = events.size();
+		for (int row = 0; row < efgSize; row++) {
+			for (int col = 0; col < efgSize; col++) {
+				int relation = efgGraph.getRow().get(row).getE().get(col);
+				// otherEvent is followed by currentEvent
+				if (relation != GUITARConstants.NO_EDGE) {
+					List<Event> edge = new LinkedList<Event>();
+					edge.add(events.get(row));
+					edge.add(events.get(col));
+					subsequences.add(edge);
+				}
+			}
+		}
+		return subsequences;
+	}
+
+	/**
+	 * <p>
+	 * Extracts creates {@link EFGEvent} for every event contained in the EFG.
+	 * </p>
+	 * 
+	 * @param efg
+	 *            EFG for which the events are created
+	 * @return list of events
+	 */
+	private List<Event> createEvents(EFG efg) {
+		List<EventType> efgEvents = efg.getEvents().getEvent();
+		List<Event> myEvents = new ArrayList<Event>(efgEvents.size());
+		for (EventType event : efgEvents) {
+			/*
+			 * the widgetId and eventId are only hash values, the
+			 * "interpretation" is found in the GUI file.
+			 */
+		    GUITAREventType type = new GUITAREventType(event.getEventId());
+		    GUITAREventTarget target = new GUITAREventTarget(event.getWidgetId());
+		    Event myEvent = new Event(type, target);
+		    myEvent.addReplayable(new GUITARReplayable(event.getEventId()));
+		}
+		return myEvents;
+	}
+}
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGReplayDecorator.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGReplayDecorator.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGReplayDecorator.java	(revision 583)
@@ -0,0 +1,95 @@
+package de.ugoe.cs.quest.plugin.guitar;
+
+import de.ugoe.cs.quest.IReplayDecorator;
+import de.ugoe.cs.util.StringTools;
+
+/**
+ * <p>
+ * {@link IReplayDecorator} for replays generated for the GUITAR suite.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class EFGReplayDecorator implements IReplayDecorator {
+
+	/**
+	 * <p>
+	 * Id for object serialization.
+	 * </p>
+	 */
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * <p>
+	 * The instance of the {@link EFGReplayDecorator} (implemented as
+	 * singleton).
+	 * </p>
+	 */
+	transient private static EFGReplayDecorator theInstance;
+
+	/**
+	 * <p>
+	 * Constructor. Private to guarantee that only one instance of the replay
+	 * generator exists.
+	 * </p>
+	 */
+	private EFGReplayDecorator() {
+	};
+
+	/**
+	 * <p>
+	 * Returns the instance of the MFCReplayDecorator.
+	 * </p>
+	 * 
+	 * @return instance of the MFCReplayDecorator.
+	 */
+	public static EFGReplayDecorator getInstance() {
+		if (theInstance == null) {
+			theInstance = new EFGReplayDecorator();
+		}
+		return theInstance;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.quest.IReplayDecorator#getHeader()
+	 */
+	@Override
+	public String getHeader() {
+		return "<?xml version=\"1.0\" encoding=\"UTF-16\"?>"
+				+ StringTools.ENDLINE + "<TestCase>" + StringTools.ENDLINE;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.quest.IReplayDecorator#getFooter()
+	 */
+	@Override
+	public String getFooter() {
+		return "</TestCase>";
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.quest.IReplayDecorator#getSessionHeader(int)
+	 */
+	@Override
+	public String getSessionHeader(int sessionId) {
+		return "";
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.quest.IReplayDecorator#getSessionFooter(int)
+	 */
+	@Override
+	public String getSessionFooter(int sessionId) {
+		return "";
+	}
+
+}
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/GUITARTestCaseParser.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/GUITARTestCaseParser.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/GUITARTestCaseParser.java	(revision 583)
@@ -0,0 +1,113 @@
+package de.ugoe.cs.quest.plugin.guitar;
+
+import java.io.File;
+import java.util.LinkedList;
+import java.util.List;
+
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITAREventTarget;
+import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITAREventType;
+import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITARReplayable;
+import edu.umd.cs.guitar.model.IO;
+import edu.umd.cs.guitar.model.data.EFG;
+import edu.umd.cs.guitar.model.data.EventType;
+import edu.umd.cs.guitar.model.data.StepType;
+import edu.umd.cs.guitar.model.data.TestCase;
+
+/**
+ * <p>
+ * Parser for GUITAR test case files.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class GUITARTestCaseParser {
+
+	/**
+	 * <p>
+	 * Name of the EFG file for the application the test cases that are parsed
+	 * are generated for.
+	 * </p>
+	 */
+	private String efgFileName = null;
+
+	/**
+	 * <p>
+	 * Internal handle to the parsed EFG.
+	 * </p>
+	 */
+	private EFG efg = null;
+
+	/**
+	 * <p>
+	 * Constructor. Creates a new GUITARTestCaseParser. No EFG file is
+	 * associated with this parser.
+	 * </p>
+	 */
+	public GUITARTestCaseParser() {
+
+	}
+
+	/**
+	 * <p>
+	 * Constructor. Creates a new GUITARTestCaseParser.
+	 * </p>
+	 * 
+	 * @param efgFileName
+	 *            EFG file associated with the test cases that are parsed.
+	 */
+	public GUITARTestCaseParser(String efgFileName) {
+		this.efgFileName = efgFileName;
+	}
+
+	/**
+	 * <p>
+	 * Parses a GUITAR test case file and returns its contents as an event
+	 * sequence.
+	 * </p>
+	 * 
+	 * @param testcaseFile
+	 *            file that is parsed
+	 * @return event sequence describing the test case
+	 */
+	public List<Event> parseTestCaseFile(File testcaseFile) {
+		TestCase testcase = (TestCase) IO.readObjFromFile(
+				testcaseFile.getAbsolutePath(), TestCase.class);
+		List<StepType> steps = testcase.getStep();
+		List<Event> sequence = new LinkedList<Event>();
+		for (StepType step : steps) {
+			String eventId = step.getEventId();
+			GUITAREventType type = new GUITAREventType(eventId);
+			GUITAREventTarget target = new GUITAREventTarget(getWidgetId(eventId));
+			Event event = new Event(type, target);
+			event.addReplayable(new GUITARReplayable(eventId));
+			sequence.add(event);
+		}
+		return sequence;
+	}
+
+	/**
+	 * <p>
+	 * If {@link #efgFileName} is specified, this function retrieves the
+	 * widgetId of the widget the event with id eventId belongs to from the EFG.
+	 * </p>
+	 * 
+	 * @param eventId
+	 * @return widgetId of the associated widget; null if {@link #efgFileName}
+	 *         ==null or no widgetId for the event is found in the EFG
+	 */
+	private String getWidgetId(String eventId) {
+		if (eventId != null && efgFileName != null) {
+			if (efg == null) {
+				efg = (EFG) IO.readObjFromFile(efgFileName, EFG.class);
+			}
+			for (EventType event : efg.getEvents().getEvent()) {
+				if (eventId.equals(event.getEventId())) {
+					return event.getWidgetId();
+				}
+			}
+		}
+		return null;
+	}
+}
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgTestCasesToSequences.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgTestCasesToSequences.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgTestCasesToSequences.java	(revision 583)
@@ -0,0 +1,83 @@
+package de.ugoe.cs.quest.plugin.guitar.commands;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.security.InvalidParameterException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+
+import de.ugoe.cs.quest.CommandHelpers;
+import de.ugoe.cs.quest.eventcore.Event;
+import de.ugoe.cs.quest.plugin.guitar.GUITARTestCaseParser;
+import de.ugoe.cs.quest.ui.GlobalDataContainer;
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Command to load a set of sequences from a set of GUITAR test cases.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class CMDefgTestCasesToSequences implements Command {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+	 */
+	@Override
+	public void run(List<Object> parameters) {
+		String foldername;
+		String sequencesName;
+		String efgFileName = null;
+		try {
+			foldername = (String) parameters.get(0);
+			sequencesName = (String) parameters.get(1);
+			if (parameters.size() >= 3) {
+				efgFileName = (String) parameters.get(2);
+			}
+		} catch (Exception e) {
+			throw new InvalidParameterException();
+		}
+
+		File folder = new File(foldername);
+		
+		File[] testcaseFiles = folder.listFiles( new FilenameFilter() {
+			@Override
+			public boolean accept(File dir, String name) {
+				return name.endsWith(".tst");
+			}
+		});
+		Collection<List<Event>> sequences = new LinkedList<List<Event>>();
+		GUITARTestCaseParser parser;
+		if (efgFileName == null) {
+			parser = new GUITARTestCaseParser();
+		} else {
+			parser = new GUITARTestCaseParser(efgFileName);
+		}
+		for (File testcaseFile : testcaseFiles) {
+			Console.traceln("Loading from file "
+					+ testcaseFile.getAbsolutePath());
+			sequences.add(parser.parseTestCaseFile(testcaseFile));
+		}
+		if (GlobalDataContainer.getInstance().addData(sequencesName, sequences)) {
+			CommandHelpers.dataOverwritten(sequencesName);
+		}
+
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#help()
+	 */
+	@Override
+	public void help() {
+		Console.println("Usage: efgTestCasesToSequences <folder> <sequencesName> {<efgFileName>}");
+	}
+
+}
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgToDFA.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgToDFA.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgToDFA.java	(revision 583)
@@ -0,0 +1,55 @@
+package de.ugoe.cs.quest.plugin.guitar.commands;
+
+import java.security.InvalidParameterException;
+import java.util.List;
+
+import de.ugoe.cs.quest.plugin.guitar.EFGModelGenerator;
+import de.ugoe.cs.quest.ui.GlobalDataContainer;
+import de.ugoe.cs.quest.usageprofiles.DeterministicFiniteAutomaton;
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Command to that loads an EFG and creates Deterministic Finite Automaton (DFA)
+ * with the same structure.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class CMDefgToDFA implements Command {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+	 */
+	@Override
+	public void run(List<Object> parameters) {
+		String filename;
+		String modelname;
+		try {
+			filename = (String) parameters.get(0);
+			modelname = (String) parameters.get(1);
+		} catch (Exception e) {
+			throw new InvalidParameterException();
+		}
+
+		EFGModelGenerator modelGenerator = new EFGModelGenerator();
+		DeterministicFiniteAutomaton model = modelGenerator
+				.efgToDeterministicFiniteAutomaton(filename);
+		GlobalDataContainer.getInstance().addData(modelname, model);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#help()
+	 */
+	@Override
+	public void help() {
+		Console.println("Usage: efgToDFA <filename> <modelname>");
+	}
+
+}
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgToMM.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgToMM.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/commands/CMDefgToMM.java	(revision 583)
@@ -0,0 +1,55 @@
+package de.ugoe.cs.quest.plugin.guitar.commands;
+
+import java.security.InvalidParameterException;
+import java.util.List;
+
+import de.ugoe.cs.quest.plugin.guitar.EFGModelGenerator;
+import de.ugoe.cs.quest.ui.GlobalDataContainer;
+import de.ugoe.cs.quest.usageprofiles.FirstOrderMarkovModel;
+import de.ugoe.cs.util.console.Command;
+import de.ugoe.cs.util.console.Console;
+
+/**
+ * <p>
+ * Command to that loads an EFG and creates a first-order Markov model with the
+ * same structure.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class CMDefgToMM implements Command {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#run(java.util.List)
+	 */
+	@Override
+	public void run(List<Object> parameters) {
+		String filename;
+		String modelname;
+		try {
+			filename = (String) parameters.get(0);
+			modelname = (String) parameters.get(1);
+		} catch (Exception e) {
+			throw new InvalidParameterException();
+		}
+
+		EFGModelGenerator modelGenerator = new EFGModelGenerator();
+		FirstOrderMarkovModel model = modelGenerator
+				.efgToFirstOrderMarkovModel(filename);
+		GlobalDataContainer.getInstance().addData(modelname, model);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see de.ugoe.cs.util.console.Command#help()
+	 */
+	@Override
+	public void help() {
+		Console.println("Usage: efgToMM <filename> <modelname>");
+	}
+
+}
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITAREventTarget.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITAREventTarget.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITAREventTarget.java	(revision 583)
@@ -0,0 +1,43 @@
+package de.ugoe.cs.quest.plugin.guitar.eventcore;
+
+import de.ugoe.cs.quest.eventcore.IEventTarget;
+
+/**
+ * 
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @version $Revision: $ $Date: Aug 16, 2012$
+ * @author 2012, last modified by $Author: sherbold$
+ */
+public class GUITAREventTarget implements IEventTarget {
+
+    private static final long serialVersionUID = 1L;
+    
+    String widgetId;
+    
+    public GUITAREventTarget(String widgetId) {
+        this.widgetId = widgetId;
+    }
+
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.quest.eventcore.IEventTarget#getPlatform()
+     */
+    @Override
+    public String getPlatform() {
+        // TODO Auto-generated method stub
+        System.out.println("TODO: implement GUITAREventTarget.getPlatform ");
+        return null;
+    }
+    
+    /*
+     * (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return widgetId;
+    }
+
+}
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITAREventType.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITAREventType.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITAREventType.java	(revision 583)
@@ -0,0 +1,42 @@
+package de.ugoe.cs.quest.plugin.guitar.eventcore;
+
+import de.ugoe.cs.quest.eventcore.IEventType;
+
+/**
+ * 
+ * <p>
+ * TODO comment
+ * </p>
+ * 
+ * @version $Revision: $ $Date: Aug 16, 2012$
+ * @author 2012, last modified by $Author: sherbold$
+ */
+public class GUITAREventType implements IEventType {
+
+    /**  */
+    private static final long serialVersionUID = 1L;
+    
+    String guitarEventId;
+    
+    public GUITAREventType(String eventId) {
+        this.guitarEventId = eventId;
+    }
+    
+    /* (non-Javadoc)
+     * @see de.ugoe.cs.quest.eventcore.IEventType#getName()
+     */
+    @Override
+    public String getName() {
+        return "GUITAREventType";
+    }
+    
+    /*
+     * (non-Javadoc)
+     * @see java.lang.Object#toString()
+     */
+    @Override
+    public String toString() {
+        return guitarEventId;
+    }
+
+}
Index: /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITARReplayable.java
===================================================================
--- /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITARReplayable.java	(revision 583)
+++ /trunk/quest-plugin-guitar/src/main/java/de/ugoe/cs/quest/plugin/guitar/eventcore/GUITARReplayable.java	(revision 583)
@@ -0,0 +1,69 @@
+
+package de.ugoe.cs.quest.plugin.guitar.eventcore;
+
+import de.ugoe.cs.quest.IReplayDecorator;
+import de.ugoe.cs.quest.eventcore.IReplayable;
+import de.ugoe.cs.quest.plugin.guitar.EFGReplayDecorator;
+import de.ugoe.cs.util.StringTools;
+
+/**
+ * <p>
+ * {@link IReplayable} used to generate test cases for the GUITAR suite.
+ * </p>
+ * 
+ * @author Steffen Herbold
+ * @version 1.0
+ */
+public class GUITARReplayable implements IReplayable {
+
+    /**
+     * <p>
+     * EventId in the EFG and GUI files.
+     * </p>
+     */
+    String eventId;
+
+    /**
+     * <p>
+     * Id for object serialization.
+     * </p>
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * <p>
+     * Constructor. Creates a new {@link GUITARReplayable}.
+     * </p>
+     * 
+     * @param eventId
+     */
+    public GUITARReplayable(String eventId) {
+        this.eventId = eventId;
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.quest.eventcore.IReplayable#getReplay()
+     */
+    @Override
+    public String getReplay() {
+        StringBuilder replay = new StringBuilder();
+        replay.append("<Step>" + StringTools.ENDLINE);
+        replay.append("<EventId>" + eventId + "</EventId>" + StringTools.ENDLINE);
+        replay.append("<ReachingStep>false</ReachingStep>" + StringTools.ENDLINE);
+        replay.append("</Step>" + StringTools.ENDLINE);
+        return replay.toString();
+    }
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see de.ugoe.cs.quest.eventcore.IReplayable#getDecorator()
+     */
+    @Override
+    public IReplayDecorator getDecorator() {
+        return EFGReplayDecorator.getInstance();
+    }
+
+}
Index: /trunk/quest-ui-core/pom.xml
===================================================================
--- /trunk/quest-ui-core/pom.xml	(revision 582)
+++ /trunk/quest-ui-core/pom.xml	(revision 583)
@@ -12,10 +12,4 @@
     <url>https://quest.informatik.uni-goettingen.de/svn/quest/trunk/quest-ui-core</url>
   </scm>
-  <repositories>
-    <repository>
-      <id>quest-repo</id>
-      <url>https://trex.informatik.uni-goettingen.de/nexus/content/repositories/thirdparty</url>
-    </repository>
-  </repositories>
   <dependencies>
     <dependency>
@@ -64,9 +58,4 @@
       <version>1.2.17</version>
     </dependency>
-    <dependency>
-      <groupId>edu.umd.cs</groupId>
-      <artifactId>guitar-model-core</artifactId>
-      <version>1.0</version>
-    </dependency>
   </dependencies>
   <build>
Index: unk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGModelGenerator.java
===================================================================
--- /trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGModelGenerator.java	(revision 582)
+++ 	(revision )
@@ -1,135 +1,0 @@
-package de.ugoe.cs.quest.plugin.guitar;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Random;
-
-import de.ugoe.cs.quest.eventcore.Event;
-import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITAREventTarget;
-import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITAREventType;
-import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITARReplayable;
-import de.ugoe.cs.quest.ui.commands.CMDupdateModel;
-import de.ugoe.cs.quest.usageprofiles.DeterministicFiniteAutomaton;
-import de.ugoe.cs.quest.usageprofiles.FirstOrderMarkovModel;
-import edu.umd.cs.guitar.model.GUITARConstants;
-import edu.umd.cs.guitar.model.IO;
-import edu.umd.cs.guitar.model.data.EFG;
-import edu.umd.cs.guitar.model.data.EventGraphType;
-import edu.umd.cs.guitar.model.data.EventType;
-
-/**
- * <p>
- * Provides functionality to generates models defined in the package
- * de.ugoe.cs.quest.usageprofiles from EFGs.
- * </p>
- * 
- * @author Steffen Herbold
- * @version 1.0
- */
-public class EFGModelGenerator {
-
-	/**
-	 * <p>
-	 * Generates a {@link FirstOrderMarkovModel} from an EFG. In the generated
-	 * model, all following events are equally possible, i.e., the model is
-	 * equal to a {@link DeterministicFiniteAutomaton}. However, through further
-	 * training (e.g., {@link CMDupdateModel}) this can be changed.
-	 * </p>
-	 * 
-	 * @param efgFileName
-	 *            name of the EFG file
-	 * @return model generated from the EFG
-	 */
-	public FirstOrderMarkovModel efgToFirstOrderMarkovModel(String efgFileName) {
-		EFG efg = (EFG) IO.readObjFromFile(efgFileName, EFG.class);
-
-		Collection<List<Event>> subsequences = generateEdgeSequences(efg);
-		FirstOrderMarkovModel model = new FirstOrderMarkovModel(new Random());
-		model.train(subsequences);
-		return model;
-	}
-
-	/**
-	 * <p>
-	 * Generates a {@link DeterministicFiniteAutomaton} from an EFG.
-	 * </p>
-	 * 
-	 * @param efgFileName
-	 *            name of the EFG file
-	 * @return model generated from the EFG
-	 */
-	public DeterministicFiniteAutomaton efgToDeterministicFiniteAutomaton(
-			String efgFileName) {
-		EFG efg = (EFG) IO.readObjFromFile(efgFileName, EFG.class);
-
-		Collection<List<Event>> subsequences = generateEdgeSequences(efg);
-		DeterministicFiniteAutomaton model = new DeterministicFiniteAutomaton(
-				new Random());
-		model.train(subsequences);
-		return model;
-	}
-
-	/**
-	 * <p>
-	 * Extracts the graph structure from the EFG. The result is a set of
-	 * sequences, where each sequence has length two and represents an edge in
-	 * the EFG.
-	 * </p>
-	 * 
-	 * @param efg
-	 *            EFG for which the edge sequence set is generated
-	 * @return edge sequence set
-	 */
-	private Collection<List<Event>> generateEdgeSequences(EFG efg) {
-		List<Event> events = createEvents(efg);
-		/*
-		 * getEventGraph returns an adjacency matrix, i.e., a square matrix of
-		 * efgEvents.size(), where a 1 in row i, column j means an edge
-		 * efgEvents.get(i)->efgEvents.get(j) exists.
-		 */
-		EventGraphType efgGraph = efg.getEventGraph();
-		Collection<List<Event>> subsequences = new LinkedList<List<Event>>();
-
-		int efgSize = events.size();
-		for (int row = 0; row < efgSize; row++) {
-			for (int col = 0; col < efgSize; col++) {
-				int relation = efgGraph.getRow().get(row).getE().get(col);
-				// otherEvent is followed by currentEvent
-				if (relation != GUITARConstants.NO_EDGE) {
-					List<Event> edge = new LinkedList<Event>();
-					edge.add(events.get(row));
-					edge.add(events.get(col));
-					subsequences.add(edge);
-				}
-			}
-		}
-		return subsequences;
-	}
-
-	/**
-	 * <p>
-	 * Extracts creates {@link EFGEvent} for every event contained in the EFG.
-	 * </p>
-	 * 
-	 * @param efg
-	 *            EFG for which the events are created
-	 * @return list of events
-	 */
-	private List<Event> createEvents(EFG efg) {
-		List<EventType> efgEvents = efg.getEvents().getEvent();
-		List<Event> myEvents = new ArrayList<Event>(efgEvents.size());
-		for (EventType event : efgEvents) {
-			/*
-			 * the widgetId and eventId are only hash values, the
-			 * "interpretation" is found in the GUI file.
-			 */
-		    GUITAREventType type = new GUITAREventType(event.getEventId());
-		    GUITAREventTarget target = new GUITAREventTarget(event.getWidgetId());
-		    Event myEvent = new Event(type, target);
-		    myEvent.addReplayable(new GUITARReplayable(event.getEventId()));
-		}
-		return myEvents;
-	}
-}
Index: unk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGReplayDecorator.java
===================================================================
--- /trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/guitar/EFGReplayDecorator.java	(revision 582)
+++ 	(revision )
@@ -1,95 +1,0 @@
-package de.ugoe.cs.quest.plugin.guitar;
-
-import de.ugoe.cs.quest.IReplayDecorator;
-import de.ugoe.cs.util.StringTools;
-
-/**
- * <p>
- * {@link IReplayDecorator} for replays generated for the GUITAR suite.
- * </p>
- * 
- * @author Steffen Herbold
- * @version 1.0
- */
-public class EFGReplayDecorator implements IReplayDecorator {
-
-	/**
-	 * <p>
-	 * Id for object serialization.
-	 * </p>
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * <p>
-	 * The instance of the {@link EFGReplayDecorator} (implemented as
-	 * singleton).
-	 * </p>
-	 */
-	transient private static EFGReplayDecorator theInstance;
-
-	/**
-	 * <p>
-	 * Constructor. Private to guarantee that only one instance of the replay
-	 * generator exists.
-	 * </p>
-	 */
-	private EFGReplayDecorator() {
-	};
-
-	/**
-	 * <p>
-	 * Returns the instance of the MFCReplayDecorator.
-	 * </p>
-	 * 
-	 * @return instance of the MFCReplayDecorator.
-	 */
-	public static EFGReplayDecorator getInstance() {
-		if (theInstance == null) {
-			theInstance = new EFGReplayDecorator();
-		}
-		return theInstance;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see de.ugoe.cs.quest.IReplayDecorator#getHeader()
-	 */
-	@Override
-	public String getHeader() {
-		return "<?xml version=\"1.0\" encoding=\"UTF-16\"?>"
-				+ StringTools.ENDLINE + "<TestCase>" + StringTools.ENDLINE;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see de.ugoe.cs.quest.IReplayDecorator#getFooter()
-	 */
-	@Override
-	public String getFooter() {
-		return "</TestCase>";
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see de.ugoe.cs.quest.IReplayDecorator#getSessionHeader(int)
-	 */
-	@Override
-	public String getSessionHeader(int sessionId) {
-		return "";
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see de.ugoe.cs.quest.IReplayDecorator#getSessionFooter(int)
-	 */
-	@Override
-	public String getSessionFooter(int sessionId) {
-		return "";
-	}
-
-}
Index: unk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/guitar/GUITARTestCaseParser.java
===================================================================
--- /trunk/quest-ui-core/src/main/java/de/ugoe/cs/quest/plugin/guitar/GUITARTestCaseParser.java	(revision 582)
+++ 	(revision )
@@ -1,113 +1,0 @@
-package de.ugoe.cs.quest.plugin.guitar;
-
-import java.io.File;
-import java.util.LinkedList;
-import java.util.List;
-
-import de.ugoe.cs.quest.eventcore.Event;
-import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITAREventTarget;
-import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITAREventType;
-import de.ugoe.cs.quest.plugin.guitar.eventcore.GUITARReplayable;
-import edu.umd.cs.guitar.model.IO;
-import edu.umd.cs.guitar.model.data.EFG;
-import edu.umd.cs.guitar.model.data.EventType;
-import edu.umd.cs.guitar.model.data.StepType;
-import edu.umd.cs.guitar.model.data.TestCase;
-
-/**
- * <p>
- * Parser for GUITAR test case files.
- * </p>
- * 
- * @author Steffen Herbold
- * @version 1.0
- */
-public class GUITARTestCaseParser {
-
-	/**
-	 * <p>
-	 * Name of the EFG file for the application the test cases that are parsed
-	 * are generated for.
-	 * </p>
-	 */
-	private String efgFileName = null;
-
-	/**
-	 * <p>
-	 * Internal handle to the parsed EFG.
-	 * </p>
-	 */
-	private EFG efg = null;
-
-	/**
-	 * <p>
-	 * Constructor. Creates a new GUITARTestCaseParser. No EFG file is
-	 * associated with this parser.
-	 * </p>
-	 */
-	public GUITARTestCaseParser() {
-
-	}
-
-	/**
-	 * <p>
-	 * Constructor. Creates a new GUITARTestCaseParser.
-	 * </p>
-	 * 
-	 * @param efgFileName
-	 *            EFG file associated with the test cases that are parsed.
-	 */
-	public GUITARTestCaseParser(String efgFileName) {
-		this.efgFileName = efgFileName;
-	}
-
-	/**
-	 * <p>
-	 * Parses a GUITAR test case file and returns its contents as an event
-	 * sequence.
-	 * </p>
-	 * 
-	 * @param testcaseFile
-	 *            file that is parsed
-	 * @return event sequence describing the test case
-	 */
-	public List<Event> parseTestCaseFile(File testcaseFile) {
-		TestCase testcase = (TestCase) IO.readObjFromFile(
-				testcaseFile.getAbsolutePath(), TestCase.class);
-		List<StepType> steps = testcase.getStep();
-		List<Event> sequence = new LinkedList<Event>();
-		for (StepType step : steps) {
-			String eventId = step.getEventId();
-			GUITAREventType type = new GUITAREventType(eventId);
-			GUITAREventTarget target = new GUITAREventTarget(getWidgetId(eventId));
-			Event event = new Event(type, target);
-			event.addReplayable(new GUITARReplayable(eventId));
-			sequence.add(event);
-		}
-		return sequence;
-	}
-
-	/**
-	 * <p>
-	 * If {@link #efgFileName} is specified, this function retrieves the
-	 * widgetId of the widget the event with id eventId belongs to from the EFG.
-	 * </p>
-	 * 
-	 * @param eventId
-	 * @return widgetId of the associated widget; null if {@link #efgFileName}
-	 *         ==null or no widgetId for the event is found in the EFG
-	 */
-	private String getWidgetId(String eventId) {
-		if (eventId != null && efgFileName != null) {
-			if (efg == null) {
-				efg = (EFG) IO.readObjFromFile(efgFileName, EFG.class);
-			}
-			for (EventType event : efg.getEvents().getEvent()) {
-				if (eventId.equals(event.getEventId())) {
-					return event.getWidgetId();
-				}
-			}
-		}
-		return null;
-	}
-}
