package org.uengine.ui.jsp;
import java.io.IOException;
import java.rmi.RemoteException;
import javax.ejb.RemoveException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.HttpJspPage;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;
import org.uengine.kernel.KeyedParameter;
import org.uengine.kernel.Role;
import org.uengine.kernel.RoleMapping;
import org.uengine.processmanager.ProcessDefinitionRemote;
import org.uengine.processmanager.ProcessManagerFactoryBean;
public abstract class WorkItemHandlerJSPBase extends ComJSPBase implements
Servlet, HttpJspPage {
/**
* WorkItemHandlerJSPBase Constructor
*/
public WorkItemHandlerJSPBase() {
super();
}
/**
* Servlet�� LifeCycle Init Method
*
* @param servletconfig
* @exception ServletException
*/
public final void init(ServletConfig servletconfig) throws ServletException {
_servletConfig = servletconfig;
try {
jspInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* Servlet initialization.
*/
public void jspInit() {
}
public final void service(ServletRequest servletrequest,
ServletResponse servletresponse) throws ServletException,
IOException {
HttpServletRequest request = (HttpServletRequest) servletrequest;
HttpServletResponse response = (HttpServletResponse) servletresponse;
// bhhan for transaction test works.
/////////////////////////////////////////////////////////////////
// InitialContext context = null;
// UserTransaction tx = null;
// try {
// System.out.println("=====================> Transaction ��....");
// context = new InitialContext();
// tx = (UserTransaction)context.lookup("java:comp/UserTransaction");
// } catch (NamingException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
/////////////////////////////////////////////////////////////////
try {
//tx.begin();
doBefore(request);
_jspService(request, response);
doAfter(request);
pm.applyChanges(); // commit.
doSuccess(request, response);
// bhhan 2007-06-07
//tx.commit();
} catch (Exception e) {
doError(e, request, response);
pm.cancelChanges(); // rollback.
//bhhan 2007-06-07
// try {
// System.out.println("=====================> Transaction ���� rollback....");
// tx.rollback();
// } catch (IllegalStateException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// } catch (SecurityException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// } catch (SystemException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
e.printStackTrace();
throw new ServletException(e.getMessage());
} finally {
try {
if(pm!=null) pm.remove(); // close.
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new ServletException(e.getMessage());
} catch (RemoveException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new ServletException(e.getMessage());
}
}
}
public void doBefore(HttpServletRequest request) throws Exception {
setLoggedUserInfo(request);
setInitializeProc(request);
}
public void doAfter(HttpServletRequest request) throws Exception {
}
public void doSuccess(HttpServletRequest request,
HttpServletResponse response) {
}
public void doError(Exception e, HttpServletRequest request,
HttpServletResponse response) {
}
public void setLoggedUserInfo(HttpServletRequest request) throws Exception {
HttpSession session = request.getSession();
loggedUserId = (String) session.getAttribute("loggedUserId");
loggedUserFullName = (String) session
.getAttribute("loggedUserFullName");
loggedUserIsAdmin = "1".equals((String) session
.getAttribute("loggedUserIsAdmin"));
loggedUserJikName = (String) session.getAttribute("loggedUserJikName");
loggedUserEmail = (String) session.getAttribute("loggedUserEmail");
loggedUserPartCode = (String) session
.getAttribute("loggedUserPartCode");
loggedUserMsnId = (String) session.getAttribute("loggedUserMsnId");
if (loggedUserId == null)
throw new Exception("Logging in required.");
loggedUserEMailAddress = "";
loggedUserLocale = "ko";
loggedRoleMapping = RoleMapping.create();
loggedRoleMapping.setEndpoint(loggedUserId);
loggedRoleMapping.setResourceName(loggedUserFullName);
loggedRoleMapping.setEmailAddress(loggedUserEMailAddress);
loggedRoleMapping.setMale(true);
loggedRoleMapping.setBirthday(new java.util.Date());
}
public void setInitializeProc(HttpServletRequest request) throws Exception {
ProcessDefinitionRemote pdr = null;
// useBean
ProcessManagerFactoryBean processManagerFactory = new ProcessManagerFactoryBean();
pm = processManagerFactory.getProcessManager();
instanceId = decode(request.getParameter("instanceId"));
processDefinition = decode(request.getParameter("processDefinition"));
tracingTag = request.getParameter("tracingTag");
initiate = "yes".equals(request.getParameter("initiate"))
|| "yes".equals(request.getParameter("isEventHandler"));
isViewMode = "yes".equals(request.getParameter("isViewMode"));
isMine = initiate || "yes".equals(request.getParameter("isMine"));
taskId = request.getParameter("taskId");
dispatchingOption = request
.getParameter(KeyedParameter.DISPATCHINGOPTION);
isRacing = ("" + Role.DISPATCHINGOPTION_RACING)
.equals(dispatchingOption);
if (!initiate)
piRemote = pm.getProcessInstance(instanceId);
if (piRemote != null)
pdRemote = piRemote.getProcessDefinition();
}
public final void destroy() {
jspDestroy();
}
public void jspDestroy() {
}
/**
* getServletConfig
*
* @return ServletConfig
*/
public ServletConfig getServletConfig() {
return _servletConfig;
}
public String getServletInfo() {
return "Generated JSP Servlet:CLASS= [" + getClass().getName() + "]";
}
protected ServletConfig _servletConfig;
public abstract void _jspService(HttpServletRequest httpservletrequest,
HttpServletResponse httpservletresponse) throws ServletException,
IOException;
}