public ActionForward updateWeekEnd( 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}); // Comprobar si el usuario tiene asignadas las funciones adecuadas FunctionHelper.checkFunctions( request, session.getClientContext(), new int[] {ISecurityAPI.FUNC_COMP_CALENDARS_EDIT}); CalendarForm defaultForm = (CalendarForm) form; IItem item = (IItem) request.getSession().getAttribute("CALENDAR"); String calendarioXML = (String) item.getString("CALENDARIO"); CalendarDef calendarDef = new CalendarDef(calendarioXML); String[] daysSelected = defaultForm.getWeekDaysSelect(); calendarDef.addWeekEnd(daysSelected); item.set("CALENDARIO", calendarDef.getXmlValues()); item.store(session.getClientContext()); String entityId = request.getParameter("entityId"); if (entityId == null) { entityId = defaultForm.getEntity(); } String regId = request.getParameter("regId"); if (regId == null) { regId = defaultForm.getKey(); } return getActionForwardShow(entityId, regId); }
public ActionForward store( 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; // int keyId = Integer.parseInt(defaultForm.getKey()); // int entityId = Integer.parseInt(defaultForm.getEntity()); String parameter = request.getParameter("entityId"); if (parameter == null) { parameter = defaultForm.getEntity(); } int entityId = Integer.parseInt(parameter); parameter = request.getParameter("regId"); int condicion = Integer.parseInt(parameter); if (parameter == null) { parameter = defaultForm.getKey(); } int keyId = Integer.parseInt(parameter); EntityApp entityapp = null; String path = getRealPath(""); // Ejecución en un contexto transaccional boolean bCommit = false; try { // Abrir transacción cct.beginTX(); // Obtener la aplicación que gestiona la entidad if (keyId == ISPACEntities.ENTITY_NULLREGKEYID) { entityapp = catalogAPI.newCTDefaultEntityApp(entityId, path); keyId = entityapp.getEntityRegId(); } else { entityapp = catalogAPI.getCTDefaultEntityApp(entityId, path); } // Permite modificar los datos del formulario defaultForm.setReadonly("false"); // Salva el identificador de la entidad defaultForm.setEntity(Integer.toString(entityId)); // Salva el identificador del registro defaultForm.setKey(Integer.toString(keyId)); defaultForm.processEntityApp(entityapp); // Se le asigna la clave del registro. Es necesario ya que el // item al que hace referencia puede estar recien creado y por tanto // tendría su campo clave a -1 (ISPACEntities.ENTITY_REGKEYID) entityapp.getItem().setKey(keyId); // entityapp.setAppName("EditCalendar"); if (!entityapp.validate()) { ActionMessages errors = new ActionMessages(); List errorList = entityapp.getErrors(); Iterator iteError = errorList.iterator(); while (iteError.hasNext()) { ValidationError validError = (ValidationError) iteError.next(); ActionMessage error = new ActionMessage(validError.getErrorKey(), validError.getArgs()); errors.add("property(NOMBRE)", error); } saveErrors(request, errors); return new ActionForward(mapping.getInput()); } // Guardar la entidad entityapp.store(); // Si todo ha sido correcto se hace commit de la transacción bCommit = true; } catch (ISPACException e) { if (entityapp != null) { // Establecer la aplicación para acceder a los valores extra en // el formulario defaultForm.setValuesExtra(entityapp); // Página jsp asociada a la presentación de la entidad request.setAttribute("application", entityapp.getURL()); request.setAttribute("EntityId", Integer.toString(entityId)); request.setAttribute("KeyId", Integer.toString(keyId)); throw new ISPACInfo(e.getMessage()); } else { // Suele producirse error en las secuencias al estar mal // inicializadas // provocando una duplicación de keys throw e; } } finally { cct.endTX(bCommit); } if (condicion == ISPACEntities.ENTITY_NULLREGKEYID) { return getActionForwardShow(String.valueOf(entityId), String.valueOf(keyId)); } return updateWeekEnd(mapping, defaultForm, request, response, session); // ActionForward forward = mapping.findForward("ShowEntity" + entityId); // if (forward == null) { // // forward = mapping.findForward("reloadShowEntity" + entityId); // if (forward == null) { // forward = mapping.findForward("reload"); // } // // String redirected = forward.getPath() + "?entityId=" + entityId + "®Id=" + keyId; // if (request.getQueryString() != null) { // redirected += "&" + request.getQueryString(); // } // forward = new ActionForward(forward.getName(), redirected, true); // } // // return forward; }
public ActionForward saveholydays( 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(); CalendarForm defaultForm = (CalendarForm) form; // Validar el formulario defaultForm.setEntityAppName("SaveHolydaysCalendar"); ActionMessages errors = defaultForm.validate(mapping, request); String entityId = defaultForm.getEntity(); String regId = defaultForm.getKey(); String nombre = request.getParameter("nombre"); String dias = request.getParameter("weekDaysSelect"); // Ejecución en un contexto transaccional boolean bCommit = false; try { // Abrir transacción cct.beginTX(); if (errors.isEmpty()) { IInvesflowAPI invesFlowAPI = session.getAPI(); ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI(); // Bloqueo catalogAPI.queryCTEntities(ICatalogAPI.ENTITY_SPAC_CALENDARIOS, ""); IItem item = (IItem) request.getSession().getAttribute("CALENDAR"); // deberia ir abajo String calendarioXML = (String) item.getString("CALENDARIO"); validateHolyday(item, defaultForm.getProperty("HOLYDAY_DATE"), session, errors); if (!errors.isEmpty()) { saveErrors(request, errors); return mapping.findForward("success_holydays"); } CalendarDef calendarDef = new CalendarDef(calendarioXML); calendarDef.addHolyday( defaultForm.getProperty("HOLYDAY_NAME"), defaultForm.getProperty("HOLYDAY_DATE")); item.set("CALENDARIO", calendarDef.getXmlValues()); item.store(session.getClientContext()); // Si todo ha sido correcto se hace commit de la transacción bCommit = true; // Para que vaya a la direccion donde yo quiero String url = "?method=show&entityId=" + entityId + "®Id=" + regId + "&save=true&nombre=" + nombre + "&weekDaysSelect=" + dias; request.setAttribute("target", "top"); request.setAttribute("url", url); return mapping.findForward("loadOnTarget"); } else { saveErrors(request, errors); return getActionForwardHolydays(); } } catch (ISPACException e) { throw new ISPACInfo(e.getMessage()); } finally { cct.endTX(bCommit); } }
public ActionForward show( 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_READ, ISecurityAPI.FUNC_COMP_CALENDARS_EDIT}); CalendarForm defaultForm = (CalendarForm) form; String parameter = request.getParameter("entityId"); if (parameter == null) { parameter = defaultForm.getEntity(); } int entityId = Integer.parseInt(parameter); parameter = request.getParameter("regId"); if (parameter == null) { parameter = defaultForm.getKey(); } int keyId = Integer.parseInt(parameter); // Indica si se viene de añadir un nuevo dia festivo o no Boolean save = new Boolean(request.getParameter("save")); IInvesflowAPI invesFlowAPI = session.getAPI(); ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI(); String strURL = null; EntityApp entityapp = catalogAPI.getCTDefaultEntityApp(entityId, keyId, getRealPath("")); try { if (entityapp == null) throw new ISPACNullObject(); // Si se debe crear una entrada cuando se guarden los datos del registro, // se marca debidamente el campo clave del registro como nulo. if (keyId == ISPACEntities.ENTITY_NULLREGKEYID) { entityapp.getItem().setKey(ISPACEntities.ENTITY_NULLREGKEYID); } } catch (ISPACNullObject e) { ISPACRewrite ispacPath = new ISPACRewrite(getServlet().getServletContext()); strURL = ispacPath.rewriteRelativePath("common/missingapp.jsp"); } catch (ISPACException eie) { throw new ISPACInfo(eie.getMessage()); } if (strURL == null) { strURL = entityapp.getURL(); } // Visualiza los datos de la entidad // Si hay errores no se recargan los datos de la entidad // manteniéndose los datos introducidos que generan los errores if (((defaultForm.getActions() == null) || (defaultForm.getActions().equals("success"))) && (request.getAttribute(Globals.ERROR_KEY) == null)) { defaultForm.setEntity(Integer.toString(entityId)); defaultForm.setKey(Integer.toString(keyId)); defaultForm.setReadonly("false"); defaultForm.setEntityApp(entityapp); } else { // Establecer la aplicación para acceder a los valores extra en el formulario defaultForm.setValuesExtra(entityapp); } if (save.booleanValue()) defaultForm.setProperty("NOMBRE", request.getParameter("nombre")); // Lista de festivos y fin de semana List holydaysList = null; List allDayList = null; IItem item = defaultForm.getEntityApp().getItem(); if (keyId > 0) { CalendarDef caldef = new CalendarDef(item.getString("CALENDARIO")); // Dias festivos holydaysList = caldef.getHolydays(); // Dias de la semana allDayList = caldef.getAllWeekDays(); // Dias de la semana if (save.booleanValue()) { String dias = request.getParameter("weekDaysSelect"); String[] diasSeleccionados = new String[dias.length()]; if (!dias.equals("")) diasSeleccionados = dias.split(","); caldef.addWeekEnd(diasSeleccionados); } defaultForm.setWeekDaysSelect(caldef.getWeekEndDays()); } else { item.set("CALENDARIO", (new CalendarDef()).getXmlValues()); } request.setAttribute("HOLYDAYS_LIST", holydaysList); request.setAttribute("WEEKDAYS_LIST", allDayList); // Página jsp asociada a la presentación de la entidad request.setAttribute("application", strURL); request.setAttribute("EntityId", Integer.toString(entityId)); request.setAttribute("KeyId", Integer.toString(keyId)); // Generamos la ruta de navegación hasta la pantalla actual. BreadCrumbsContainer bcm = BreadCrumbsManager.getInstance(catalogAPI).getBreadCrumbs(request); request.setAttribute("BreadCrumbs", bcm.getList()); // poner el item en session request.getSession().setAttribute("CALENDAR", entityapp.getItem()); return mapping.findForward("success_show"); }
// Esta función guarda en la base de datos correspondiente los dias seleccionados en la página. public ActionForward saveFixedHolidays( 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(); CalendarForm defaultForm = (CalendarForm) form; String[] selectFixedHolidays = (String[]) defaultForm.getSelectFixedHolidays(); String year = (String) defaultForm.getProperty("YEAR"); // Validación ActionMessages errors = new ActionMessages(); defaultForm.setEntityAppName("EditCTCalendar"); errors = defaultForm.validate(mapping, request); if (errors.isEmpty()) { String entityId = defaultForm.getEntity(); String regId = defaultForm.getKey(); String nombre = request.getParameter("nombre"); String dias = request.getParameter("weekDaysSelect"); // Ejecución en un contexto transaccional boolean bCommit = false; try { // Abrir transacción cct.beginTX(); IInvesflowAPI invesFlowAPI = session.getAPI(); ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI(); // Bloquear catalogAPI.queryCTEntities(ICatalogAPI.ENTITY_SPAC_CALENDARIOS, ""); IItem item = (IItem) request.getSession().getAttribute("CALENDAR"); String calendarioXML = (String) item.getString("CALENDARIO"); CalendarDef calendarDef = new CalendarDef(calendarioXML); for (int i = 0; i < selectFixedHolidays.length; i++) { String[] date = selectFixedHolidays[i].split("---"); ActionMessages errorsFixedHolidays = new ActionMessages(); validateHolyday(item, date[0] + "/" + year, session, errorsFixedHolidays); if (errorsFixedHolidays.isEmpty()) { calendarDef.addHolyday(date[1], date[0] + "/" + year); } } item.set("CALENDARIO", calendarDef.getXmlValues()); item.store(session.getClientContext()); // Si todo ha sido correcto se hace commit de la transacción bCommit = true; String url = "?method=show&entityId=" + entityId + "®Id=" + regId + "&save=true&nombre=" + nombre + "&weekDaysSelect=" + dias; request.setAttribute("target", "top"); request.setAttribute("url", url); return mapping.findForward("loadOnTarget"); } catch (ISPACException e) { throw new ISPACInfo(e.getMessage()); } finally { cct.endTX(bCommit); } } saveErrors(request, errors); request.setAttribute(DAYS_LIST, request.getAttribute(DAYS_LIST)); return mapping.findForward("errorYear"); }