/******************************************************************************* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. *******************************************************************************/ package org.apache.ofbiz.order.task; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Locale; import org.apache.ofbiz.base.util.Debug; import org.apache.ofbiz.base.util.GeneralException; import org.apache.ofbiz.base.util.ObjectType; import org.apache.ofbiz.base.util.UtilHttp; import org.apache.ofbiz.base.util.UtilMisc; import org.apache.ofbiz.base.util.UtilProperties; import org.apache.ofbiz.webapp.control.RequestHandler; import org.apache.ofbiz.webapp.control.ConfigXMLReader.Event; import org.apache.ofbiz.webapp.event.EventHandler; import org.apache.ofbiz.webapp.event.EventHandlerException; import org.apache.ofbiz.entity.GenericValue; import org.apache.ofbiz.service.GenericServiceException; import org.apache.ofbiz.service.LocalDispatcher; import org.apache.ofbiz.service.ModelService; /** * Order Processing Task Events */ public class TaskEvents { public static final String module = TaskEvents.class.getName(); public static final String resource_error = "OrderErrorUiLabels"; /** Complete assignment event */ public static String completeAssignment(HttpServletRequest request, HttpServletResponse response) { LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); GenericValue userLogin = (GenericValue) request.getSession().getAttribute("userLogin"); Map<String, Object> parameterMap = UtilHttp.getParameterMap(request); String workEffortId = (String) parameterMap.remove("workEffortId"); String partyId = (String) parameterMap.remove("partyId"); String roleTypeId = (String) parameterMap.remove("roleTypeId"); String fromDateStr = (String) parameterMap.remove("fromDate"); java.sql.Timestamp fromDate = null; Locale locale = UtilHttp.getLocale(request); try { fromDate = (java.sql.Timestamp) ObjectType.simpleTypeConvert(fromDateStr, "java.sql.Timestamp", null, null); } catch (GeneralException e) { request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage(resource_error,"OrderInvalidDateFormatForFromDate", locale)); return "error"; } Map<String, Object> result = null; try { Map<String, ? extends Object> context = UtilMisc.toMap("workEffortId", workEffortId, "partyId", partyId, "roleTypeId", roleTypeId, "fromDate", fromDate, "result", parameterMap, "userLogin", userLogin); result = dispatcher.runSync("wfCompleteAssignment", context); if (result.containsKey(ModelService.RESPOND_ERROR)) { request.setAttribute("_ERROR_MESSAGE_", result.get(ModelService.ERROR_MESSAGE)); return "error"; } } catch (GenericServiceException e) { request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage(resource_error,"OrderProblemsInvokingTheCompleteAssignmentService", locale)); return "error"; } return "success"; } /** Accept role assignment event */ public static String acceptRoleAssignment(HttpServletRequest request, HttpServletResponse response) { ServletContext ctx = (ServletContext) request.getAttribute("servletContext"); RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_"); Locale locale = UtilHttp.getLocale(request); if (addToOrderRole(request)) { try { EventHandler eh = rh.getEventFactory().getEventHandler("service"); eh.invoke(new Event("service", "", "wfAcceptRoleAssignment", true), null, request, response); } catch (EventHandlerException e) { Debug.logError(e, "Invocation error", module); request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage(resource_error,"OrderFailedToInvokeTheWfAcceptRoleAssignmentService", locale)); return "error"; } return "success"; } return "error"; } /** Delegate and accept assignment event */ public static String delegateAndAcceptAssignment(HttpServletRequest request, HttpServletResponse response) { ServletContext ctx = (ServletContext) request.getAttribute("servletContext"); RequestHandler rh = (RequestHandler) ctx.getAttribute("_REQUEST_HANDLER_"); Locale locale = UtilHttp.getLocale(request); if (addToOrderRole(request)) { try { EventHandler eh = rh.getEventFactory().getEventHandler("service"); eh.invoke(new Event("service", "", "wfAcceptRoleAssignment", true), null, request, response); } catch (EventHandlerException e) { Debug.logError(e, "Invocation error", module); request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage(resource_error,"OrderFailedToInvokeTheWfDelegateAndAcceptAssignmentService", locale)); return "error"; } return "success"; } return "error"; } private static boolean addToOrderRole(HttpServletRequest request) { LocalDispatcher dispatcher = (LocalDispatcher) request.getAttribute("dispatcher"); String partyId = request.getParameter("partyId"); String roleTypeId = request.getParameter("roleTypeId"); String orderId = request.getParameter("orderId"); Map<String, ? extends Object> context = UtilMisc.toMap("orderId", orderId, "partyId", partyId, "roleTypeId", roleTypeId); Map<String, Object> result = null; try { result = dispatcher.runSync("addOrderRole", context); Debug.logInfo("Added user to order role " + result, module); } catch (GenericServiceException gse) { request.setAttribute("_ERROR_MESSAGE_", gse.getMessage()); return false; } return true; } }