2006/unicorn/src/org/w3c/unicorn UnicornCall.java,1.14,1.15

Update of /sources/public/2006/unicorn/src/org/w3c/unicorn
In directory hutz:/tmp/cvs-serv18075/src/org/w3c/unicorn

Modified Files:
	UnicornCall.java 
Log Message:
make use of the new InputParameter classes

Index: UnicornCall.java
===================================================================
RCS file: /sources/public/2006/unicorn/src/org/w3c/unicorn/UnicornCall.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- UnicornCall.java	16 Sep 2009 13:48:38 -0000	1.14
+++ UnicornCall.java	17 Sep 2009 15:42:41 -0000	1.15
@@ -5,7 +5,6 @@
 package org.w3c.unicorn;
 
 import java.io.IOException;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -19,7 +18,6 @@
 import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathFactory;
 
-import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.w3c.dom.Document;
@@ -27,11 +25,8 @@
 import org.w3c.unicorn.contract.EnumInputMethod;
 import org.w3c.unicorn.contract.InputMethod;
 import org.w3c.unicorn.contract.Observer;
-import org.w3c.unicorn.exceptions.EmptyDocumentException;
-import org.w3c.unicorn.exceptions.NoDocumentException;
-import org.w3c.unicorn.exceptions.NoMimeTypeException;
-import org.w3c.unicorn.exceptions.UnsupportedMimeTypeException;
-import org.w3c.unicorn.input.InputFactory;
+import org.w3c.unicorn.exceptions.UnicornException;
+import org.w3c.unicorn.input.InputParameter;
 import org.w3c.unicorn.request.Request;
 import org.w3c.unicorn.request.RequestList;
 import org.w3c.unicorn.response.Response;
@@ -45,6 +40,7 @@
 import org.w3c.unicorn.tasklisttree.TLTExec;
 import org.w3c.unicorn.tasklisttree.TLTIf;
 import org.w3c.unicorn.tasklisttree.TLTNode;
+import org.w3c.unicorn.util.Message;
 import org.w3c.unicorn.util.Property;
 
 import com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl;
@@ -60,44 +56,32 @@
 	 * Log Object to perform powerful logs
 	 */
 	private static final Log logger = LogFactory.getLog(UnicornCall.class);
-
-	// Request
+	
 	/**
 	 * The task to call
 	 */
-	private Task aTask = null;
-
-	/**
-	 * Check Method : Upload, URI , Direct...
-	 */
-	private EnumInputMethod aEnumInputMethod = null;
-
-	private Object oInputParameterValue = null;
-
-	private String sDocumentName = null;
-
-	private String sLang = null;
-
-	private RequestList aRequestList = null;
+	private Task aTask;
 
-	private Map<String, String[]> mapOfStringParameter = null;
+	private String sLang;
 	
-	private LinkedHashMap<String, Response> observationMap;
+	private InputParameter inputParameter;
 
+	private Map<String, String[]> mapOfStringParameter;
+	
 	/**
 	 * Data Structure for the response
 	 */
 	private Map<String, Response> mapOfResponse;
+	
+	private LinkedHashMap<String, Response> observationMap;
 
 	/**
 	 * Creates a new UnicornCall.
 	 */
 	public UnicornCall() {
 		UnicornCall.logger.trace("Constructor()");
-
-		this.mapOfStringParameter = new LinkedHashMap<String, String[]>();
-
-		this.mapOfResponse = new LinkedHashMap<String, Response>();
+		mapOfStringParameter = new LinkedHashMap<String, String[]>();
+		mapOfResponse = new LinkedHashMap<String, Response>();
 	}
 
 	/**
@@ -105,76 +89,50 @@
 	 * 
 	 * @throws Exception
 	 */
