/* * Copyright (c) 2006-2007 Massachusetts General Hospital * All rights reserved. This program and the accompanying materials * are made available under the terms of the i2b2 Software License v1.0 * which accompanies this distribution. * * Contributors: * Raj Kuttan */ package edu.harvard.i2b2.ontology.delegate; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Implements thread runnable interface, to do Ontology processing using thread. */ public class ExecutorRunnable implements Runnable { private static Log log = LogFactory.getLog(ExecutorRunnable.class); private String inputString = null; private String outputString = null; private RequestHandler reqHandler = null; private Exception ex = null; private boolean jobCompleteFlag = false; private Map parameterMap = null; public Exception getJobException() { return ex; } public boolean isJobCompleteFlag() { return jobCompleteFlag; } public void setJobCompleteFlag(boolean jobCompleteFlag) { this.jobCompleteFlag = jobCompleteFlag; } public void setJobException(Exception ex) { this.ex = ex; } public String getInputString() { return inputString; } public void setInputString(String inputString) { this.inputString = inputString; } public void setRequestHandler(RequestHandler handler) { this.reqHandler = handler; } public RequestHandler getRequestHandler() { return this.reqHandler; } public String getOutputString() { return outputString; } public void setOutputString(String outputString) { this.outputString = outputString; } public void setParameter(Map parameterMap) { this.parameterMap = parameterMap; } public void run() { try { RequestRunnable handler = (RequestRunnable)this.parameterMap.get("RequestRunnable"); handler.runnable(this.parameterMap); setJobCompleteFlag(true); } catch (Exception e) { e.printStackTrace(); setJobException(e); } // notify(); } /* * public OMElement execute(RequestHandler handler, long waitTime)throws * I2B2Exception{ * * OMElement returnElement = null; String ontologyDataResponse = null; * String unknownErrorMessage = * "Error message delivered from the remote server \n" + * "You may wish to retry your last action"; * this.setRequestHandler(handler); * * // timeout test waitTime=10; Passed 1/29/08 lcp * * Thread t = new Thread(this); synchronized (t) { t.start(); * * try { int count = 0; while((ontologyDataResponse == null)&&(count<2)){ if * (waitTime > 0) { t.wait(waitTime); } else { t.wait(); } count++; * log.debug("ontology ER loop" + count); } * * ontologyDataResponse = this.getOutputString(); * * if (ontologyDataResponse == null) { if (this.getJobException() != null) { * log.error("er.jobException is not null"); * log.error(this.getJobException().getMessage()); * log.error(this.getJobException().getStackTrace()); * * log.info("waitTime is " + waitTime); ResponseMessageType responseMsgType * = MessageFactory.doBuildErrorResponse(null, unknownErrorMessage); * ontologyDataResponse = * MessageFactory.convertToXMLString(responseMsgType); * * } else if (this.isJobCompleteFlag() == false) { * //<result_waittime_ms>5000</result_waittime_ms> String timeOuterror = * "Remote server timed out \n" + "Result waittime = " + waitTime + * " ms elapsed,\nPlease try again"; log.error(timeOuterror); * * log.error("for " + this.getRequestHandler().getClass().getName() + * " and loop count = " + count); * * ResponseMessageType responseMsgType = * MessageFactory.doBuildErrorResponse(null, timeOuterror); * ontologyDataResponse = * MessageFactory.convertToXMLString(responseMsgType); * * } else { log.error("ontology data response is null"); * log.info("waitTime is " + waitTime); ResponseMessageType responseMsgType * = MessageFactory.doBuildErrorResponse(null, unknownErrorMessage); * ontologyDataResponse = * MessageFactory.convertToXMLString(responseMsgType); } } } catch * (InterruptedException e) { log.error("interrupt exception " + * e.getMessage()); ResponseMessageType responseMsgType = * MessageFactory.doBuildErrorResponse(null, unknownErrorMessage); * ontologyDataResponse = * MessageFactory.convertToXMLString(responseMsgType); } finally { * t.interrupt(); t = null; } } * * returnElement = * MessageFactory.createResponseOMElementFromString(ontologyDataResponse); * return returnElement; } */ }