public ActionForward createCopyCalendar( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, SessionAPI session) throws Exception { // Comprobar si el usuario tiene asignadas las funciones adecuadas FunctionHelper.checkFunctions( request, session.getClientContext(), new int[] {ISecurityAPI.FUNC_COMP_CALENDARS_EDIT}); ClientContext cct = session.getClientContext(); IInvesflowAPI invesFlowAPI = session.getAPI(); ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI(); // Formulario asociado a la acción CalendarForm defaultForm = (CalendarForm) form; String entityId = request.getParameter("entityId"); String keyId = request.getParameter("regId"); String name = defaultForm.getProperty("NEW_CALENDAR_NAME"); IItemCollection calendar = null; IItem icalendar = null; IItem newCalendar = null; // Ejecución en un contexto transaccional boolean bCommit = false; try { // Abrir transacción cct.beginTX(); List errorList = validate(name, session); if (!errorList.isEmpty()) { ActionMessages errors = new ActionMessages(); Iterator iteError = errorList.iterator(); while (iteError.hasNext()) { ValidationError validError = (ValidationError) iteError.next(); ActionMessage error = new ActionMessage(validError.getErrorKey(), validError.getArgs()); errors.add("property(NEW_CALENDAR_NAME)", error); } saveErrors(request, errors); return mapping.findForward("validate"); } calendar = (IItemCollection) catalogAPI.queryCTEntities(ICatalogAPI.ENTITY_SPAC_CALENDARIOS, "where ID=" + keyId); icalendar = calendar.value(); newCalendar = catalogAPI.createCTEntity(ICatalogAPI.ENTITY_SPAC_CALENDARIOS); newCalendar.set("NOMBRE", name); newCalendar.set("CALENDARIO", icalendar.get("CALENDARIO")); newCalendar.store(cct); // Si todo ha sido correcto se hace commit de la transacción bCommit = true; } catch (ISPACException e) { throw new ISPACInfo(e.getMessage()); } finally { cct.endTX(bCommit); } request.setAttribute("target", "top"); request.setAttribute( "url", "?method=show&entityId=" + entityId + "®Id=" + newCalendar.getKeyInteger().toString()); return mapping.findForward("loadOnTarget"); }