private String getSubstitutesRespString() throws ISPACException { if (StringUtils.isEmpty(resp)) { TreeSet respList = new TreeSet(); DbCnt cnt = context.getConnection(); try { Responsible user = context.getUser(); respList.addAll(user.getRespList()); if (mWorkMode == IWorklistAPI.SUPERVISOR) { SecurityMgr security = new SecurityMgr(cnt); // Sustituir (sustituidos por el usuario y por los grupos a los que pertenece el usuario) IItemCollection collection = security.getAllSubstitutes(user); addRespListFromEntryUID(respList, collection, "UID_SUSTITUIDO"); } } finally { context.releaseConnection(cnt); } resp = "'" + StringUtils.join(respList, "','") + "'"; } if (logger.isDebugEnabled()) { logger.debug("getSubstitutesRespString:" + resp); } return resp; }
private void setSecurityData(CopySoapStub _stub) { // Añadimos los datos de seguridad y timeout. if (StringUtils.isNotEmpty(user)) { _stub.setUsername(user); } if (StringUtils.isNotEmpty(password)) { _stub.setPassword(password); } }
/** * Obtener el contenido del documento que tenga asignado el CSV recibido. * * @param context Contexto de tramitación. * @param csv CSV del documento * @return Contenido del documento. * @throws ISPACException Si se produce algún error. */ public static byte[] getContenidoDocumento(IClientContext context, String csv) throws ISPACException { // Contenido del documento byte[] content = null; // Consulta String sqlQuery = "WHERE COD_COTEJO = '" + DBUtil.replaceQuotes(csv) + "'"; IItemCollection documents = context.getAPI().getEntitiesAPI().queryEntities(SpacEntities.SPAC_DT_DOCUMENTOS, sqlQuery); if (documents.next()) { IItem document = documents.value(); // Obtener el identificador del documento en el repositorio String guid = document.getString("INFOPAG_RDE"); if (StringUtils.isBlank(guid)) { guid = document.getString("INFOPAG"); } // Obtener el contenido del documento content = ieci.tdw.ispac.services.helpers.DocumentsHelper.getContenidoDocumento(context, guid); } return content; }
/** * Obtiene la lista de expedientes enviados a la papelera * * @fechaInicio Fecha de creación del expediente * @fechaEliminacion Fecha de eliminación del expediente * @procedimiento Procedimiento al que pertenece el expediente * @return * @throws ISPACException */ public IItemCollection getExpedientsSentToTrash( String fechaInicio, String fechaEliminacion, int procedimiento) throws ISPACException { DbCnt cnt = mcontext.getConnection(); try { String sMaxResultados = ISPACConfiguration.getInstance().get(ISPACConfiguration.MAX_EXPS_SHOW_TRASH); int max = 0; if (StringUtils.isNotBlank(sMaxResultados)) { max = TypeConverter.parseInt(sMaxResultados.trim(), 0); } return TXProcesoDAO.getExpedients( cnt, "PROCESOS.TIPO=" + IProcess.PROCESS_TYPE + " AND PROCESOS.ESTADO=" + TXConstants.STATUS_DELETED, max, fechaInicio, fechaEliminacion, procedimiento); } catch (ISPACException ie) { throw new ISPACException("Error en invesflowAPI:getExpedientsSentToTrash()", ie); } finally { mcontext.releaseConnection(cnt); } }
/** * Obtiene el conector de proceso de firma. Portafirmas * * @return Conector de de proceso de firma. Portafirmas * @throws ISPACException si ocurre algún error. */ public ProcessSignConnector getProcessSignConnector() throws ISPACException { ProcessSignConnector processSignConnector = null; // Comprobar que se haya establecido el nombre de la clase if (StringUtils.isBlank(className)) { return new ProcessSignConnectorImpl(); } try { // Cargar la clase Class clazz = Class.forName(className); if (!ProcessSignConnector.class.isAssignableFrom(clazz)) { throw new ISPACException(className + " no implementa el interfaz ProcessSignConnector"); } // Instanciar la clase processSignConnector = (ProcessSignConnector) clazz.newInstance(); if (logger.isDebugEnabled()) { logger.debug("ProcessSignConnector creado [" + className + "]"); } } catch (Exception e) { logger.error("Error al instanciar el conector del proceso de firma. Portafirmas", e); throw new ISPACException(e); } return processSignConnector; }
public IItemCollection getPermissions(int typeObject, int idObject, int[] typePermissions) throws ISPACException { CollectionDAO coldao = PermissionDAO.getPermissions(mDbCnt, typeObject, idObject, typePermissions); List list = new ArrayList(); while (coldao.next()) { ObjectDAO permission = coldao.value(); String respName = permission.getString("RESP_NAME"); if (StringUtils.isBlank(respName)) { String idResp = permission.getString("ID_RESP"); IResponsible responsible = null; try { responsible = getResp(idResp); // } catch (ISPACException ie) { } catch (Exception ie) { // java.lang.NumberFormatException // si el ID_RESP no es un UID y es el nombre del responsable } /* if (responsible != null) { // Establecer el nombre del responsable permission.set("RESP_NAME", responsible.getRespName()); permission.store(mDbCnt); } else { // Eliminar el permiso asociado al responsable que ya no existe // permission.delete(mDbCnt); // No eliminar sino no incluirlo en la lista permission = null; } */ if (responsible != null) { // Establecer el nombre del responsable permission.set("RESP_NAME", responsible.getRespName()); permission.store(mDbCnt); } /*else { // Establecer el ID como nombre del responsable permission.set("RESP_NAME", idResp); } permission.store(mDbCnt); */ } if (permission != null) { list.add(permission); } } return new ListCollection(list); }
public static String addAndInResponsibleOrExistPermissionCondition(String resp) throws ISPACException { String sql = addInResponsibleOrExistPermissionCondition(resp); if (StringUtils.isNotBlank(sql)) { sql = " AND " + sql; } return sql; }
public static int countProcess(DbCnt cnt, String numexp, String query) throws ISPACException { String sql = "WHERE "; if (StringUtils.isNotBlank(numexp)) { sql += " NUMEXP = '" + DBUtil.replaceQuotes(numexp) + "'"; } if (sql != null && sql.length() > 0) sql += query; CollectionDAO objlist = new CollectionDAO(TXProcesoDAO.class); return objlist.count(cnt, sql); }
/* (non-Javadoc) * @see ieci.tdw.ispac.api.IWorklistAPI#getRespString() */ public String getRespString() throws ISPACException { if (StringUtils.isEmpty(resp)) { TreeSet respList = new TreeSet(); DbCnt cnt = context.getConnection(); try { Responsible user = context.getUser(); List respListUser = user.getRespList(); respList.addAll(respListUser); if (mWorkMode == IWorklistAPI.SUPERVISOR) { SecurityMgr securityMgr = new SecurityMgr(cnt); // Comprobar si el usuario tiene asignada la función de Supervisor if (securityMgr.isSupervisor(user.getUID())) { return Responsible.SUPERVISOR; } // Supervisar (supervisados del usuario, del departamento y de los grupos a los que // pertenece el usuario) IItemCollection collection = securityMgr.getAllSuperviseds(user); addRespListFromEntryUID(respList, collection, "UID_SUPERVISADO"); // Sustituir (sustituidos por el usuario, por el departamento y por los grupos a los que // pertenece el usuario) collection = securityMgr.getAllSubstitutes(user); addRespListFromEntryUID(respList, collection, "UID_SUSTITUIDO"); } } finally { context.releaseConnection(cnt); } resp = "'" + StringUtils.join(respList, "','") + "'"; } if (logger.isDebugEnabled()) { logger.debug("getRespString:" + resp); } return resp; }
public static IItemCollection getExpedients( DbCnt cnt, String query, int limit, String fechaInicio, String fechaEliminacion, int idProcedimiento) throws ISPACException { TableJoinFactoryDAO factory = new TableJoinFactoryDAO(); factory.addTable(TABLENAME, "PROCESOS"); factory.addTable("SPAC_P_PROCEDIMIENTOS", "PPROCEDIMIENTOS"); String sql = " WHERE PPROCEDIMIENTOS.ID = PROCESOS.ID_PCD" + " AND " + query; // Fecha de inicio if (StringUtils.isNotBlank(fechaInicio)) { sql += " AND PROCESOS.FECHA_INICIO >= " + DBUtil.getToTimestampByBD(cnt, fechaInicio); } // Fecha de eliminacion if (StringUtils.isNotBlank(fechaEliminacion)) { sql += " AND PROCESOS.FECHA_ELIMINACION <= " + DBUtil.getToTimestampByBD(cnt, fechaEliminacion); } if (idProcedimiento != -1) { sql += " AND PROCESOS.ID_PCD=" + idProcedimiento; } sql += " ORDER BY PPROCEDIMIENTOS.NOMBRE"; return factory.queryTableJoin(cnt, sql, limit).disconnect(); }
public static String addInResponsibleOrExistPermissionCondition( String inResponsibleCondition, String inPermResponsibleCondition) throws ISPACException { StringBuffer sql = new StringBuffer(); if (StringUtils.isNotBlank(inResponsibleCondition)) { // Añadir la responsabilidad // y consultar los permisos asignados sql.append( getSqlInResponsibleOrExistPermissionCondition( inResponsibleCondition, inPermResponsibleCondition)); } return sql.toString(); }
/** * Obtiene la URL de un fichero. La búsqueda de realiza en el orden siguiente: * * <ul> * <li>Classpath de la aplicación * <li>Classpath del sistema * <li>Ruta absoluta * </ul> * * @param resource Nombre del fichero. * @return URL del fichero. */ public static URL getFileURL(String resource) { URL url = null; if (resource != null) { // Comprobar el fichero en el classpath de la aplicación url = ISPACConfigLocation.class.getClassLoader().getResource(resource); if (url == null) { // Comprobar el fichero en el classpath del sistema url = ClassLoader.getSystemResource(resource); if (url == null) { try { // Fichero con path relativo a la aplicación String appPath = ISPACConfigLocation.getInstance().get(APP_PATH); if (StringUtils.isNotBlank(appPath)) { File file = new File(appPath + resource); if (file.isFile()) { url = file.toURL(); } } } catch (Exception e) { url = null; } if (url == null) { try { // Fichero con path absoluto File file = new File(resource); if (file.isFile()) { url = file.toURL(); } } catch (Exception e) { url = null; } } } } } return url; }
public ActionForward executeAction( 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_PUB_RULES_EDIT}); IInvesflowAPI invesFlowAPI = session.getAPI(); IPublisherAPI publisherAPI = invesFlowAPI.getPublisherAPI(); // Formulario asociado a la regla EntityForm defaultForm = (EntityForm) form; int keyId = Integer.parseInt(defaultForm.getKey()); // Información de la regla IItem rule = publisherAPI.getRule(keyId); // Eliminar la regla publisherAPI.deleteRule(keyId); String pcdId = request.getParameter("pcdId"); if (!StringUtils.isEmpty(pcdId)) { return new ActionForward( new StringBuffer() .append("/showPubRulesList.do?pcdId=") .append(pcdId) .append("&stageId=") .append(rule.getString("ID_FASE")) .append("&taskId=") .append(rule.getString("ID_TRAMITE")) .append("&typeDoc=") .append(rule.getString("TIPO_DOC")) .toString(), true); } else { return new ActionForward("/showPubRulesGroupList.do", true); } }
protected void validate( ClientContext cs, TXTransactionDataContainer dtc, TXProcesoDAO process, TXFaseDAO stage) throws ISPACException { IBPMAPI bpmAPI = dtc.getBPMAPI(); TXProcedure procedure = TXProcedureMgr.getInstance().getProcedure(cs, process.getIdProcedure()); // PFaseDAO pStage = procedure.getStageDAO(stage.getInt("ID_FASE")); PNodoDAO pNode = procedure.getNode(cs.getConnection(), stage.getInt("ID_FASE")); String previousStageUID = bpmAPI.getPreviousStage( process.getString("ID_PROCESO_BPM"), pNode.getString("ID_NODO_BPM")); if (StringUtils.isEmpty(previousStageUID)) { if (stage.getInt("TIPO") == IStage.STAGE_TYPE) throw new ISPACInfo("exception.expedients.previousStage.noStage"); else throw new ISPACInfo("exception.subprocess.previousActivitiy.noActivity"); } }
public static String addInResponsibleOrExistPermissionCondition(String resp) throws ISPACException { String sql = " "; // Obtener la condición SQL de responsabilidad y de permisos // siempre que la responsabilidad no sea de Supervisor if (StringUtils.isNotBlank(resp) && !Responsible.SUPERVISOR.equalsIgnoreCase(resp)) { String sqlResponsibles = DBUtil.addInResponsibleCondition("ID_RESP", resp); // Añadir la responsabilidad y consultar los permisos asignados sql = getSqlInResponsibleOrExistPermissionCondition( sqlResponsibles, DBUtil.addInResponsibleCondition("SPC_PERMS.ID_RESP", resp)); } return sql; }
public void setItem(IItem item) throws ISPACException { IEntitiesAPI entitiesAPI = mContext.getAPI().getEntitiesAPI(); if (!(item instanceof EntityDAO)) { throw new ISPACException("El objeto item no es una instancia de EntityDAO."); } EntityDAO mainEntityDAO = (EntityDAO) item; // Tabla y clave de la entidad principal mPrefixMainEntity = mainEntityDAO.getTableName(); mKeyMainEntity = mainEntityDAO.getKeyName(); // TODO Incorporar al EntityDAO campo NUMEXP y DEFINICION de la entidad para no tener que // consultar la definición que ya se consulta para crear el EntityDAO // Obtener la definición de la entidad principal mainEntityDef = (IEntityDef) entitiesAPI.getCatalogEntity(mMainEntityId); // Crear un CompositeItem al que se le añadiran las entidades secundarias de // de sustituto, composición y relación múltiple cuando existan en los parámetros del formulario CompositeItem composite = new CompositeItem(mPrefixMainEntity + ":" + mKeyMainEntity); composite.addItem(item, mPrefixMainEntity + ":"); this.mitem = composite; // El número de expediente se establece inicialmente por parámetro en el EntityAppFactory // sino se busca en el item de la entidad principal a partir de su definición if (StringUtils.isEmpty(msExpedient)) { msExpedient = item.getString(mainEntityDef.getKeyNumExp()); } /* // El identificador del procedimiento se establece inicialmente por parámetro en el EntityAppFactory // sino se busca en el item del expediente if (mPcdId == ISPACEntities.ENTITY_NULLREGKEYID) { mPcdId = entitiesAPI.getExpedient(msExpedient).getInt("ID_PCD"); } */ // Obtener los campos obligatorios para la entidad principal EntityDef entityDefinicion = getRequiredData(mainEntityDef); // Obtener la definición de los campos para la entidad principal setFieldDefs(mainEntityDef.getName(), entityDefinicion); }
public List validate(String name, SessionAPI session) throws ISPACException { ArrayList mErrorList = new ArrayList(); ValidationError error = null; if (StringUtils.isBlank(name)) { error = new ValidationError( "property(NEW_CALENDAR_NAME)", "errors.required", new String[] { Messages.getString( session.getClientContext().getAppLanguage(), "form.calendar.propertyLabel.name") }); mErrorList.add(error); } else { IInvesflowAPI invesFlowAPI = session.getAPI(); ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI(); // Bloqueo IItemCollection itemcol = catalogAPI.queryCTEntities(ICatalogAPI.ENTITY_SPAC_CALENDARIOS, ""); // Nombre único de calendario itemcol = (IItemCollection) catalogAPI.queryCTEntities( ICatalogAPI.ENTITY_SPAC_CALENDARIOS, " WHERE NOMBRE = '" + DBUtil.replaceQuotes(name) + "'"); if (itemcol.next()) { error = new ValidationError( "property(NEW_CALENDAR_NAME)", "error.calendar.nameDuplicated", new String[] {name}); mErrorList.add(error); } } return mErrorList; }
/** * Establece los campos requeridos para una entidad a partir de las validaciones de obligatoriedad * de su definición. * * @param entityDef Definición de la entidad. * @return La definición parseada de la entidad. * @throws ISPACException Si se produce algún error. */ public EntityDef getRequiredData(IEntityDef entityDef) throws ISPACException { // Obtener la definición de la entidad String xmlDefinicion = entityDef.getDefinition(); if (!StringUtils.isEmpty(xmlDefinicion)) { // Parsear la definición de la entidad EntityDef entityDefinicion = EntityDef.parseEntityDef(xmlDefinicion); if (entityDefinicion != null) { // Obtener las validaciones List validations = entityDefinicion.getValidations(); if ((validations != null) && (!validations.isEmpty())) { Map fields = entityDefinicion.fieldsToMap(); Iterator it = validations.iterator(); while (it.hasNext()) { // Validación de campo obligatorio EntityValidation entityValidation = (EntityValidation) it.next(); if (entityValidation.isMandatory()) { // Establecer el campo como requerido EntityField field = (EntityField) fields.get(new Integer(entityValidation.getFieldId())); if (field != null) { setRequired(entityDef.getName() + ":" + field.getPhysicalName().toUpperCase()); } } } } } return entityDefinicion; } return null; }
public ActionForward executeAction( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, SessionAPI session) throws Exception { ClientContext cct = session.getClientContext(); // Comprobar si el usuario tiene asignadas las funciones adecuadas FunctionHelper.checkFunctions( request, session.getClientContext(), new int[] {ISecurityAPI.FUNC_COMP_ENTITIES_EDIT}); IInvesflowAPI invesFlowAPI = session.getAPI(); ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI(); Upload2Form upload2Form = (Upload2Form) form; String upload = request.getParameter("upload"); try { if (upload.equals("design")) { FormFile formfile = upload2Form.getUploadFile(); String htmlCode = new String(formfile.getFileData()); if (!StringUtils.isEmpty(htmlCode)) { // Obtener el formulario JSP de la aplicación IItem application = catalogAPI.getCTEntity( ICatalogAPI.ENTITY_CT_APP, Integer.parseInt(upload2Form.getKey())); if (application != null) { List entities = new ArrayList(); // Entidad principal entities.add(application.getString("ENT_PRINCIPAL_NOMBRE")); // Entidades de composición y de relación múltiple String parameters = application.getString("PARAMETROS"); if (!StringUtils.isEmpty(parameters)) { ParametersDef xmlParameters = ParametersDef.parseParametersDef(parameters); List compositeEntities = xmlParameters.getCompositeMultipleRelationEntities(); Iterator it = compositeEntities.iterator(); while (it.hasNext()) { EntityParameterDef entityParameterDef = (EntityParameterDef) it.next(); entities.add(entityParameterDef.getTable()); } } String frm_jsp = application.getString("FRM_JSP"); String jspCode = HTMLBuilder.updateHTML(htmlCode, frm_jsp, entities); if (jspCode != null) { application.set("FRM_JSP", jspCode); // Incrementar la versión del formulario int version = 1; String sVersion = application.getString("FRM_VERSION"); if (!StringUtils.isEmpty(sVersion)) { version += Integer.parseInt(sVersion); } application.set("FRM_VERSION", version); application.store(cct); } } } else { throw new ISPACInfo("exception.uploadfile.empty"); } } else if (upload.equals("code")) { FormFile formfile2 = upload2Form.getUploadFile2(); String jspCode = new String(formfile2.getFileData()); if (!StringUtils.isEmpty(jspCode)) { // Obtener la aplicación IItemCollection itemcol = catalogAPI.queryCTEntities( ICatalogAPI.ENTITY_CT_APP, "where ID =" + upload2Form.getKey()); if (itemcol.next()) { IItem application = itemcol.value(); application.set("FRM_JSP", jspCode); // Incrementar la versión del formulario int version = 1; String sVersion = application.getString("FRM_VERSION"); if (!StringUtils.isEmpty(sVersion)) { version += Integer.parseInt(sVersion); } application.set("FRM_VERSION", version); application.store(cct); } } else { throw new ISPACInfo("exception.uploadfile.empty"); } } } catch (IOException e) { throw new ISPACInfo("exception.uploadfile.error"); } return mapping.findForward("success"); /* request.setAttribute("refresh", "true"); return mapping.findForward("success_upload"); */ }
public boolean isDefaultConnector() { return StringUtils.equalsIgnoreCase(className, defaultImplClass); }
public ActionForward executeAction( 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_INV_DOCTYPES_EDIT, ISecurityAPI.FUNC_INV_TEMPLATES_EDIT}); IInvesflowAPI invesFlowAPI = session.getAPI(); ICatalogAPI catalogAPI = invesFlowAPI.getCatalogAPI(); ITemplateAPI templateAPI = invesFlowAPI.getTemplateAPI(); // Formulario asociado a la acción UploadForm defaultForm = (UploadForm) form; int keyId = Integer.parseInt(defaultForm.getKey()); int entityId = Integer.parseInt(defaultForm.getEntity()); String name = defaultForm.getProperty("NOMBRE"); String code = defaultForm.getProperty("COD_PLANT"); CTTemplate template = null; try { if (keyId == ISPACEntities.ENTITY_NULLREGKEYID) { int type = Integer.parseInt(defaultForm.getProperty("ID_TPDOC")); String expresion = defaultForm.getProperty("EXPRESION"); FormFile fichero = defaultForm.getUploadFile(); EntityApp entityapp = catalogAPI.getCTDefaultEntityApp(entityId, getRealPath("")); // Comprobar si existe otra plantilla con el mismo nombre IItemCollection itemcol = catalogAPI.queryCTEntities( ICatalogAPI.ENTITY_CT_TEMPLATE, " WHERE NOMBRE = '" + DBUtil.replaceQuotes(name) + "'"); if (itemcol.next() && !isGeneric(templateAPI, itemcol)) { ActionMessages errors = new ActionMessages(); errors.add( "property(NOMBRE)", new ActionMessage("error.template.nameDuplicated", new String[] {name})); saveAppErrors(request, errors); return new ActionForward(mapping.getInput()); } // Comprobar si existe otra plantilla con el mismo código if (StringUtils.isNotBlank(code)) { itemcol = catalogAPI.queryCTEntities( ICatalogAPI.ENTITY_CT_TEMPLATE, " WHERE COD_PLANT = '" + DBUtil.replaceQuotes(code) + "'"); if (itemcol.next()) { ActionMessages errors = new ActionMessages(); errors.add( "property(COD_PLANT)", new ActionMessage("error.template.codeDuplicated", new String[] {code})); saveAppErrors(request, errors); return new ActionForward(mapping.getInput()); } } 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(ActionMessages.GLOBAL_MESSAGE, error); } saveAppErrors(request, errors); return new ActionForward(mapping.getInput()); } if (fichero.getFileName().equals("")) { template = templateAPI.newTemplate(type, name, code, 0, expresion, null); } else { if (fichero.getFileSize() > 0) { // Comprobar si el tipo MIME de la plantilla está soportado String mimeType = MimetypeMapping.getFileMimeType(fichero.getFileName()); // Se comprueba si esta habilitado el uso de plantillas ODT if (StringUtils.equals(mimeType, "application/vnd.oasis.opendocument.text") && !ConfigurationMgr.getVarGlobalBoolean( session.getClientContext(), ConfigurationMgr.USE_ODT_TEMPLATES, false)) { throw new ISPACInfo( getResources(request).getMessage("exception.template.odt.disabled")); } if (templateAPI.isMimeTypeSupported(mimeType)) { template = templateAPI.newTemplate( type, name, code, 0, expresion, fichero.getInputStream(), mimeType); } else { throw new ISPACInfo( getResources(request).getMessage("exception.template.document.invalidFile")); } } else { throw new ISPACInfo("exception.uploadfile.empty"); } } } else { EntityApp entityapp = catalogAPI.getCTDefaultEntityApp(entityId, getRealPath("")); // Comprobar si existe otra plantilla con el mismo nombre IItemCollection itemcol = catalogAPI.queryCTEntities( ICatalogAPI.ENTITY_CT_TEMPLATE, " WHERE NOMBRE = '" + DBUtil.replaceQuotes(name) + "' AND ID != " + keyId); if (itemcol.next() && !isGeneric(templateAPI, itemcol)) { ActionMessages errors = new ActionMessages(); errors.add( "property(NOMBRE)", new ActionMessage("error.template.nameDuplicated", new String[] {name})); saveAppErrors(request, errors); return new ActionForward(mapping.getInput()); } // Comprobar si existe otra plantilla con el mismo código if (StringUtils.isNotBlank(code)) { itemcol = catalogAPI.queryCTEntities( ICatalogAPI.ENTITY_CT_TEMPLATE, " WHERE COD_PLANT = '" + DBUtil.replaceQuotes(code) + "' AND ID != " + keyId); if (itemcol.next()) { ActionMessages errors = new ActionMessages(); errors.add( "property(COD_PLANT)", new ActionMessage("error.template.codeDuplicated", new String[] {code})); saveAppErrors(request, errors); return new ActionForward(mapping.getInput()); } } defaultForm.processEntityApp(entityapp); entityapp.getItem().set("FECHA", new Date()); entityapp.store(); } } catch (Exception e) { ActionForward action = mapping.findForward("success"); String url = action.getPath() + "?entity=" + entityId + "&type=" + defaultForm.getProperty("ID_TPDOC") + "&key=" + keyId; request.getSession().setAttribute(BaseAction.LAST_URL_SESSION_KEY, url); if (e instanceof ISPACInfo) { throw e; } else { throw new ISPACInfo(e.getMessage()); } } if (template != null) { keyId = template.getInt("TEMPLATE:ID"); } ActionForward action = mapping.findForward("success"); String redirected = action.getPath() + "?entity=" + entityId + "&type=" + defaultForm.getProperty("ID_TPDOC") + "&key=" + keyId; return new ActionForward(action.getName(), redirected, true); }