commit 9a88453dfe44ffcec7d45990cf843039598f5593
Author: Tomáš Šimandl <tomas.simandl@gmail.com>
Date:   Wed Aug 22 08:54:07 2018 +0200

    Removed EFP from backend

diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexData.java b/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexData.java
deleted file mode 100644
index ffe04e8..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexData.java
+++ /dev/null
@@ -1,46 +0,0 @@
-///**
-// *
-// */
-//package cz.zcu.kiv.offscreen.data.efpportal;
-//
-//import java.util.HashMap;
-//import java.util.Map;
-//
-///**
-// *
-// * Representation of EFPPortal's connections . A connection consists of a provided and required features.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class CocaexData {
-//	/**
-//	 * Map of all provided features.
-//	 */
-//	private Map<String, CocaexDataFeature> providedFeatures;
-//
-//	/**
-//	 * Map of all required features.
-//	 */
-//	private Map<String, CocaexDataFeature> requiredFeatures;
-//
-//	public CocaexData() {
-//		this.providedFeatures = new HashMap<String, CocaexDataFeature>();
-//		this.requiredFeatures = new HashMap<String, CocaexDataFeature>();
-//	}
-//
-//	/**
-//	 * @return the providedFeatures
-//	 */
-//	public Map<String, CocaexDataFeature> getProvidedFeatures() {
-//		return providedFeatures;
-//	}
-//
-//	/**
-//	 * @return the importedFeatures
-//	 */
-//	public Map<String, CocaexDataFeature> getRequiredFeatures() {
-//		return requiredFeatures;
-//	}
-//
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexDataEfp.java b/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexDataEfp.java
deleted file mode 100644
index 80f677f..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexDataEfp.java
+++ /dev/null
@@ -1,69 +0,0 @@
-//package cz.zcu.kiv.offscreen.data.efpportal;
-//
-//import cz.zcu.kiv.efps.comparator.result.EfpEvalResult.MatchingResult;
-//import cz.zcu.kiv.efps.types.datatypes.EfpValueType;
-//
-///**
-// * Holds EFP's data.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class CocaexDataEfp {
-//	private String efpName;
-//	private String efpValueTypeName;
-//	private EfpValueType efpValue;
-//	private MatchingResult typeError;
-//
-//	/**
-//	 * @return the efpName
-//	 */
-//	public String getEfpName() {
-//		return efpName;
-//	}
-//	/**
-//	 * @param efpName the efpName to set
-//	 */
-//	public void setEfpName(String efpName) {
-//		this.efpName = efpName;
-//	}
-//	/**
-//	 * @return the efpValueTypeName
-//	 */
-//	public String getEfpValueTypeName() {
-//		return efpValueTypeName;
-//	}
-//	/**
-//	 * @param efpValueTypeName the efpValueTypeName to set
-//	 */
-//	public void setEfpValueTypeName(String efpValueTypeName) {
-//		this.efpValueTypeName = efpValueTypeName;
-//	}
-//	/**
-//	 * @return the efpValue
-//	 */
-//	public EfpValueType getEfpValue() {
-//		return efpValue;
-//	}
-//	/**
-//	 * @param efpValue the efpValue to set
-//	 */
-//	public void setEfpValue(EfpValueType efpValue) {
-//		this.efpValue = efpValue;
-//	}
-//
-//	/**
-//	 * @return the typeError
-//	 */
-//	public MatchingResult getTypeError() {
-//		return typeError;
-//	}
-//
-//	/**
-//	 * @param typeError the typeError to set
-//	 */
-//	public void setTypeError(MatchingResult typeError) {
-//		this.typeError = typeError;
-//	}
-//
-//}
\ No newline at end of file
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexDataFeature.java b/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexDataFeature.java
deleted file mode 100644
index d3870c2..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexDataFeature.java
+++ /dev/null
@@ -1,33 +0,0 @@
-//package cz.zcu.kiv.offscreen.data.efpportal;
-//
-//import java.util.ArrayList;
-//import java.util.List;
-//
-///**
-// * Holds feature's data.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class CocaexDataFeature {
-//	private List<CocaexDataEfp> efps;
-//
-//	public CocaexDataFeature() {
-//		this.efps = new ArrayList<CocaexDataEfp>();
-//	}
-//
-//	/**
-//	 * @return the efps
-//	 */
-//	public List<CocaexDataEfp> getEfps() {
-//		return efps;
-//	}
-//
-//	/**
-//	 * @param efps the efps to set
-//	 */
-//	public void setEfps(List<CocaexDataEfp> efps) {
-//		this.efps = efps;
-//	}
-//
-//}
\ No newline at end of file
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexWrapper.java b/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexWrapper.java
deleted file mode 100644
index 32fdd62..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/data/efpportal/CocaexWrapper.java
+++ /dev/null
@@ -1,66 +0,0 @@
-//package cz.zcu.kiv.offscreen.data.efpportal;
-//
-//import java.util.Map;
-//
-///**
-// *
-// * EFPPortal export data wrapper. Contains mappings for feature connection names and EFPs names.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class CocaexWrapper {
-//	/**
-//	 * Feature names mapping.
-//	 */
-//	private Map<String, String> featureMappings;
-//
-//	/**
-//	 * EFPs name s mapping.
-//	 */
-//	private Map<String, String> efpMappings;
-//
-//	/**
-//	 * EFPPortal data with IDs instead of names for EFPs and Features.
-//	 */
-//	private Map<String, CocaexData> data;
-//
-//	/**
-//	 * @return the featureMappings
-//	 */
-//	public Map<String, String> getFeatureMappings() {
-//		return featureMappings;
-//	}
-//	/**
-//	 * @param featureMappings the featureMappings to set
-//	 */
-//	public void setFeatureMappings(Map<String, String> featureMappings) {
-//		this.featureMappings = featureMappings;
-//	}
-//	/**
-//	 * @return the efpMappings
-//	 */
-//	public Map<String, String> getEfpMappings() {
-//		return efpMappings;
-//	}
-//	/**
-//	 * @param efpMappings the efpMappings to set
-//	 */
-//	public void setEfpMappings(Map<String, String> efpMappings) {
-//		this.efpMappings = efpMappings;
-//	}
-//	/**
-//	 * @return the data
-//	 */
-//	public Map<String, CocaexData> getData() {
-//		return data;
-//	}
-//	/**
-//	 * @param data the data to set
-//	 */
-//	public void setData(Map<String, CocaexData> data) {
-//		this.data = data;
-//	}
-//
-//
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/efp/utils/JsonTransformer.java b/sources/src/main/java/cz/zcu/kiv/offscreen/efp/utils/JsonTransformer.java
deleted file mode 100644
index 1d33aac..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/efp/utils/JsonTransformer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-//package cz.zcu.kiv.offscreen.efp.utils;
-//
-//import java.io.ByteArrayInputStream;
-//import java.io.IOException;
-//import java.util.zip.GZIPInputStream;
-//
-//import javax.servlet.http.HttpServletRequest;
-//
-//import org.apache.log4j.Logger;
-//
-//import net.sf.json.JSONObject;
-//
-//import org.apache.commons.codec.binary.Base64;
-//import org.apache.commons.io.IOUtils;
-//
-//import com.google.gson.Gson;
-//import com.google.gson.GsonBuilder;
-//
-//import cz.zcu.kiv.efps.types.datatypes.EfpValueType;
-//import cz.zcu.kiv.efps.types.serialisation.json.EfpValueTypeAdapter;
-//import cz.zcu.kiv.offscreen.api.GraphInterface;
-//import cz.zcu.kiv.offscreen.data.efpportal.CocaexWrapper;
-//import cz.zcu.kiv.offscreen.graph.GraphExport;
-//import cz.zcu.kiv.offscreen.graph.creator.EfpGraphTransfomer;
-//
-///**
-// *
-// * Transofma and decompress tools for incoming JSON.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class JsonTransformer {
-//	private Logger logger = Logger.getLogger(JsonTransformer.class);
-//
-//	/**
-//	 *
-//	 * Deserialize input JSON and transform to graph JSON.
-//	 *
-//	 * @param inputJSON
-//	 * @param request
-//	 * @return
-//	 * @throws IOException
-//	 */
-//	public String transformInputJSONToGraphJSON(String inputJSON,
-//			HttpServletRequest request) throws IOException {
-//		CocaexWrapper efpResults;
-//
-//		GsonBuilder gsonBuilder = new GsonBuilder();
-//		// JSON deserializing adapter provided for EFP type classes
-//		gsonBuilder.registerTypeAdapter(EfpValueType.class,
-//				new EfpValueTypeAdapter());
-//		// JSON deserializing adapter for the Wrapper class
-//		gsonBuilder.registerTypeAdapter(CocaexWrapper.class,
-//				new WrapperDeserializer());
-//		Gson gson = gsonBuilder.create();
-//
-//		// decode + unzip received data
-//		String data = decompress(inputJSON);
-//
-//		// deserialize using deserializer adapters
-//		efpResults = gson.fromJson(data, CocaexWrapper.class);
-//
-//		request.setAttribute("efpPortalEfpNames", efpResults.getEfpMappings());
-//
-//		// transform received data to readable graph form
-//		EfpGraphTransfomer transformer = new EfpGraphTransfomer(efpResults);
-//		GraphInterface graph = transformer.transform();
-//		GraphExport export = new GraphExport(graph);
-//
-//		// transform graph to JSON
-//		JSONObject o = JSONObject.fromObject(export);
-//
-//		return o.toString();
-//	}
-//
-//	/**
-//	 * Decode and unzip a Base64 encoded GZIPed string.
-//	 *
-//	 * @param input
-//	 * @return
-//	 * @throws IOException
-//	 */
-//	private String decompress(String input) throws IOException {
-//		logger.trace("ENTRY");
-//		String result = null;
-//
-//		byte[] bytes = Base64.decodeBase64(input);
-//		GZIPInputStream zi = null;
-//		try {
-//			zi = new GZIPInputStream(new ByteArrayInputStream(bytes));
-//			result = IOUtils.toString(zi);
-//		} finally {
-//			IOUtils.closeQuietly(zi);
-//		}
-//		logger.trace("EXIT");
-//
-//		return result;
-//	}
-//
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/efp/utils/WrapperDeserializer.java b/sources/src/main/java/cz/zcu/kiv/offscreen/efp/utils/WrapperDeserializer.java
deleted file mode 100644
index fcff7f7..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/efp/utils/WrapperDeserializer.java
+++ /dev/null
@@ -1,76 +0,0 @@
-//package cz.zcu.kiv.offscreen.efp.utils;
-//
-//import java.lang.reflect.Type;
-//import java.util.HashMap;
-//import java.util.Map;
-//
-//import org.apache.log4j.Logger;
-//
-//import com.google.gson.Gson;
-//import com.google.gson.GsonBuilder;
-//import com.google.gson.JsonDeserializationContext;
-//import com.google.gson.JsonDeserializer;
-//import com.google.gson.JsonElement;
-//import com.google.gson.JsonObject;
-//
-//import cz.zcu.kiv.efps.types.datatypes.EfpValueType;
-//import cz.zcu.kiv.efps.types.serialisation.json.EfpValueTypeAdapter;
-//import cz.zcu.kiv.offscreen.data.efpportal.CocaexData;
-//import cz.zcu.kiv.offscreen.data.efpportal.CocaexWrapper;
-//
-///**
-// *
-// * CocaexWrapper class deserializer.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class WrapperDeserializer implements JsonDeserializer<CocaexWrapper> {
-//	private Logger logger = Logger.getLogger(WrapperDeserializer.class);
-//
-//	@Override
-//	public CocaexWrapper deserialize(JsonElement json, Type typeOfT,
-//			JsonDeserializationContext context) {
-//		logger.trace("ENTRY");
-//
-//		GsonBuilder gsonBuilder = new GsonBuilder();
-//		// JSON deserializing adapter provided for EFP type classes
-//		gsonBuilder.registerTypeAdapter(EfpValueType.class,
-//				new EfpValueTypeAdapter());
-//		Gson gson = gsonBuilder.create();
-//
-//		CocaexWrapper wrapper = gson.fromJson(json, CocaexWrapper.class);
-//		JsonObject jo = json.getAsJsonObject();
-//
-//		Map<String, String> featureMappings = new HashMap<String, String>();
-//		Map<String, String> efpMappings = new HashMap<String, String>();
-//		Map<String, CocaexData> data = new HashMap<String, CocaexData>();
-//
-//		// parse feature mappings
-//		JsonObject featuresObject = jo.getAsJsonObject("featureMappings");
-//		for (Map.Entry<String, JsonElement> entry : featuresObject.entrySet()) {
-//			featureMappings.put(entry.getKey(), entry.getValue().getAsString());
-//		}
-//
-//		// parse efps mappings
-//		JsonObject efpsObject = jo.getAsJsonObject("efpMappings");
-//		for (Map.Entry<String, JsonElement> entry : efpsObject.entrySet()) {
-//			efpMappings.put(entry.getKey(), entry.getValue().getAsString());
-//		}
-//
-//		// parse data
-//		JsonObject dataObject = jo.getAsJsonObject("data");
-//		for (Map.Entry<String, JsonElement> entry : dataObject.entrySet()) {
-//			data.put(entry.getKey(), (CocaexData) context.deserialize(
-//					entry.getValue(), CocaexData.class));
-//		}
-//
-//		// fill output structure
-//		wrapper.setFeatureMappings(featureMappings);
-//		wrapper.setEfpMappings(efpMappings);
-//		wrapper.setData(data);
-//		logger.trace("EXIT");
-//
-//		return wrapper;
-//	}
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/EfpGraphTransfomer.java b/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/EfpGraphTransfomer.java
deleted file mode 100644
index fb8f0eb..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/EfpGraphTransfomer.java
+++ /dev/null
@@ -1,397 +0,0 @@
-//package cz.zcu.kiv.offscreen.graph.creator;
-//
-//import java.util.ArrayList;
-//import java.util.HashMap;
-//import java.util.List;
-//import java.util.Map;
-//
-//import org.apache.log4j.Logger;
-//
-//import cz.zcu.kiv.efps.comparator.result.EfpEvalResult.MatchingResult;
-//import cz.zcu.kiv.offscreen.api.EdgeInterface;
-//import cz.zcu.kiv.offscreen.api.GraphInterface;
-//import cz.zcu.kiv.offscreen.api.VertexInterface;
-//import cz.zcu.kiv.offscreen.data.efpportal.CocaexData;
-//import cz.zcu.kiv.offscreen.data.efpportal.CocaexDataEfp;
-//import cz.zcu.kiv.offscreen.data.efpportal.CocaexDataFeature;
-//import cz.zcu.kiv.offscreen.data.efpportal.CocaexWrapper;
-//import cz.zcu.kiv.offscreen.graph.EdgeEfp;
-//import cz.zcu.kiv.offscreen.graph.GraphImpl;
-//import cz.zcu.kiv.offscreen.graph.VertexEfp;
-//import cz.zcu.kiv.offscreen.graph.efp.EfpComparison;
-//import cz.zcu.kiv.offscreen.graph.efp.EfpFeature;
-//
-///**
-// *
-// * Transforms data obtained in form of Map<String, CocaexData> to
-// * cz.zcu.kiv.offscreen.api.GraphInterface.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class EfpGraphTransfomer {
-//
-//	private final String DELIMITER = ";";
-//
-//	/**
-//	 * Output data format.
-//	 */
-//	private GraphInterface graph = null;
-//
-//	/**
-//	 * Input data format.
-//	 */
-//	private Map<String, CocaexData> resultData = null;
-//
-//	private Map<String, String> resultFeaturesMapping = null;
-//
-//	private Map<String, String> resultEfpsMapping = null;
-//
-//	/**
-//	 * Already used vertices.
-//	 */
-//	private Map<String, VertexInterface> vertexMap;
-//
-//	/**
-//	 * Already used features.
-//	 */
-//	private Map<String, EfpFeature> featureMap;
-//
-//	/**
-//	 * Logging.
-//	 */
-//	private Logger logger = Logger.getLogger(EfpGraphTransfomer.class);
-//
-//	/**
-//	 * New transformer from input data.
-//	 *
-//	 * @param efpportalResultsWrapper
-//	 *            Input data in from of EfpPortal app.
-//	 */
-//	public EfpGraphTransfomer(CocaexWrapper efpportalResultsWrapper) {
-//		logger.trace("ENTRY");
-//		this.graph = new GraphImpl();
-//
-//		this.resultData = efpportalResultsWrapper.getData();
-//		this.resultEfpsMapping = efpportalResultsWrapper.getEfpMappings();
-//		this.resultFeaturesMapping = efpportalResultsWrapper
-//				.getFeatureMappings();
-//
-//		this.vertexMap = new HashMap<String, VertexInterface>();
-//		this.featureMap = new HashMap<String, EfpFeature>();
-//
-//		logger.trace("EXIT");
-//	}
-//
-//	/**
-//	 * Generates the graph with vertices and edges.
-//	 *
-//	 * @return graph
-//	 */
-//	public GraphInterface transform() {
-//		logger.trace("ENTRY");
-//		this.generateVertices();
-//		this.generateEdges();
-//
-//		// set proper feature and efp names
-//		this.setNamesInsteadOfNumbers();
-//		logger.trace("EXIT");
-//
-//		return this.graph;
-//	}
-//
-//	/**
-//	 * Substitute ID for the proper name string.
-//	 */
-//	private void setNamesInsteadOfNumbers() {
-//		logger.trace("ENTRY");
-//
-//		List<EdgeInterface> edges = graph.getEdges();
-//
-//		for (EdgeInterface edgeInterface : edges) {
-//			ArrayList<EfpFeature> features = ((EdgeEfp) edgeInterface)
-//					.getFeatures();
-//
-//			for (EfpFeature efpFeature : features) {
-//				// substitute ID for the true name from the feature mapping
-//				String tmpFeatureName = resultFeaturesMapping.get(efpFeature.getName());
-//
-//				efpFeature.setName(tmpFeatureName.split(DELIMITER)[1]);
-//
-//				ArrayList<EfpComparison> efps = efpFeature.getEfps();
-//
-//				for (EfpComparison efpComparison : efps) {
-//					// substitute ID for the true name from the efps mapping
-//					efpComparison.setEfpName(resultEfpsMapping
-//							.get(efpComparison.getEfpName()));
-//				}
-//			}
-//		}
-//
-//		logger.trace("EXIT");
-//	}
-//
-//	/**
-//	 * Generate vertices for this graph.
-//	 */
-//	private void generateVertices() {
-//		logger.trace("ENTRY");
-//
-//		int id = 0;
-//		VertexEfp vertex;
-//
-//		for (Map.Entry<String, CocaexData> tmpData : resultData.entrySet()) {
-//			id++;
-//
-//			vertex = new VertexEfp(id, tmpData.getKey(), tmpData.getKey());
-//
-//			this.graph.addVertex(tmpData.getKey(), vertex);
-//			this.vertexMap.put(tmpData.getKey(), vertex);
-//		}
-//
-//		logger.trace("EXIT");
-//	}
-//
-//	/**
-//	 * Generate edges for this graph.
-//	 */
-//	private void generateEdges() {
-//		logger.trace("ENTRY");
-//
-//		int id = 0;
-//		String from, to;
-//		CocaexData currentEvaluatedVertexData;
-//
-//		for (Map.Entry<String, VertexInterface> currentVertex : vertexMap
-//				.entrySet()) {
-//			currentEvaluatedVertexData = resultData.get(currentVertex.getKey());
-//
-//			to = currentVertex.getKey();
-//
-//			// all required features FROM
-//			for (Map.Entry<String, CocaexDataFeature> tmpRequired : currentEvaluatedVertexData
-//					.getRequiredFeatures().entrySet()) {
-//
-//				String requiredFeatureName = this.resultFeaturesMapping
-//						.get(tmpRequired.getKey());
-//
-//				// get feature name, its first part is component name
-//				String[] requiredSplits = requiredFeatureName.split(DELIMITER);
-//
-//				// not-connected ones are left over
-//				if (!requiredSplits[0].isEmpty()) {
-//
-//					// vertex from == vertex to -> we dont want that...
-//					if (requiredSplits[0].equals(currentVertex.getKey())) {
-//						continue;
-//					}
-//
-//					// find corresponding feature on the TO vertex
-//					CocaexData otherVertexData = resultData
-//							.get(requiredSplits[0]);
-//					CocaexDataFeature otherVertexFeature = null;
-//
-//					// go through all features of the TO
-//					for (Map.Entry<String, CocaexDataFeature> tmpProvided : otherVertexData
-//							.getProvidedFeatures().entrySet()) {
-//						String providedFeatureName = this.resultFeaturesMapping
-//								.get(tmpProvided.getKey());
-//
-//						String[] providedSplits = providedFeatureName
-//								.split(DELIMITER);
-//
-//						// not-connected ones are left over
-//						if (providedSplits[0].isEmpty()) {
-//							continue;
-//						}
-//
-//						// found matching feature between TO and FROM
-//						if (providedSplits[0].equals(currentVertex.getKey())
-//								&& providedSplits[1].equals(requiredSplits[1])) {
-//							otherVertexFeature = tmpProvided.getValue();
-//						}
-//					}
-//
-//					from = requiredSplits[0];
-//
-//					EdgeEfp edge = findEdgeInGraph(from, to);
-//
-//					// add new edge
-//					if (edge == null) {
-//						edge = new EdgeEfp(++id, from, to);
-//						// from to
-//						checkAddEdgeFeature(tmpRequired.getValue(),
-//								otherVertexFeature, tmpRequired.getKey(), edge);
-//
-//						this.graph.addEdge(edge);
-//					} else {
-//						// add a feature to an old edge only
-//						checkAddEdgeFeature(tmpRequired.getValue(),
-//								otherVertexFeature, tmpRequired.getKey(), edge);
-//					}
-//				}
-//
-//			}
-//		}
-//
-//		logger.trace("EXIT");
-//	}
-//
-//	/**
-//	 *
-//	 * Find an existing edge in graph.
-//	 *
-//	 * @param from
-//	 *            Name of start vertex.
-//	 * @param to
-//	 *            name of end vertex.
-//	 * @return Null if not found, edge otherwise.
-//	 */
-//	private EdgeEfp findEdgeInGraph(String from, String to) {
-//		logger.trace("ENTRY");
-//		List<EdgeInterface> tmpEdges = this.graph.getEdges();
-//
-//		for (EdgeInterface edge : tmpEdges) {
-//			// found old edge
-//			if (edge.getFrom().equals(from) && edge.getTo().equals(to)) {
-//				logger.trace("EXIT");
-//				return (EdgeEfp) edge;
-//			}
-//		}
-//
-//		logger.trace("EXIT");
-//		return null;
-//	}
-//
-//	/**
-//	 *
-//	 * Check and add feature to edge.
-//	 *
-//	 * @param requiredFeature
-//	 *            Required feature with EFPs.
-//	 * @param providedFeature
-//	 *            Provided feature with EFPs.
-//	 * @param name
-//	 *            Feature name.
-//	 * @param edge
-//	 *            Edge where the feature belongs.
-//	 */
-//	private void checkAddEdgeFeature(CocaexDataFeature requiredFeature,
-//			CocaexDataFeature providedFeature, String name, EdgeEfp edge) {
-//		logger.trace("ENTRY");
-//		EfpFeature tmpFeature = null;
-//
-//		// find out if the edge already has a features like the added one
-//		for (EfpFeature oldFeature : edge.getFeatures()) {
-//			// the edge contains the feature already
-//			if (oldFeature.getName().equals(name)) {
-//				tmpFeature = oldFeature;
-//				break;
-//			}
-//		}
-//
-//		// an old feature
-//		if (tmpFeature != null) {
-//			tmpFeature = featureMap.get(name);
-//
-//			processEfpsToFeature(requiredFeature, providedFeature, tmpFeature,
-//					edge);
-//		} else { // add new feature to edge
-//			tmpFeature = new EfpFeature(name);
-//
-//			// preset the OK state
-//			tmpFeature.setFeatureStatus(MatchingResult.OK.toString());
-//
-//			processEfpsToFeature(requiredFeature, providedFeature, tmpFeature,
-//					edge);
-//
-//			edge.getFeatures().add(tmpFeature);
-//			featureMap.put(name, tmpFeature);
-//		}
-//		logger.trace("EXIT");
-//	}
-//
-//	/**
-//	 *
-//	 * Prepare process of adding EFP values to existing feature.
-//	 *
-//	 * @param requiredFeature
-//	 *            Required feature with EFPs.
-//	 * @param providedFeature
-//	 *            Provided feature with EFPs.
-//	 * @param feature
-//	 *            Existing feature.
-//	 * @param edge
-//	 *            Edge where the EFPs with feature belong.
-//	 */
-//	private void processEfpsToFeature(CocaexDataFeature requiredFeature,
-//			CocaexDataFeature providedFeature, EfpFeature feature, EdgeEfp edge) {
-//		logger.trace("ENTRY");
-//
-//		MatchingResult result = checkAddFeatureEfp(requiredFeature,
-//				providedFeature, feature);
-//
-//		if (!result.equals(MatchingResult.OK)) {
-//			edge.setEdgeStatusOk(false);
-//			feature.setFeatureStatus(result.toString());
-//		}
-//
-//		logger.trace("EXIT");
-//	}
-//
-//	/**
-//	 *
-//	 * Check and add EFPs to an existing feature.
-//	 *
-//	 * @param requiredFeature
-//	 *            Required feature with EFPs.
-//	 * @param providedFeature
-//	 *            Provided feature with EFPs.
-//	 * @param feature
-//	 *            Existing feature.
-//	 * @return Result of EFPs comparison. OK/MISSING/ERROR
-//	 */
-//	private MatchingResult checkAddFeatureEfp(
-//			CocaexDataFeature requiredFeature,
-//			CocaexDataFeature providedFeature, EfpFeature feature) {
-//		logger.trace("ENTRY");
-//		final String defaultValue = "No value";
-//
-//		MatchingResult output = MatchingResult.OK;
-//
-//		// all EFPs bound to this feature
-//		for (int i = 0; i < requiredFeature.getEfps().size(); i++) {
-//			EfpComparison efpCmp = new EfpComparison();
-//
-//			CocaexDataEfp firstEfp = requiredFeature.getEfps().get(i);
-//			CocaexDataEfp secondEfp = providedFeature.getEfps().get(i);
-//
-//			// set real values
-//			if (firstEfp.getEfpValue() != null) {
-//				efpCmp.setLeftEfpValue(firstEfp.getEfpValue().toString());
-//			} else {
-//				efpCmp.setLeftEfpValue(defaultValue);
-//			}
-//
-//			if (secondEfp.getEfpValue() != null) {
-//				efpCmp.setRightEfpValue(secondEfp.getEfpValue().toString());
-//			} else {
-//				efpCmp.setRightEfpValue(defaultValue);
-//			}
-//
-//			efpCmp.setTypeName(firstEfp.getEfpValueTypeName());
-//			efpCmp.setEfpName(firstEfp.getEfpName());
-//			efpCmp.setComparisonStatus(firstEfp.getTypeError().name());
-//
-//			// at least one efp is not OK
-//			if (!firstEfp.getTypeError().equals(MatchingResult.OK)) {
-//				output = firstEfp.getTypeError();
-//			}
-//
-//			feature.getEfps().add(efpCmp);
-//		}
-//		logger.trace("EXIT");
-//
-//		return output;
-//	}
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/GraphGenerator.java b/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/GraphGenerator.java
deleted file mode 100644
index 06b43f6..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/GraphGenerator.java
+++ /dev/null
@@ -1,96 +0,0 @@
-//package cz.zcu.kiv.offscreen.graph.creator;
-//
-//import cz.zcu.kiv.offscreen.api.EdgeInterface;
-//import cz.zcu.kiv.offscreen.api.GraphInterface;
-//import cz.zcu.kiv.offscreen.api.VertexInterface;
-//import cz.zcu.kiv.offscreen.graph.EdgeImpl;
-//import cz.zcu.kiv.offscreen.graph.GraphImpl;
-//import cz.zcu.kiv.offscreen.graph.VertexImpl;
-//import java.security.InvalidParameterException;
-//import java.util.Random;
-//import org.apache.log4j.Logger;
-//
-///**
-// * @author Jindra Pavlíková <jindra.pav2@seznam.cz>
-// */
-//public class GraphGenerator {
-//
-//    private final int COUNT_OF_VERTICES;
-//    private final int COUNT_OF_EDGES;
-//    private GraphInterface graph;
-//    private boolean[][] conectionGraph;
-//
-//    private Logger logger = Logger.getLogger(GraphGenerator.class);
-//
-//    public GraphGenerator(int countOfVertices, int countOfEdges) {
-//        logger.trace("ENTRY");
-//        if (countOfVertices <= 0 || countOfEdges <= 0
-//                || countOfEdges > (countOfVertices * countOfVertices - countOfVertices)) {
-//            throw new InvalidParameterException("Count of edges is greater then count of possible edges.");
-//        }
-//        this.COUNT_OF_VERTICES = countOfVertices;
-//        this.COUNT_OF_EDGES = countOfEdges;
-//        this.graph = new GraphImpl();
-//        this.conectionGraph = new boolean[this.COUNT_OF_VERTICES][this.COUNT_OF_VERTICES];
-//        logger.trace("EXIT");
-//    }
-//
-//    /**
-//     * This method creates the vertices and adds them to the graph.
-//     */
-//    private void generateVertices() {
-//        logger.trace("ENTRY");
-//        VertexInterface vertex;
-//        String name;
-//
-//        for (int i = 0; i < this.COUNT_OF_VERTICES; i++) {
-//            name = "vertex " + (i + 1);
-//            vertex = new VertexImpl((i + 1), name, name);
-//            this.graph.addVertex(name, vertex);
-//        }
-//        logger.trace("EXIT");
-//    }
-//
-//    /**
-//     * Generates edges between randomly selected vertices and adds them to the
-//     * graph.
-//     */
-//    private void generateEdges() {
-//        logger.trace("ENTRY");
-//        Random rnd = new Random(10);
-//        int v1, v2;
-//        EdgeInterface edge;
-//        VertexImpl vertex1, vertex2;
-//        for (int i = 0; i < this.COUNT_OF_EDGES; i++) {
-//
-//            do {
-//                v1 = rnd.nextInt(this.COUNT_OF_VERTICES);
-//                v2 = rnd.nextInt(this.COUNT_OF_VERTICES);
-//            } while (v1 == v2 || this.conectionGraph[v1][v2] == true);
-//
-//            this.conectionGraph[v1][v2] = true;
-//
-//            vertex1 = (VertexImpl) this.graph.getVertices().get("vertex " + (v1 + 1));
-//            vertex2 = (VertexImpl) this.graph.getVertices().get("vertex " + (v2 + 1));
-//            edge = new EdgeImpl(i + 1, vertex1.getName(), vertex2.getName(), true, "");
-//            this.graph.addEdge(edge);
-////            vertex1.addEdge(edge);
-////            vertex2.addEdge(edge);
-//
-//        }
-//        logger.trace("EXIT");
-//    }
-//
-//    /**
-//     * Generates the graph with vertices and edges.
-//     *
-//     * @return graph
-//     */
-//    public GraphInterface generate() {
-//        logger.trace("ENTRY");
-//        generateVertices();
-//        generateEdges();
-//        logger.trace("EXIT");
-//        return this.graph;
-//    }
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/GraphMaker.java b/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/GraphMaker.java
deleted file mode 100644
index f8701e9..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/creator/GraphMaker.java
+++ /dev/null
@@ -1,439 +0,0 @@
-//package cz.zcu.kiv.offscreen.graph.creator;
-//
-//import cz.zcu.kiv.ccu.ApiCmpStateResult;
-//import cz.zcu.kiv.ccu.ApiInterCompatibilityResult;
-//import cz.zcu.kiv.jacc.cmp.JComparator;
-//import cz.zcu.kiv.jacc.javatypes.*;
-//import cz.zcu.kiv.offscreen.api.GraphInterface;
-//import cz.zcu.kiv.offscreen.api.VertexInterface;
-//import cz.zcu.kiv.offscreen.graph.EdgeImpl;
-//import cz.zcu.kiv.offscreen.graph.GraphImpl;
-//import cz.zcu.kiv.offscreen.graph.VertexImpl;
-//import cz.zcu.kiv.typescmp.CmpResult;
-//import cz.zcu.kiv.typescmp.CmpResultNode;
-//import cz.zcu.kiv.typescmp.CorrectionStrategy;
-//
-//import org.apache.log4j.Logger;
-//import org.json.JSONArray;
-//import org.json.JSONObject;
-//
-//import java.io.File;
-//import java.io.IOException;
-//import java.io.InputStream;
-//import java.util.*;
-//
-///**
-// * This class provides creation graph of the loaded bundle.
-// *
-// * @author Jindra Pavlíková <jindra.pav2@seznam.cz>
-// */
-//public class GraphMaker {
-//
-//    private GraphInterface graph;
-//    private Logger logger = Logger.getLogger(GraphMaker.class);
-//    private Map<String, VertexInterface> vertexMap;
-//    private String fileLocation;
-//    private int level;
-//
-//    private ApiInterCompatibilityResult comparisonResult;
-//    private File[] uploadedFiles;
-//    private Properties jaccMessages;
-//
-//    private static final String NOT_FOUND = "NOT_FOUND";
-//
-//    public GraphMaker(String fileLocation, ApiInterCompatibilityResult comparisonResult, File[] uploadedFiles) throws IOException {
-//        logger.trace("ENTRY");
-//        this.graph = new GraphImpl();
-//        this.fileLocation = fileLocation;
-//
-//        this.uploadedFiles = uploadedFiles;
-//        this.comparisonResult = comparisonResult;
-//        logger.trace("EXIT");
-//
-//        jaccMessages = new Properties();
-//        InputStream in = null;
-//        try {
-//            in = JComparator.class.getResourceAsStream("messages.properties");
-//            jaccMessages.load(in);
-//        } catch (IOException e) {
-//            logger.trace(e);
-//        } finally {
-//            if (in != null) {
-//                try {
-//                    in.close();
-//                } catch (IOException e) {
-//                    logger.trace(e);
-//                }
-//            }
-//        }
-//    }
-//
-//    /**
-//     * This method creates the vertices and adds them to the graph.
-//     */
-//    private void generateVertices() {
-//        logger.trace("ENTRY");
-//
-//        VertexImpl vertex;
-//        String name;
-//        String symbolicName;
-//        int id = 0;
-//        this.vertexMap = new HashMap<>();
-//
-//        for (File origin : this.uploadedFiles) {
-//            id++;
-//            symbolicName = createSymbolicName(origin.toString());
-//            name = origin.getName();
-//            vertex = new VertexImpl(id, name, symbolicName);
-//
-//            this.vertexMap.put(symbolicName, vertex);
-//            this.graph.addVertex(symbolicName, vertex);
-//        }
-//
-//        symbolicName = createSymbolicName(NOT_FOUND);
-//        vertex = new VertexImpl(++id, NOT_FOUND, symbolicName);
-//
-//        this.vertexMap.put(symbolicName, vertex);
-//        this.graph.addVertex(symbolicName, vertex);
-//
-//        logger.trace("EXIT");
-//    }
-//
-//    /**
-//     * This method creates the edges and adds them to the graph. Currently, only incompatible edges are created.
-//     */
-//    private void generateEdges() {
-//        logger.trace("ENTRY");
-//
-//        int id = 0;
-//
-//        // cyklus pres nekompatibilni komponenty (komponenta = jar soubor)
-//        Set<String> components = comparisonResult.getOriginsImportingIncompatibilities();
-//        for (String component : components) {
-//            String firstOrigin = "";
-//            String secondOrigin = "";
-//            String firstOriginNF = "";
-//            String secondOriginNF = "";
-//
-//            JSONArray incompatibleInfoJSON = new JSONArray();
-//            JSONArray notFoundInfoJSON = new JSONArray();
-//
-//            // cyklus pres nekompatibilni tridy
-//            Set<JClass> incompatibleClasses = comparisonResult.getClassesImportingIncompatibilities(component);
-//            for (JClass incompatibleClass : incompatibleClasses) {
-//                JSONArray incompatibilitiesJson = new JSONArray();
-//                JSONArray missingClassesJson = new JSONArray();
-//
-//                // cyklus pres samotne nekompatibility
-//                Set<ApiCmpStateResult> apiCmpResults = comparisonResult.getIncompatibleResults(incompatibleClass, component);
-//                for (ApiCmpStateResult apiCmpResult : apiCmpResults) {
-//                    this.level = 0;
-//
-//                    CmpResult<File> cmpResult = apiCmpResult.getResult();
-//
-//                    if (cmpResult.getSecondObject() != null) {
-//                        List<CmpResultNode> children = cmpResult.getChildren();
-//                        for (CmpResultNode child : children) {
-//                            incompatibilitiesJson.put(findIncompatibilityCause(child, ""));
-//                        }
-//
-//                        if (firstOrigin.equals("") && secondOrigin.equals("")) {
-//                            firstOrigin = cmpResult.getFirstObject().getName();
-//                            secondOrigin = cmpResult.getSecondObject().getName();
-//                        }
-//
-//                    } else {
-//                        List<CmpResultNode> children = cmpResult.getChildren();
-//                        for (CmpResultNode child : children) {
-//                            missingClassesJson.put(findIncompatibilityCause(child, ""));
-//                        }
-//
-//                        if (firstOriginNF.equals("") && secondOriginNF.equals("")) {
-//                            firstOriginNF = cmpResult.getFirstObject().getName();
-//                            secondOriginNF = NOT_FOUND;
-//                        }
-//                    }
-//                }
-//
-//                // incompatible class
-//                JSONObject incompatibleClassJson = new JSONObject();
-//                incompatibleClassJson.put("causedBy", incompatibleClass.getName());
-//                incompatibleClassJson.put("incomps", incompatibilitiesJson);
-//
-//                incompatibleInfoJSON.put(incompatibleClassJson);
-//
-//                // not found class
-//                JSONObject notFoundClassJson = new JSONObject();
-//                notFoundClassJson.put("causedBy", incompatibleClass.getName());
-//                notFoundClassJson.put("incomps", missingClassesJson);
-//
-//                notFoundInfoJSON.put(notFoundClassJson);
-//            }
-//
-//            if (!firstOrigin.equals("")) {
-//                id++;
-//                EdgeImpl edge = new EdgeImpl(id, createSymbolicName(firstOrigin), createSymbolicName(secondOrigin), false, incompatibleInfoJSON.toString());
-//                this.graph.addEdge(edge);
-//            }
-//
-//            if (!firstOriginNF.equals("")) {
-//                id++;
-//                EdgeImpl edge = new EdgeImpl(id, createSymbolicName(secondOriginNF), createSymbolicName(firstOriginNF), false, notFoundInfoJSON.toString());
-//                this.graph.addEdge(edge);
-//            }
-//        }
-//
-//        logger.trace("EXIT");
-//    }
-//
-//    /**
-//     * Create symbolic name.
-//     *
-//     * @param origin
-//     * @return Symbolic name.
-//     */
-//    private String createSymbolicName(String origin) {
-//        String location = this.fileLocation.replace("/", File.separator) + File.separator;
-//
-//        return "vertex_" + origin.replace(location, "");
-//    }
-//
-//    /**
-//     * Generates the graph with vertices and edges.
-//     *
-//     * @return graph
-//     */
-//    public GraphInterface generate() {
-//        logger.trace("ENTRY");
-//
-//        this.generateVertices();
-//        this.generateEdges();
-//
-//        logger.trace("EXIT");
-//
-//        return this.graph;
-//    }
-//
-//    /**
-//     * Recursive function for traversing tree with incompatibility information. Creates object serializable to JSON.
-//     *
-//     * @param cmpResultNode
-//     * @param corrStrategy
-//     */
-//    public JSONObject findIncompatibilityCause(CmpResultNode cmpResultNode, String corrStrategy) {
-//        Object o = cmpResultNode.getResult().getFirstObject();
-//
-//        // cause description
-//        JSONObject descriptionJson = new JSONObject();
-//        descriptionJson.put("level", this.level);
-//
-//        if (o instanceof JMethod) {
-//            descriptionJson.put("name", "M " + getMethodDeclaration(o));
-//        } else if (o instanceof JField) {
-//            descriptionJson.put("name", "F " + getFieldDeclaration(o));
-//        } else if (o instanceof HasName) {
-//            descriptionJson.put("name", this.jaccMessages.getProperty(cmpResultNode.getContentCode()) + ": " + ((HasName) o).getName());
-//        } else {
-//            descriptionJson.put("name", this.jaccMessages.getProperty(cmpResultNode.getContentCode()));
-//        }
-//
-//        descriptionJson.put("contentCode", cmpResultNode.getContentCode());
-//        descriptionJson.put("propertyName", this.jaccMessages.getProperty(cmpResultNode.getContentCode()));
-//        descriptionJson.put("isIncompCause", cmpResultNode.isIncompatibilityCause());
-//
-//        if (o instanceof JPackage) {
-//            descriptionJson.put("type", "package");
-//            descriptionJson.put("details", getPackageDetails((JPackage) o));
-//        } else if (o instanceof JClass) {
-//            descriptionJson.put("type", "class");
-//            descriptionJson.put("details", getClassDetails((JClass) o));
-//        } else if (o instanceof JMethod) {
-//            descriptionJson.put("type", "method");
-//            descriptionJson.put("details", getMethodDetails((JMethod) o));
-//        } else if (o instanceof JField) {
-//            descriptionJson.put("type", "field");
-//            descriptionJson.put("details", getFieldDetails((JField) o));
-//        }
-//
-//        // incompatibility details
-//        if (cmpResultNode.isIncompatibilityCause()) {
-//            if (!cmpResultNode.getResult().getInherentDiff().name().equals("DEL")) {
-//                if (o instanceof HasName) {
-//                    descriptionJson.put("objectNameFirst", ((HasName) o).getName());
-//                    descriptionJson.put("objectNameSecond", ((HasName) cmpResultNode.getResult().getSecondObject()).getName());
-//                } else {
-//                    descriptionJson.put("objectNameFirst", o.toString());
-//                    descriptionJson.put("objectNameSecond", cmpResultNode.getResult().getSecondObject().toString());
-//                }
-//            }
-//
-//            String incompName = this.getIncompatibilityName(cmpResultNode, corrStrategy);
-//            if (incompName.equals("")) {
-//                descriptionJson.put("incompName", "Incompatible " + this.jaccMessages.getProperty(cmpResultNode.getContentCode()) + " -> " + corrStrategy); //child.getResult().getStrategy().name();
-//            } else {
-//                descriptionJson.put("incompName", incompName + (cmpResultNode.getResult().getInherentDiff().name().equals("DEL") ? " is missing -> " + cmpResultNode.getResult().getStrategy().name() : ""));
-//            }
-//
-//            descriptionJson.put("strategy", cmpResultNode.getResult().getStrategy().name());
-//            descriptionJson.put("difference", cmpResultNode.getResult().getInherentDiff().name());
-//        }
-//
-//        // subtree
-//        JSONArray subtreeJson = new JSONArray();
-//        if (!cmpResultNode.getResult().childrenCompatible()) {
-//            this.level++;
-//
-//            List<CmpResultNode> children = cmpResultNode.getResult().getChildren();
-//            for (CmpResultNode child : children) {
-//                CorrectionStrategy strategy = this.level == 1 ? cmpResultNode.getResult().getStrategy() : child.getResult().getStrategy();
-//
-//                subtreeJson.put(findIncompatibilityCause(child, strategy.name()));
-//            }
-//
-//            this.level--;
-//        }
-//
-//
-//        JSONObject causeJson = new JSONObject();
-//        causeJson.put("desc", descriptionJson);
-//        causeJson.put("subtree", subtreeJson);
-//
-//        return causeJson;
-//    }
-//
-//    private JSONObject getPackageDetails(JPackage pakkage) {
-//        JSONObject detailsJson = new JSONObject();
-//        detailsJson.put("name", pakkage.getName());
-//
-//        return detailsJson;
-//    }
-//
-//    private JSONObject getClassDetails(JClass clazz) {
-//        JSONObject detailsJson = new JSONObject();
-//
-//        detailsJson.put("name", clazz.getShortName());
-//        detailsJson.put("package", clazz.getPackage().getName());
-//
-//        detailsJson.put("enum", clazz.isEnum());
-//        detailsJson.put("interface", clazz.isInterface());
-//        detailsJson.put("annotation", clazz.isAnnotation());
-//
-//        detailsJson.put("abstract", clazz.getModifiers().isAbstract());
-//        detailsJson.put("final", clazz.getModifiers().isFinal());
-//        detailsJson.put("static", clazz.getModifiers().isStatic());
-//
-//        return detailsJson;
-//    }
-//
-//    private JSONObject getMethodDetails(JMethod method) {
-//        JSONObject detailsJson = new JSONObject();
-//
-//        detailsJson.put("name", method.getName());
-//        detailsJson.put("returnType", method.getReturnType().getName());
-//        detailsJson.put("constructor", method.isConstructor());
-//
-//        List<JType> exceptionTypes = method.getExceptionTypes();
-//        JSONArray exceptionTypeNames = new JSONArray();
-//        for (JType type : exceptionTypes) {
-//            exceptionTypeNames.put(type.getName());
-//        }
-//        detailsJson.put("exceptions", exceptionTypeNames);
-//
-//        List<JType> parameterTypes = method.getParameterTypes();
-//        JSONArray parameterTypeNames = new JSONArray();
-//        for (JType type : parameterTypes) {
-//            parameterTypeNames.put(type.getName());
-//        }
-//        detailsJson.put("paramTypes", parameterTypeNames);
-//
-//        detailsJson.put("abstract", method.getModifiers().isAbstract());
-//        detailsJson.put("final", method.getModifiers().isFinal());
-//        detailsJson.put("static", method.getModifiers().isStatic());
-//        detailsJson.put("synchronized", method.getModifiers().isSynchronized());
-//
-//        return detailsJson;
-//    }
-//
-//    private JSONObject getFieldDetails(JField field) {
-//        JSONObject detailsJson = new JSONObject();
-//
-//        detailsJson.put("name", field.getName());
-//        detailsJson.put("type", field.getType().getName());
-//        detailsJson.put("initialValue", field.getInitialValue());
-//
-//        detailsJson.put("abstract", field.getModifiers().isAbstract());
-//        detailsJson.put("final", field.getModifiers().isFinal());
-//        detailsJson.put("static", field.getModifiers().isStatic());
-//
-//        return detailsJson;
-//    }
-//
-//    private String getShortName(String longName) {
-//        return longName.substring(longName.lastIndexOf('.') + 1);
-//    }
-//
-//    private String getMethodDeclaration(Object o) {
-//        String methodName = "";
-//        methodName += getShortName(((JMethod) o).getReturnType().getName());
-//        methodName += " " + ((JMethod) o).getName();
-//        methodName += "(";
-//        for (JType type : ((JMethod) o).getParameterTypes()) {
-//            methodName += getShortName(type.getName()) + ", ";
-//        }
-//        methodName = methodName.replaceAll(", $", "");
-//        methodName += ")";
-//        return methodName;
-//    }
-//
-//    private String getFieldDeclaration(Object o) {
-//        String fieldDeclaration = "";
-//        fieldDeclaration += getShortName(((JField) o).getType().getName());
-//        fieldDeclaration += " " + ((JField) o).getName();
-//        return fieldDeclaration;
-//    }
-//
-//    private String getIncompatibilityName(CmpResultNode child, String corrStrategy) {
-//        Object o = child.getResult().getFirstObject();
-//
-//        String incompName;
-//        switch (child.getContentCode()) {
-//            case "cmp.child.class":
-//                if (o instanceof HasName) {
-//                    incompName = "Class " + ((HasName) o).getName();
-//                } else {
-//                    incompName = "Class " + o.toString();
-//                }
-//                break;
-//            case "cmp.child.method.return.type":
-//                incompName = this.jaccMessages.getProperty(child.getContentCode()) + " different -> " + corrStrategy;
-//                break;
-//            case "cmp.child.method.param.type":
-//                if (o instanceof HasName) {
-//                    incompName = "Parameter " + getShortName(((HasName) o).getName()) + " different -> " + corrStrategy;
-//                } else {
-//                    incompName = "Parameter " + getShortName(o.toString()) + " different -> " + corrStrategy;
-//                }
-//                break;
-//            case "cmp.child.method.invocation":
-//                incompName = "Invoke Virtual" + " -> " + child.getResult().getStrategy().name();
-//                break;
-//            case "cmp.child.method":
-//                incompName = "<span class='entity'>M</span> " + getMethodDeclaration(o);
-//                break;
-//            case "cmp.child.constructor":
-//                incompName = "<span class='entity'>C</span> " + getMethodDeclaration(o);
-//                break;
-//            case "cmp.child.field":
-//                incompName = "<span class='entity'>F</span> " + getFieldDeclaration(o);
-//                break;
-//            case "cmp.child.modifier":
-//                incompName = "<span class='entity'>P</span> " + o.toString() + " -> " + corrStrategy;
-//                break;
-//            default:
-//                incompName = "";
-//                break;
-//        }
-//        return incompName;
-//    }
-//
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpComparison.java b/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpComparison.java
deleted file mode 100644
index ac0b58c..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpComparison.java
+++ /dev/null
@@ -1,88 +0,0 @@
-//package cz.zcu.kiv.offscreen.graph.efp;
-//
-//import org.apache.log4j.Logger;
-//
-///**
-// *
-// * Holds data of EFP comparison relation.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class EfpComparison {
-//
-//	/**
-//	 * Status of the EFP cmp. OK, MISSING, etc.
-//	 */
-//	private String comparisonStatus;
-//
-//	/**
-//	 * Name of the EFP cmp.
-//	 */
-//	private String efpName;
-//
-//	/**
-//	 * Values of the left and right side of cmp. relation.
-//	 */
-//	private String leftEfpValue, rightEfpValue;
-//
-//	/**
-//	 * Name of the type used for the EFP cmp. relation.
-//	 */
-//	private String typeName;
-//
-//	/**
-//	 * Logging.
-//	 */
-//	private Logger logger = Logger.getLogger(EfpComparison.class);
-//
-//	/**
-//	 * Construct new relation.
-//	 */
-//	public EfpComparison() {
-//		logger.trace("ENTRY");
-//
-//		logger.trace("EXIT");
-//	}
-//
-//	public String getComparisonStatus() {
-//		return comparisonStatus;
-//	}
-//
-//	public void setComparisonStatus(String comparisonStatus) {
-//		this.comparisonStatus = comparisonStatus;
-//	}
-//
-//	public String getTypeName() {
-//		return typeName;
-//	}
-//
-//	public void setTypeName(String typeName) {
-//		this.typeName = typeName;
-//	}
-//
-//	public String getLeftEfpValue() {
-//		return leftEfpValue;
-//	}
-//
-//	public void setLeftEfpValue(String leftEfpValue) {
-//		this.leftEfpValue = leftEfpValue;
-//	}
-//
-//	public String getRightEfpValue() {
-//		return rightEfpValue;
-//	}
-//
-//	public void setRightEfpValue(String rightEfpValue) {
-//		this.rightEfpValue = rightEfpValue;
-//	}
-//
-//	public String getEfpName() {
-//		return efpName;
-//	}
-//
-//	public void setEfpName(String efpName) {
-//		this.efpName = efpName;
-//	}
-//
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpFeature.java b/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpFeature.java
deleted file mode 100644
index 0af9b5b..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpFeature.java
+++ /dev/null
@@ -1,72 +0,0 @@
-//package cz.zcu.kiv.offscreen.graph.efp;
-//
-//import java.util.ArrayList;
-//
-//import org.apache.log4j.Logger;
-//
-///**
-// *
-// * Holds data of a feature used in EFP relation.
-// *
-// * @author Jiri Loudil
-// *
-// */
-//public class EfpFeature {
-//
-//	/**
-//	 * Name of the feature.
-//	 */
-//	private String name = "";
-//
-//	/**
-//	 * List of EFPs connected to this particular feature.
-//	 */
-//	private ArrayList<EfpComparison> efps;
-//
-//	/**
-//	 * Status of the feture. OK, MISSING, etc.
-//	 */
-//	private String featureStatus = "";
-//
-//	/**
-//	 * Logging.
-//	 */
-//	private Logger logger = Logger.getLogger(EfpFeature.class);
-//
-//	/**
-//	 *
-//	 * Construct new named feature.
-//	 *
-//	 * @param name New feature name.
-//	 */
-//	public EfpFeature(String name) {
-//		logger.trace("ENTRY");
-//		this.name = name;
-//
-//		this.efps = new ArrayList<EfpComparison>();
-//		this.featureStatus = "";
-//
-//		logger.trace("EXIT");
-//	}
-//
-//	public ArrayList<EfpComparison> getEfps() {
-//		return efps;
-//	}
-//
-//	public String getFeatureStatus() {
-//		return featureStatus;
-//	}
-//
-//	public void setFeatureStatus(String featureStatus) {
-//		this.featureStatus = featureStatus;
-//	}
-//
-//	public String getName() {
-//		return name;
-//	}
-//
-//	public void setName(String name) {
-//		this.name = name;
-//	}
-//
-//}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpGraphicSettings.java b/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpGraphicSettings.java
deleted file mode 100644
index 4781896..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/graph/efp/EfpGraphicSettings.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package cz.zcu.kiv.offscreen.graph.efp;
-
-/**
- * 
- * @author Jiri Loudil
- *
- */
-public class EfpGraphicSettings {
-	private int minInterfaceDiameter, maxInterfaceDiameter;
-
-	public EfpGraphicSettings() {
-		
-	}
-
-	public int getMinInterfaceDiameter() {
-		return minInterfaceDiameter;
-	}
-
-	public void setMinInterfaceDiameter(int minInterfaceDiameter) {
-		this.minInterfaceDiameter = minInterfaceDiameter;
-	}
-
-	public int getMaxInterfaceDiameter() {
-		return maxInterfaceDiameter;
-	}
-
-	public void setMaxInterfaceDiameter(int maxInterfaceDiameter) {
-		this.maxInterfaceDiameter = maxInterfaceDiameter;
-	}
-
-}
diff --git a/sources/src/main/java/cz/zcu/kiv/offscreen/servlets/EfpImport.java b/sources/src/main/java/cz/zcu/kiv/offscreen/servlets/EfpImport.java
deleted file mode 100644
index 91f298f..0000000
--- a/sources/src/main/java/cz/zcu/kiv/offscreen/servlets/EfpImport.java
+++ /dev/null
@@ -1,48 +0,0 @@
-//package cz.zcu.kiv.offscreen.servlets;
-//
-//import java.io.IOException;
-//import javax.servlet.RequestDispatcher;
-//import javax.servlet.ServletException;
-//import javax.servlet.http.HttpServlet;
-//import javax.servlet.http.HttpServletRequest;
-//import javax.servlet.http.HttpServletResponse;
-//
-//import org.apache.log4j.Logger;
-//
-//import cz.zcu.kiv.offscreen.efp.utils.JsonTransformer;
-//
-///**
-// * Servlet used for serving JSON data incoming from efpPortal app.
-// *
-// * @author Jiri Loudil
-// */
-//public class EfpImport extends HttpServlet {
-//	private static final long serialVersionUID = 1L;
-//
-//	private Logger logger = Logger.getLogger(LoadGraphData.class);
-//
-//	@Override
-//	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-//		String data = request.getParameter("data");
-//
-//		// invalid data set
-//		if (data == null || data.isEmpty()) {
-//			logger.error("Data in message are null.");
-//			return;
-//		}
-//
-//		JsonTransformer transformer = new JsonTransformer();
-//
-//		request.setAttribute("graph_json",true);
-//
-//		// set the referrer for 'Back' graph button functionality
-//		request.setAttribute("efpPortalRefererUrl", request.getHeader("referer"));
-//
-//		request.getSession().setAttribute("graph_json_data", transformer.transformInputJSONToGraphJSON(data, request));
-//
-//		// render
-//		RequestDispatcher rd = getServletContext().getRequestDispatcher("/showGraph.jsp");
-//		rd.forward(request, response);
-//	}
-//
-//}
diff --git a/sources/src/main/webapp/WEB-INF/web.xml b/sources/src/main/webapp/WEB-INF/web.xml
index 2fdd916..c416ad7 100644
--- a/sources/src/main/webapp/WEB-INF/web.xml
+++ b/sources/src/main/webapp/WEB-INF/web.xml
@@ -92,10 +92,6 @@
 		<servlet-name>LoadGraphData</servlet-name>
 		<servlet-class>cz.zcu.kiv.offscreen.servlets.LoadGraphData</servlet-class>
 	</servlet>
-	<servlet>
-		<servlet-name>EfpImport</servlet-name>
-		<servlet-class>cz.zcu.kiv.offscreen.servlets.EfpImport</servlet-class>
-	</servlet>
 
 	<!--
 	URL-to-servlet mappings
@@ -148,10 +144,6 @@
 		<servlet-name>LoadGraphData</servlet-name>
 		<url-pattern>/api/graph-data</url-pattern>
 	</servlet-mapping>
-	<servlet-mapping>
-		<servlet-name>EfpImport</servlet-name>
-		<url-pattern>/efp-import</url-pattern>
-	</servlet-mapping>
 
 	<session-config>
 		<session-timeout>120</session-timeout>
