Index: branches/OKBJavaConnector/HLOKBWebClient/src/main/java/at/hl/okb/IECJConnector.java
===================================================================
--- branches/OKBJavaConnector/HLOKBWebClient/src/main/java/at/hl/okb/IECJConnector.java	(revision 5248)
+++ branches/OKBJavaConnector/HLOKBWebClient/src/main/java/at/hl/okb/IECJConnector.java	(revision 5249)
@@ -36,5 +36,5 @@
 	 * @throws Exception
 	 */
-	public void initialize(String algorithm, String platform, String problem) throws Exception; //, Map<String, Object> algoParams, Map<String,Object> problemParams, Object paramFile) throws Exception;
+	public ECJConnectorState initialize(String algorithm, String platform, String problem) throws Exception; //, Map<String, Object> algoParams, Map<String,Object> problemParams, Object paramFile) throws Exception;
 
 	/**
@@ -43,5 +43,5 @@
 	 * @throws Exception
 	 */
-	public void result(List<Object> resultList, Map<String, Object> algoParams, Map<String, Object> problemParams,
+	public void result(ECJConnectorState state, List<Object> resultList, Map<String, Object> algoParams, Map<String, Object> problemParams,
 			Object paramFile) throws Exception;
 }
Index: branches/OKBJavaConnector/HLOKBWebClient/src/main/java/at/hl/okb/wsclient/OKBServiceClient.java
===================================================================
--- branches/OKBJavaConnector/HLOKBWebClient/src/main/java/at/hl/okb/wsclient/OKBServiceClient.java	(revision 5248)
+++ branches/OKBJavaConnector/HLOKBWebClient/src/main/java/at/hl/okb/wsclient/OKBServiceClient.java	(revision 5249)
@@ -3,12 +3,12 @@
 import static at.hl.okb.wsclient.Utilities.createNameFilter;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
-import at.hl.okb.ECJDataTypeEnum;
 import at.hl.wsclient.okb.Algorithm;
 import at.hl.wsclient.okb.AlgorithmClass;
-import at.hl.wsclient.okb.AlgorithmData;
 import at.hl.wsclient.okb.AlgorithmParameter;
 import at.hl.wsclient.okb.ArrayOfAlgorithmParameter;
@@ -38,14 +38,13 @@
 				createNameFilter(platformName), null);
 
-		return returnValue.getId();
+		return returnValue != null ? returnValue.getId() : null;
 	}
-	
+
 	public Long getProblemId(String problemName) {
-		Problem returnValue = Iterables.find(
-				port.getProblems().getProblem(),
+		Problem returnValue = Iterables.find(port.getProblems().getProblem(),
 				createNameFilter(problemName), null);
 
-		return returnValue.getId();
-	}	
+		return returnValue != null ? returnValue.getId() : null;
+	}
 
 	public Long getProblemClassId(String problemClass) {
@@ -53,5 +52,5 @@
 				.getProblemClass(), createNameFilter(problemClass), null);
 
-		return returnValue.getId();
+		return returnValue != null ? returnValue.getId() : null;
 
 	}
@@ -62,5 +61,5 @@
 				null);
 
-		return returnValue.getId();
+		return returnValue != null ? returnValue.getId() : null;
 
 	}
@@ -80,11 +79,11 @@
 			}
 		}
-		return problem.getId();
+		return problem != null ? problem.getId() : null;
 	}
 
-	public Long getAlgorithmId(String algorithmName, /*Long algorithmClassId,*/
-			Long platformId) {
+	public Long getAlgorithmId(String algorithmName, /* Long algorithmClassId, */
+	Long platformId) {
 		Algorithm algorithm = null;
-		
+
 		Iterator<Algorithm> it = port.getAlgorithms().getAlgorithm().iterator();
 
@@ -93,31 +92,36 @@
 			if (platformId.equals(tmpAlgo.getPlatformId())
 					&& algorithmName.equals(tmpAlgo.getName().getValue())
-					//&& algorithmClassId.equals(tmpAlgo.getAlgorithmClassId())
-					) {
+			// && algorithmClassId.equals(tmpAlgo.getAlgorithmClassId())
+			) {
 				algorithm = tmpAlgo;
 			}
 		}
-		
-		return algorithm != null ?algorithm.getId() : null;
-			
+
+		return algorithm != null ? algorithm.getId() : null;
+
 	}
-	
-//	public Map<String, ECJDataTypeEnum> getAlgorithParameter(Long  algorithmId) {
-//		Map<String, AlgorithmParameter> returnMap = new HashMap<String, AlgorithmParameter>();
-//		
-//		AlgorithmData algoData = port.getAlgorithmData(algorithmId);
-//	
-//		ArrayOfAlgorithmParameter algoParamList = port.getAlgorithmParameters(algorithmId);
-//		
-//		for (AlgorithmParameter algoParam:algoParamList.getAlgorithmParameter()) {
-//			mapOKBDataTypetoECJDataTypeEnum()
-//			port.getDataType(algoParam.getDataTypeId()).getName().getValue()) {
-//			
-//			}
-//			returnMap.put(algoParam.getName().getValue(), port.getDataType(algoParam.getDataTypeId()).getName().getValue());
-//		}
-//		
-//		return returnMap;
-//	}
+
+	// public Map<String, ECJDataTypeEnum> getAlgorithParameter(Long
+	// algorithmId) {
+	// Map<String, AlgorithmParameter> returnMap = new HashMap<String,
+	// AlgorithmParameter>();
+	//
+	// AlgorithmData algoData = port.getAlgorithmData(algorithmId);
+	//
+	// ArrayOfAlgorithmParameter algoParamList =
+	// port.getAlgorithmParameters(algorithmId);
+	//
+	// for (AlgorithmParameter algoParam:algoParamList.getAlgorithmParameter())
+	// {
+	// mapOKBDataTypetoECJDataTypeEnum()
+	// port.getDataType(algoParam.getDataTypeId()).getName().getValue()) {
+	//
+	// }
+	// returnMap.put(algoParam.getName().getValue(),
+	// port.getDataType(algoParam.getDataTypeId()).getName().getValue());
+	// }
+	//
+	// return returnMap;
+	// }
 
 	private <T extends NamedOKBItem> T createNamedOKBItem(Class<T> clazz,
@@ -133,4 +137,37 @@
 		}
 	}
+	
+	public Boolean areAlgoParamsEqual() {
+		Boolean retval = false;
+		
+		
+		return retval;
+	}
 
+	public void createMissingAlgoParams(Long algorithmId,
+			Map<String, Object> ecjAlgoParams) {
+
+		List<String> missingParams = new ArrayList<String>();
+
+		ArrayOfAlgorithmParameter hlAlgoParams = port
+				.getAlgorithmParameters(algorithmId);
+		Map<String, Object> hlAlgoParamMap = new HashMap<String, Object>();
+
+		for (AlgorithmParameter algoParam : hlAlgoParams
+				.getAlgorithmParameter()) {
+			hlAlgoParamMap.put(algoParam.getName().getValue(), null); // value
+			// hangs
+			// on
+			// Experiments
+		}
+
+		String[] ecjparamNames = (String[]) ecjAlgoParams.keySet().toArray();
+
+		for (int i = 0; i < ecjparamNames.length; i++) {
+			if (!hlAlgoParamMap.containsKey(ecjparamNames[i])) {
+				missingParams.add(new String(ecjparamNames[i]));
+			}
+		}
+
+	}
 }
