/*
* 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:
* Mike Mendis - initial API and implementation
* Bastian Weinlich - Adaption to GIRIXCell
*/
package de.hpi.i2b2.girix;
import de.hpi.i2b2.girix.datavo.i2b2message.RequestMessageType;
import edu.harvard.i2b2.common.exception.I2B2Exception;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
// This class is a modification of the ExecutorRunnable class of the PFTCell
/**
* Implements thread runnable interface, to delegate the work to a handler
*/
public class ExecutorRunnable implements Runnable {
private static Log log = LogFactory.getLog(ExecutorRunnable.class);
private RequestMessageType input = null;
private String outputString = null;
private I2B2Exception ex = null;
private boolean jobCompleteFlag = false;
private RequestHandler handler;
public RequestHandler getRequestHandler() {
return handler;
}
public void setRequestHandler(RequestHandler handler) {
this.handler = handler;
}
public boolean isJobCompleteFlag() {
return jobCompleteFlag;
}
public void setJobCompleteFlag(boolean jobCompleteFlag) {
this.jobCompleteFlag = jobCompleteFlag;
}
public I2B2Exception getJobException() {
return ex;
}
public void setJobException(I2B2Exception ex) {
this.ex = ex;
}
public RequestMessageType getInput() {
return input;
}
public void setInput(RequestMessageType input) {
this.input = input;
}
public String getOutputString() {
return outputString;
}
public void setOutputString(String outputString) {
this.outputString = outputString;
}
public void run() {
log.debug("Worker thread started");
try {
outputString = handler.handleRequest(input);
setJobCompleteFlag(true);
log.debug("Worker thread finished");
} catch (I2B2Exception e) {
setJobException(e);
setJobCompleteFlag(true);
}
}
}