-	public void doTask() throws Exception {
+	public void doTask() throws UnicornException, Exception {
 		UnicornCall.logger.trace("doTask.");
 		UnicornCall.logger.debug("String task id : " + aTask.getID() + ".");
-		UnicornCall.logger.debug("EnumInputMethod : " + aEnumInputMethod + ".");
-		UnicornCall.logger.debug("Document name : " + sDocumentName + ".");
+		UnicornCall.logger.debug("EnumInputMethod : " + inputParameter.getInputMethod() + ".");
+		UnicornCall.logger.debug("Document name : " + inputParameter.getDocumentName() + ".");
 		UnicornCall.logger.debug("Map of string parameter : " + mapOfStringParameter + ".");
-
-		// find mimetype of the document
-		MimeType aMimeType = this.getMimeType();
-
+		
+		inputParameter.check();
+		
+		MimeType aMimeType = inputParameter.getMimeType();
 		if (!aTask.getSupportedMimeTypes().contains(aMimeType.toString())) {
-			throw new UnsupportedMimeTypeException("Mime-type: " + aMimeType + " is not supported by this task.");
+			//throw new UnsupportedMimeTypeException("Mime-type: " + aMimeType + " is not supported by this task.");
+			Message mess = new Message(Message.Level.ERROR, "$message_unsupported_mime_type", null);
+			throw new UnicornException(mess);
 		}
 		
-		// Create input method
-		final InputFactory aInputFactory = new InputFactory(aMimeType,
-				this.aEnumInputMethod, this.oInputParameterValue);
-
-		this.doNode(aInputFactory, this.aTask.getTree());
-
-		aInputFactory.dispose();
+		doNode(inputParameter, aTask.getTree());
 	}
 
 	/**
 	 * Main function called to do the recursion over the Task tree to launch the
 	 * requests
 	 * 
-	 * @param aInputFactory
-	 *            InputFactory used for the resquests
+	 * @param inputParameter
+	 *            InputParameter used for the requests
 	 * @param node
 	 *            the current node that we're parsing in the Task tree
 	 * @throws Exception
 	 *             raised from generateRequestList and doRequest
 	 */
-	private void doNode(InputFactory aInputFactory, TLTNode node)
-			throws Exception {
-		// Generate the list of request
-		UnicornCall.logger.trace("doNode.");
-		if (UnicornCall.logger.isDebugEnabled()) {
-			UnicornCall.logger.debug("InputFactory : " + aInputFactory + ".");
-			UnicornCall.logger.debug("Current node : " + node + ".");
-		}
+	private void doNode(InputParameter inputParameter, TLTNode node) throws Exception {
 		if (node != null) {
-			this.aRequestList = this.generateRequestList(aInputFactory,
-					this.mapOfStringParameter, node);
-
-			if (UnicornCall.logger.isDebugEnabled()) {
-				UnicornCall.logger.debug("RequestList : " + this.aRequestList
-						+ ".");
-			}
-
+			RequestList aRequestList = generateRequestList(inputParameter, mapOfStringParameter, node);
 			// send requests to observer
-			this.doRequests();
-
-			UnicornCall.logger.info("Check the condition of the Ifs");
+			doRequests(aRequestList);
 			// browse the conditions to do the connection
-			for (TLTIf ifs : node.getIfList()) {
-				if (this.checkCond(ifs)) {
-					this.doNode(aInputFactory, ifs.getIfOk());
+			for (TLTIf iF : node.getIfList()) {
+				if (checkCond(iF)) {
+					doNode(inputParameter, iF.getIfOk());
 				} else {
-					this.doNode(aInputFactory, ifs.getIfNotOk());
+					doNode(inputParameter, iF.getIfNotOk());
 				}
 			}
-		} else {
-			// Inform if the node is null
-			if (UnicornCall.logger.isDebugEnabled()) {
-				UnicornCall.logger.debug("The node is null at this point.");
-			}
 		}
-
 	}
 
 	/**
@@ -188,84 +146,84 @@
 	 */
 	private boolean checkCond(TLTIf ifs) throws Exception {
 		UnicornCall.logger.trace("checkCond.");
-		if (UnicornCall.logger.isDebugEnabled()) {
-			UnicornCall.logger.debug("If node : " + ifs + ".");
-		}
+		UnicornCall.logger.debug("If node : " + ifs + ".");
+		
 		boolean conditionOK = false;
-		// boolean to manage the OR in the conditions, if the cond is false we
-		// change the boolean to true , if not we don't care
-		// that will simulate the OR
 		for (TLTCond cond : ifs.getCondArray()) {
-			if (this.checkCond(cond)) {
+			if (checkCond(cond)) {
 				conditionOK = true;
 			}
-
 		}
 		return conditionOK;
-
-	}
-
-	/**
-	 * Creates the map of all the Observer to call in the current node
-	 * 
-	 * @param node
-	 *            the current node of the Task tree we are parsing
-	 */
-	private Map<String, Observer> createExecList(TLTNode node) {
-		Map<String, Observer> mapOfCurrentNodeObserver = new LinkedHashMap<String, Observer>();
-		for (TLTExec exec : node.getExecutionList()) {
-			mapOfCurrentNodeObserver.put(exec.getValue(), exec.getObserver());
-		}
-		return mapOfCurrentNodeObserver;
-	}
-
-	public boolean isPassed() {
-		boolean passed = true;
-		for (String key : this.getObservationList().keySet()) {
-			if (!observationMap.get(key).isPassed()) {
-				passed = false;
-			}
-		}
-		return passed;
 	}
 	
 	/**
-	 * Execute the request depending on the priority
+	 * Giving a TLTCond, checks in the map of response if the condition passes
+	 * or fails and consequently returns a boolean.
 	 * 
-	 * @param aTPriority
-	 *            priority of the request
-	 * @throws IOException
-	 *             Input/Output error
+	 * @param cond
+	 *            The condition to check
+	 * @return true if there is a matching response and if the condition passes
+	 *         else false
 	 */
-	private void doRequests() throws IOException {
-		UnicornCall.logger.trace("doRequests");
+	private boolean checkCond(TLTCond cond) throws Exception {
+		UnicornCall.logger.trace("checkCond : ");
+		UnicornCall.logger.trace(cond);
+		UnicornCall.logger.trace("condId : " + cond.getId());
+		UnicornCall.logger.trace("condType : " + cond.getType());
+		UnicornCall.logger.trace("condValue : " + cond.getValue());
 
-		final Map<String, Request> requests = this.aRequestList.getRequestMap();
-		// Creation of the thread list
-		ArrayList<Thread> threadsList = new ArrayList<Thread>();
+		boolean passed = false;
 
-		for (final String obsID : requests.keySet()) {
-			// send request to observer
-			threadsList.add(new RequestThread(mapOfResponse, requests
-					.get(obsID), obsID, this));
-			UnicornCall.logger.debug("Request " + requests.get(obsID) + " added to threadsList");
-		}
-		for (int i = 0; i < threadsList.size(); i++) {
-			threadsList.get(i).start();
-			UnicornCall.logger.debug("Request " + ((RequestThread)threadsList.get(i)).getObsID() + " started");
-		}
+		if (cond.getType().equals(EnumCondType.MIMETYPE)) {
+			passed = cond.getValue().equals(inputParameter.getMimeType().toString());
+		} else if (cond.getType().equals(EnumCondType.XPATH)) {
+			UnicornCall.logger.trace("condObserver : " + cond.getObserver().getID());
+			Response res = mapOfResponse.get(cond.getObserver().getID());
+			// Testing if there is a matching response in the map
+			// and if it is passed
+			if (res != null) {
+				String xmlStr = res.getXml().toString();
 
-		for (int i = 0; i < threadsList.size(); i++) {
-			try {
-				threadsList.get(i).join();
-				UnicornCall.logger.debug("Request " + ((RequestThread)threadsList.get(i)).getObsID() + " terminated");
-			} catch (InterruptedException e) {
-				e.printStackTrace();
+				DocumentBuilderFactory xmlFact = DocumentBuilderFactory
+						.newInstance();
+
+				// namespace awareness is escaped since we don't use it
+				// for the moment
+				xmlFact.setNamespaceAware(false);
+
+				DocumentBuilder builder = xmlFact.newDocumentBuilder();
+
+				Document doc = builder.parse(new java.io.ByteArrayInputStream(
+						xmlStr.getBytes("UTF-8")));
+
+				String xpathStr = cond.getValue();
+
+				XPathFactory xpathFact = new XPathFactoryImpl();
+
+				XPath xpath = xpathFact.newXPath();
+				XPathExpression xpe = xpath.compile(xpathStr);
+				passed = (Boolean) xpe.evaluate(doc, XPathConstants.BOOLEAN);
 			}
+		} else if (cond.getType().equals(EnumCondType.PARAMETER)) {
+			passed = false;
+			if (!mapOfStringParameter.containsKey(cond.getParameter())) {
+				cond.setResult(passed);
+				return passed;
+			}
+			
+			String[] parameterValues = mapOfStringParameter.get(cond.getParameter());
+			for (int i=0; i<parameterValues.length; i++)
+				if (parameterValues[i].equals(cond.getValue()))
+					passed = true;
+			
 		}
 
+		cond.setResult(passed);
+		UnicornCall.logger.trace("cond result : " + passed);
+		return passed;
 	}
-
+	
 	/**
 	 * Generate the list of the request for the call
 	 * 
@@ -279,30 +237,17 @@
 	 * @throws Exception
 	 *             error occured during the process
 	 */
-	private RequestList generateRequestList(final InputFactory aInputFactory,
-			final Map<String, String[]> mapOfArrayUseParameter, TLTNode node)
-			throws Exception {
-
-		// Log information
-		UnicornCall.logger.trace("generateRequestList");
-		if (UnicornCall.logger.isDebugEnabled()) {
-			UnicornCall.logger.debug("InputFactory : " + aInputFactory + ".");
-			UnicornCall.logger.debug("Map of string parameter : "
-					+ mapOfArrayUseParameter + ".");
-		}
-
-		final MimeType aMimeType = aInputFactory.getMimeType();
-		final EnumInputMethod aEnumInputMethod = aInputFactory
-				.getDefaultInputModule().getEnumInputMethod();
+	private RequestList generateRequestList(InputParameter inputParameter,
+			Map<String, String[]> mapOfArrayUseParameter, TLTNode node) throws Exception {
 
-		final RequestList aRequestList = new RequestList(this.sLang);
+		MimeType aMimeType = inputParameter.getMimeType();
+		EnumInputMethod aEnumInputMethod = inputParameter.getInputMethod();
+		
+		RequestList aRequestList = new RequestList(sLang);
 		// Iterate over all observation of this task to build a basic
-		// request list with only the url of observator and input parameter
-		// Il faut creer une list avec tous les exec et toutes les rencardeur de
-		// ifs
-		// Une liste d'Observer
-		for (final Observer aObserver : this.createExecList(node).values()) {
-			final String sObserverID = aObserver.getID();
+		// request list with only the url of observer and input parameter
+		for (Observer aObserver : createExecList(node).values()) {
+			String sObserverID = aObserver.getID();
 			// add only observer who handle the current mimetype
 			if (!aObserver.canHandleMimeType(aMimeType)) {
 				if (UnicornCall.logger.isDebugEnabled()) {
@@ -319,7 +264,8 @@
 			// create a new request with input parameter
 			final Request aRequest = Request.createRequest(
 			// the corresponding best input module
-					aInputFactory.getInputModule(aInputMethod.getMethod()),
+					//aInputFactory.getInputModule(aInputMethod.getMethod()),
+					inputParameter.getInputModule(),
 					// URL of the service to call
 					aInputMethod.getCallMethod().getURL().toString(),
 					// Name of the parameter holding resource information
@@ -331,14 +277,8 @@
 					aObserver.getResponseType());
 
 			// add this request to request list
-			aRequestList.addRequest(aRequest, aObserver.getID());
+			//aRequestList.addRequest(aRequest, aObserver.getID());
 
-			// log debug information
-			if (UnicornCall.logger.isDebugEnabled()) {
-				UnicornCall.logger.debug("Redirect request " + aRequest
-						+ " from " + aEnumInputMethod + " to "
-						+ aInputMethod.getMethod() + " added to request list.");
-			}
 
 			// Get value of ucn_lang parameter to associate it with parameter
 			// lang of the observer (if it has one).
@@ -360,12 +300,6 @@
 			// Add this request to request list
 			aRequestList.addRequest(aRequest, aObserver.getID());
 
-			// Log debug information
-			if (UnicornCall.logger.isDebugEnabled()) {
-				UnicornCall.logger.debug("Request " + aRequest
-						+ " added to request list.");
-			}
-
 			// Add fixed parameter
 			for (final CallParameter aCallParameter : aObserver.getCallMethod(
 					aInputMethod.getMethod()).getMapOfCallParameter().values()) {
@@ -383,18 +317,12 @@
 				.keySet()) {
 			final Parameter aTaskParameter = this.aTask.getMapOfParameter()
 					.get(sTaskParameterName);
-			if (UnicornCall.logger.isDebugEnabled()) {
-				UnicornCall.logger.debug("Parameter : " + sTaskParameterName
-						+ ".");
-			}
+
 			// check if this parameter have a given value
 			String[] tStringUseParameterValue = mapOfArrayUseParameter
 					.get(sTaskParameterName);
 			if (null == tStringUseParameterValue) {
-				if (UnicornCall.logger.isDebugEnabled()) {
-					UnicornCall.logger.debug("No value input for parameter "
-							+ sTaskParameterName + ".");
-				}
+
 				// check if this parameter have a default value
 				final Map<String, Value> mapOfDefaultValue = aTaskParameter
 						.getMapOfDefaultValue();
@@ -410,12 +338,7 @@
 					tStringUseParameterValue[i++] = s;
 				}
 			}
-			if (UnicornCall.logger.isDebugEnabled()) {
-				for (final String sParameterValue : tStringUseParameterValue) {
-					UnicornCall.logger.debug("Parameter Value : "
-							+ sParameterValue + ".");
-				}
-			}
+
 			final Map<String, Value> mapOfValue = aTaskParameter
 					.getMapOfValue();
 			// if there no value the parameter allow all string
@@ -487,76 +410,98 @@
 
 		return aRequestList;
 	}
-
+	
 	/**
-	 * Returns the responses of low priority observations.
+	 * Creates the map of all the Observer to call in the current node
 	 * 
-	 * @return responses of low priority observations.
+	 * @param node
+	 *            the current node of the Task tree we are parsing
 	 */
-	public Map<String, Response> getResponses() {
-		return this.mapOfResponse;
+	private Map<String, Observer> createExecList(TLTNode node) {
+		Map<String, Observer> mapOfCurrentNodeObserver = new LinkedHashMap<String, Observer>();
+		for (TLTExec exec : node.getExecutionList()) {
+			mapOfCurrentNodeObserver.put(exec.getValue(), exec.getObserver());
+		}
+		return mapOfCurrentNodeObserver;
 	}
-
+	
 	/**
-	 * Set the task to perform
+	 * Execute the request depending on the priority
 	 * 
-	 * @param sTaskID
-	 *            ID of the task to perform
+	 * @param aTPriority
+	 *            priority of the request
+	 * @throws IOException
+	 *             Input/Output error
 	 */
-	public void setTask(final String sTaskID) {
-		if (null == sTaskID) {
-			UnicornCall.logger.error("Call setTask with null argument.");
-			return;
+	private void doRequests(RequestList requestList) throws IOException {
+		UnicornCall.logger.trace("doRequests");
+
+		final Map<String, Request> requests = requestList.getRequestMap();
+		// Creation of the thread list
+		ArrayList<Thread> threadsList = new ArrayList<Thread>();
+
+		for (final String obsID : requests.keySet()) {
+			// send request to observer
+			threadsList.add(new RequestThread(mapOfResponse, requests
+					.get(obsID), obsID, this));
+			UnicornCall.logger.debug("Request " + requests.get(obsID) + " added to threadsList");
+		}
+		for (int i = 0; i < threadsList.size(); i++) {
+			threadsList.get(i).start();
+			UnicornCall.logger.debug("Request " + ((RequestThread)threadsList.get(i)).getObsID() + " started");
 		}
-		this.aTask = Framework.mapOfTask.get(sTaskID);
 
-		if (null == this.aTask) {
-			UnicornCall.logger.error("The task " + sTaskID
-					+ " does not exists.");
+		for (int i = 0; i < threadsList.size(); i++) {
+			try {
+				threadsList.get(i).join();
+				UnicornCall.logger.debug("Request " + ((RequestThread)threadsList.get(i)).getObsID() + " terminated");
+			} catch (InterruptedException e) {
+				e.printStackTrace();
+			}
 		}
 	}
-
+	
 	/**
-	 * define the lang of the check
+	 * Enter a new parameter in the list
 	 * 
-	 * @param sLang
-	 *            defines the lang to configure
+	 * @param sName
+	 *            Name of the parameter
+	 * @param tStringValue
+	 *            value of the parameter
 	 */
-	public void setLang(final String sLang) {
-		UnicornCall.logger.debug("setLang(" + sLang + ")");
-		this.sLang = sLang;
-	}
+	public void addParameter(final String sName, final String[] tStringValue) {
 
-	public String getLang() {
-		return sLang.split(",")[0];
+		final String[] tStringValueLocal = mapOfStringParameter.get(sName);
+		if (tStringValueLocal != null) {
+			int tValuesLength = tStringValueLocal.length;
+			int newSize = tStringValue.length + tValuesLength;
+			final String[] tStringValueNew = new String[newSize];
+			for (int i = 0; i < tStringValueLocal.length; i++) {
+				tStringValueNew[i] = tStringValueLocal[i];
+			}
+			for (int i = 0; i < tStringValue.length; i++) {
+				tStringValueNew[tValuesLength + i] = tStringValue[i];
+			}
+			this.mapOfStringParameter.put(sName, tStringValueNew);
+		} else {
+			this.mapOfStringParameter.put(sName, tStringValue);
+		}
 	}
-
-	/**
-	 * Returns the document name
-	 * 
-	 * @return Returns the documentName.
-	 */
-	public String getDocumentName() {
-		return this.sDocumentName;
+	
+	public void addParameter(final String sName, final String tStringValue) {
+		String[] tab = {tStringValue};
+		addParameter(sName, tab);
 	}
-
-	/**
-	 * Set the name of the document
-	 * 
-	 * @param sDocumentName
-	 *            The documentName to set.
-	 */
-	public void setDocumentName(final String sDocumentName) {
-		this.sDocumentName = sDocumentName;
+	
+	public String getObserverName(String observer, String lang) {
+		return Framework.mapOfObserver.get(observer).getName(lang);
 	}
-
-	/**
-	 * Gives the list of the observations in the order specified in the tasklist file
-	 * 
-	 * @return map of the observations of the check
-	 */
+	
+	public String getInputMethod() {
+		return inputParameter.getInputMethod().toString();
+	}
+	
 	public LinkedHashMap<String, Response> getObservationList() {
-		
 		if (observationMap == null) {
 			observationMap = new LinkedHashMap<String, Response>();
 			
@@ -592,66 +537,23 @@
 				}
 			}
 		}
-		
 		return observationMap;
 	}
 	
-	public String getObserverName(String observer, String lang) {
-		return Framework.mapOfObserver.get(observer).getName(lang);
-	}
-
-	/**
-	 * @return Returns the mapOfStringParameter.
-	 */
-	public Map<String, String[]> getMapOfStringParameter() {
-		return mapOfStringParameter;
-	}
-
-	/**
-	 * Enter a new parameter in the list
-	 * 
-	 * @param sName
-	 *            Name of the parameter
-	 * @param tStringValue
-	 *            value of the parameter
-	 */
-	public void addParameter(final String sName, final String[] tStringValue) {
-
-		final String[] tStringValueLocal = mapOfStringParameter.get(sName);
-		if (tStringValueLocal != null) {
-			int tValuesLength = tStringValueLocal.length;
-			int newSize = tStringValue.length + tValuesLength;
-			final String[] tStringValueNew = new String[newSize];
-			for (int i = 0; i < tStringValueLocal.length; i++) {
-				tStringValueNew[i] = tStringValueLocal[i];
-			}
-			for (int i = 0; i < tStringValue.length; i++) {
-				tStringValueNew[tValuesLength + i] = tStringValue[i];
+	public boolean isPassed() {
+		boolean passed = true;
+		for (String key : getObservationList().keySet()) {
+			if (!observationMap.get(key).isPassed()) {
+				passed = false;
 			}
-			this.mapOfStringParameter.put(sName, tStringValueNew);
-		} else {
-			this.mapOfStringParameter.put(sName, tStringValue);
 		}
-	}
-	
-	public void addParameter(final String sName, final String tStringValue) {
-
-		String[] tab = {tStringValue};
-		addParameter(sName, tab);
-		
+		return passed;
 	}
 
-	/**
-	 * Set the map of String Parameter
-	 * 
-	 * @param mapOfStringParameter
-	 *            The mapOfStringParameter to set.
-	 */
-	public void setMapOfStringParameter(
-			final Map<String, String[]> mapOfStringParameter) {
-		this.mapOfStringParameter = mapOfStringParameter;
+	public String getLang() {
+		return sLang.split(",")[0];
 	}
-
+	
 	/**
 	 * Returns the current task
 	 * 
@@ -660,159 +562,66 @@
 	public Task getTask() {
 		return this.aTask;
 	}
-
+	
 	/**
-	 * Set the aEnumInputMethod
+	 * Returns the responses of low priority observations.
 	 * 
-	 * @param enumInputMethod
-	 *            The aEnumInputMethod to set.
+	 * @return responses of low priority observations.
 	 */
-	public void setEnumInputMethod(final EnumInputMethod aEnumInputMethod) {
-		this.aEnumInputMethod = aEnumInputMethod;
+	public Map<String, Response> getResponses() {
+		return this.mapOfResponse;
 	}
 	
-	
-
-	public EnumInputMethod getInputMethod() {
-		return aEnumInputMethod;
-	}
-
 	/**
-	 * Set the uploadedFile
-	 * 
-	 * @param uploadedFile
-	 *            The uploadedFile to set.
+	 * @return Returns the mapOfStringParameter.
 	 */
-	public void setInputParameterValue(final Object oInputParameterValue) {
-		this.oInputParameterValue = oInputParameterValue;
+	public Map<String, String[]> getMapOfStringParameter() {
+		return mapOfStringParameter;
 	}
-
+	
 	/**
-	 * Giving a TLTCond, checks in the map of response if the condition passes
-	 * or fails and consequently returns a boolean.
+	 * Set the task to perform
 	 * 
-	 * @param cond
-	 *            The condition to check
-	 * @return true if there is a matching response and if the condition passes
-	 *         else false
+	 * @param sTaskID
+	 *            ID of the task to perform
 	 */
-	public boolean checkCond(TLTCond cond) throws Exception {
-		UnicornCall.logger.trace("checkCond : ");
-		UnicornCall.logger.trace(cond);
-		UnicornCall.logger.trace("condId : " + cond.getId());
-		UnicornCall.logger.trace("condType : " + cond.getType());
-		UnicornCall.logger.trace("condValue : " + cond.getValue());
-
-		boolean passed = false;
-
-		if (cond.getType().equals(EnumCondType.MIMETYPE)) {
-			passed = cond.getValue().equals(getMimeType().toString());
-		} else if (cond.getType().equals(EnumCondType.XPATH)) {
-			UnicornCall.logger.trace("condObserver : "
-					+ cond.getObserver().getID());
-			Response res = mapOfResponse.get(cond.getObserver().getID());
-			// Testing if there is a matching response in the map
-			// and if it is passed
-			if (res != null) {
-				String xmlStr = res.getXml().toString();
-
-				DocumentBuilderFactory xmlFact = DocumentBuilderFactory
-						.newInstance();
-
-				// namespace awareness is escaped since we don't use it
-				// for the moment
-				xmlFact.setNamespaceAware(false);
-
-				DocumentBuilder builder = xmlFact.newDocumentBuilder();
-
-				Document doc = builder.parse(new java.io.ByteArrayInputStream(
-						xmlStr.getBytes("UTF-8")));
-
-				String xpathStr = cond.getValue();
-
-				XPathFactory xpathFact = new XPathFactoryImpl();
-
-				XPath xpath = xpathFact.newXPath();
-				XPathExpression xpe = xpath.compile(xpathStr);
-				passed = (Boolean) xpe.evaluate(doc, XPathConstants.BOOLEAN);
-			}
-		} else if (cond.getType().equals(EnumCondType.PARAMETER)) {
-			passed = false;
-			if (!mapOfStringParameter.containsKey(cond.getParameter())) {
-				cond.setResult(passed);
-				return passed;
-			}
-			
-			String[] parameterValues = mapOfStringParameter.get(cond.getParameter());
-			for (int i=0; i<parameterValues.length; i++)
-				if (parameterValues[i].equals(cond.getValue()))
-					passed = true;
-			
+	public void setTask(final String sTaskID) {
+		if (null == sTaskID) {
+			UnicornCall.logger.error("Call setTask with null argument.");
+			return;
 		}
+		this.aTask = Framework.mapOfTask.get(sTaskID);
 
-		cond.setResult(passed);
-		UnicornCall.logger.trace("cond result : " + passed);
-		return passed;
+		if (null == this.aTask) {
+			UnicornCall.logger.error("The task " + sTaskID
+					+ " does not exists.");
+		}
 	}
 
 	/**
+	 * define the lang of the check
 	 * 
-	 * @return The MimeType of the document
-	 * @throws Exception
+	 * @param sLang
+	 *            defines the lang to configure
 	 */
-	private MimeType getMimeType() throws Exception {
-
-		UnicornCall.logger.trace("getMimeType");
-		MimeType aMimeType = null;
-		String sMimeType;
-		switch (this.aEnumInputMethod) {
-		case URI:
-			sMimeType = (new URL(this.sDocumentName)).openConnection()
-					.getContentType();
-			if (null == sMimeType || "".equals(sMimeType)) {
-				UnicornCall.logger.error("No specified mimetype for upload.");
-				throw new NoMimeTypeException("Mimetype not found");
-			}
-			if (UnicornCall.logger.isDebugEnabled()) {
-				UnicornCall.logger.debug("URI MimeType : " + sMimeType + ".");
-			}
-			sMimeType = sMimeType.split(";")[0];
-			aMimeType = new MimeType(sMimeType);
-			break;
-		case UPLOAD:
-			FileItem f = (FileItem) this.oInputParameterValue;
-			if (f.getName() == null || f.getName().equals("")) {
-				UnicornCall.logger.error("No document provided.");
-				throw new NoDocumentException("No document provided");
-			}
-			if (f.getSize() == 0) {
-				UnicornCall.logger.error("Empty document provided.");
-				throw new EmptyDocumentException("Empty document provided");
-			}
-
-			sMimeType = ((FileItem) this.oInputParameterValue).getContentType();
-			if (null == sMimeType || "".equals(sMimeType)) {
-				UnicornCall.logger.error("No specified mimetype for upload.");
-				throw new NoMimeTypeException("Mimetype not found");
-			}
-			aMimeType = new MimeType(sMimeType);
-			break;
-		case DIRECT:
-			sMimeType = this.mapOfStringParameter.get(Property
-					.get("UNICORN_PARAMETER_PREFIX")
-					+ "mime")[0];
-			if (null == sMimeType || "".equals(sMimeType)) {
-				UnicornCall.logger
-						.error("No mimetype specified for direct input.");
-				throw new NoMimeTypeException("Mimetype not found.");
-			}
-			aMimeType = new MimeType(sMimeType);
-			break;
-		}
-		UnicornCall.logger.debug("MimeType : " + aMimeType.toString() + ".");
-
-		return aMimeType;
+	public void setLang(final String sLang) {
+		UnicornCall.logger.debug("setLang(" + sLang + ")");
+		this.sLang = sLang;
+	}
 
+	/**
+	 * Set the map of String Parameter
+	 * 
+	 * @param mapOfStringParameter
+	 *            The mapOfStringParameter to set.
+	 */
+	public void setMapOfStringParameter(
+			final Map<String, String[]> mapOfStringParameter) {
+		this.mapOfStringParameter = mapOfStringParameter;
 	}
 
+	public void setInputParameter(final InputParameter inputParameter) {
+		this.inputParameter = inputParameter;
+	}
+	
 }
\ No newline at end of file

Received on Thursday, 17 September 2009 15:42:56 UTC