public DocDocumentoVO getDocumentoByIdInterno(String idInterno) { String qual = new StringBuffer() .append(" WHERE ") .append(DBUtils.generateEQTokenField(CAMPO_ID_FICH, idInterno)) .toString(); TableDef tablaDocElectronicos = new TableDef(TABLE_NAME); JoinDefinition[] joins = new JoinDefinition[] { new JoinDefinition( new DbColumnDef(tablaDocElectronicos, CAMPO_ID_EXT_DEPOSITO), new DbColumnDef( new TableDef(DepositoElectronicoDBEntityImpl.TABLE_NAME), DepositoElectronicoDBEntityImpl.CAMPO_ID_EXT)), }; StringBuffer sqlFrom = new StringBuffer(); sqlFrom.append(DBUtils.generateLeftOuterJoinCondition(tablaDocElectronicos, joins)); DbColumnDef[] COLS_DEF_QUERY = (DbColumnDef[]) ArrayUtils.concat( new DbColumnDef[] {DepositoElectronicoDBEntityImpl.CAMPO_NOMBRE}, COL_DEFS); DocDocumentoVO documento = (DocDocumentoVO) getVO(qual, sqlFrom.toString(), COLS_DEF_QUERY, DocDocumentoVO.class); if (documento != null) documento.setTipoObjeto(TipoObjeto.ELEMENTO_CF); return documento; }
/** * Obtiene un Map cuyas claves son los ids de elementos del cuadro y sus valores la lista de * identificadores de documentos electrónicos asociados a una lista de elementos del cuadro de * clasificación. * * @param idsElementosCF Identificador de la lista de ids de elementos del cuadro de * clasificación. * @return Listas de identificadores de documentos electrónicos. */ public Map getDocumentos(List idsElementosCF) { Map idsDocumentos = new HashMap(); StringBuffer qual = new StringBuffer() .append(" WHERE ") .append(DBUtils.generateInTokenField(CAMPO_ID_ELEMENTO_CF, idsElementosCF)); TableDef tablaDocElectronicos = new TableDef(TABLE_NAME); StringBuffer sqlFrom = new StringBuffer().append(tablaDocElectronicos.getDeclaration()); DbColumnDef[] COLS_DEF_QUERY = new DbColumnDef[] {CAMPO_ID_ELEMENTO_CF, CAMPO_ID_FICH}; List documentos = getVOS(qual.toString(), sqlFrom.toString(), COLS_DEF_QUERY, DocDocumentoVO.class); for (int i = 0; i < documentos.size(); i++) { DocDocumentoVO documento = ((DocDocumentoVO) documentos.get(i)); Object obj = idsDocumentos.get(documento.getIdObjeto()); ArrayList elem = null; if (obj != null) elem = (ArrayList) obj; else elem = new ArrayList(); elem.add(documento.getIdFich()); idsDocumentos.put(documento.getIdObjeto(), elem); } return idsDocumentos; }
public void viewDocumentCFExecuteLogic( ActionMapping mappings, ActionForm form, HttpServletRequest request, HttpServletResponse response) { saveCurrentInvocation(KeysClientsInvocations.DOCUMENTOS_ELECTRONICOS_HOME, request); // Leer el identificador del documento String idElemento = request.getParameter(Constants.ID); if (idElemento == null) { idElemento = (String) getFromTemporalSession(request, DocumentosConstants.ACCESO_DOCUMENTOS_IDELEMENTO_KEY); } // Obtener los documentos del elemento if (idElemento != null) { List listaDocumentos = getGestionDocumentosElectronicosBI(request).getDocumentosElementoCuadro(idElemento); if (ListUtils.isNotEmpty(listaDocumentos)) { DocDocumentoVO documento = (DocDocumentoVO) listaDocumentos.get(0); if (documento != null) { String idDocumento = documento.getId(); String paramTipoObjeto = "" + TipoObjeto.ELEMENTO_CF; retrieveCodeLogic( mappings, form, request, response, idDocumento, idElemento, paramTipoObjeto); } else { obtenerErrores(request, true) .add( ActionErrors.GLOBAL_MESSAGE, new ActionError( DocumentosConstants.ERROR_DOC_ELECTRONICOS_DOCUMENTO_NO_ENCONTRADO)); goBackExecuteLogic(mappings, form, request, response); } } else { obtenerErrores(request, true) .add( ActionErrors.GLOBAL_MESSAGE, new ActionError( DocumentosConstants.ERROR_DOC_ELECTRONICOS_DOCUMENTO_NO_ENCONTRADO)); goBackBusquedaExecuteLogic(mappings, form, request, response); } } else { obtenerErrores(request, true) .add( ActionErrors.GLOBAL_MESSAGE, new ActionError(DocumentosConstants.ERROR_DOC_ELECTRONICOS_DOCUMENTO_NO_ENCONTRADO)); goBackBusquedaExecuteLogic(mappings, form, request, response); } }
/** * Modifica un documento electrónico. * * @param documento Documento electrónico. */ public void updateDocumento(DocDocumentoVO documento) { String qual = new StringBuffer() .append(" WHERE ") .append(DBUtils.generateEQTokenField(CAMPO_ID, documento.getId())) .toString(); updateVO(qual, TABLE_NAME, COL_DEFS, documento); }
/** * Obtiene el documento electrónico. * * @param id Identificador del documento electrónico. * @return Documento electrónico. */ public DocDocumentoVO getDocumento(String id) { // HashMap pairs = new HashMap(); // pairs.put(TABLE_NAME,COL_DEFS); // pairs.put(DepositoElectronicoDBEntityImpl.TABLE_NAME, // new DbColumnDef [] { // new DbColumnDef("nombreDeposito", // DepositoElectronicoDBEntityImpl.CAMPO_NOMBRE) }); // TODO ZMIGRACION BD - OUTER JOIN (PROBADO String qual = new StringBuffer() .append(" WHERE ") // .append(DBUtils.generateOuterJoinCondition(DepositoElectronicoDBEntityImpl.CAMPO_ID_EXT, // CAMPO_ID_EXT_DEPOSITO)) // .append(" AND ") .append(DBUtils.generateEQTokenField(CAMPO_ID, id)) .toString(); TableDef tablaDocElectronicos = new TableDef(TABLE_NAME); JoinDefinition[] joins = new JoinDefinition[] { new JoinDefinition( new DbColumnDef(tablaDocElectronicos, CAMPO_ID_EXT_DEPOSITO), new DbColumnDef( new TableDef(DepositoElectronicoDBEntityImpl.TABLE_NAME), DepositoElectronicoDBEntityImpl.CAMPO_ID_EXT)), }; StringBuffer sqlFrom = new StringBuffer(); sqlFrom.append(DBUtils.generateLeftOuterJoinCondition(tablaDocElectronicos, joins)); DbColumnDef[] COLS_DEF_QUERY = (DbColumnDef[]) ArrayUtils.concat( new DbColumnDef[] {DepositoElectronicoDBEntityImpl.CAMPO_NOMBRE}, COL_DEFS); DocDocumentoVO documento = (DocDocumentoVO) getVO(qual, sqlFrom.toString(), COLS_DEF_QUERY, DocDocumentoVO.class); // DocDocumentoVO documento = (DocDocumentoVO) getVO(qual, pairs, // DocDocumentoVO.class); if (documento != null) documento.setTipoObjeto(TipoObjeto.ELEMENTO_CF); return documento; }
/** * Crea un documento electrónico. * * @param documento Documento electrónico. */ public DocDocumentoVO insertDocumento(DocDocumentoVO documento) { documento.setId(getGuid(documento.getId())); insertVO(TABLE_NAME, COL_DEFS, documento); return documento; }
/** * Elimina el documento electrónico. * * @param mapping {@link ActionMapping} con los mapeos asociado. * @param form {@link ActionForm} asociado al action. * @param request {@link HttpServletRequest} * @param response {@link HttpServletResponse} */ protected void removeExecuteLogic( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { logger.info("Inicio de removeExecuteLogic"); // Leer el identificador del documento String id = request.getParameter(Constants.ID); if (logger.isInfoEnabled()) logger.info("Id Documento: " + id); // Leer el identificador del objeto String idObjeto = request.getParameter("idObjeto"); if (logger.isInfoEnabled()) logger.info("Id Objeto: " + idObjeto); // Leer el tipo de objeto int tipoObjeto = TypeConverter.toInt(request.getParameter("tipoObjeto"), TipoObjeto.DESCRIPTOR); if (logger.isInfoEnabled()) logger.info("Tipo Objeto: " + tipoObjeto); // Obtener el servicio GestionDocumentosElectronicosBI documentosBI = getGestionDocumentosElectronicosBI(request); // Obtener la información del documento DocDocumentoVO documento = documentosBI.getDocumento(tipoObjeto, idObjeto, id); DataClfDocYRepEcm dataClfDocYRepEcm = null; try { // Información del objeto if (tipoObjeto == TipoObjeto.DESCRIPTOR) { // Obtener el identificador de la ficha de los clasificadores // por defecto dataClfDocYRepEcm = documentosBI.getIdFichaClfDocYRepEcmDescriptor(idObjeto); if (StringUtils.isEmpty(dataClfDocYRepEcm.getIdRepEcm())) throw new DocElectronicosException( DocElectronicosException .XNO_SE_PUEDE_ELIMINAR_DOCUMENTO_XFALTA_REPOSITORIO_ECM_DESCRIPTOR); } else { dataClfDocYRepEcm = documentosBI.getIdFichaClfDocYRepEcmElementoCF(idObjeto); if (StringUtils.isEmpty(dataClfDocYRepEcm.getIdRepEcm())) throw new DocElectronicosException( DocElectronicosException .XNO_SE_PUEDE_ELIMINAR_DOCUMENTO_XFALTA_REPOSITORIO_ECM_ELEMENTO_CUADRO); } // Eliminar el documento documentosBI.removeDocumento(documento); // Actualizar el árbol de documentos request.setAttribute(DocumentosConstants.REFRESH_VIEW_KEY, Boolean.TRUE); // Volver al clasificador padre setReturnActionFordward( request, redirectForwardMethod( request, "/clasificador", "method", "retrieve" + (documento.getIdClfPadre() != null ? "&id=" + documento.getIdClfPadre() : "") + (documento.getIdObjeto() != null ? "&idObjeto=" + documento.getIdObjeto() : "") + "&tipoObjeto=" + tipoObjeto)); } catch (DocElectronicosException e) { guardarError(request, e); setReturnActionFordward( request, redirectForwardMethod( request, "/documento", "method", "retrieve" + (documento.getId() != null ? "&id=" + documento.getId() : "") + (documento.getIdObjeto() != null ? "&idObjeto=" + documento.getIdObjeto() : "") + "&tipoObjeto=" + documento.getTipoObjeto())); } }
public void retrieveCodeLogic( ActionMapping mappings, ActionForm form, HttpServletRequest request, HttpServletResponse response, String idDocumento, String idObjeto, String paramTipoObjeto) { if (logger.isInfoEnabled()) logger.info("Id Documento: " + idDocumento); ActionErrors errors = getErrors(request, true); // Leer el tipo de objeto int tipoObjeto = TypeConverter.toInt(paramTipoObjeto, -1); if (tipoObjeto < 0) { Integer tipoObjetoInteger = (Integer) getFromTemporalSession(request, DocumentosConstants.OBJECT_TYPE_KEY); tipoObjeto = (tipoObjetoInteger != null ? tipoObjetoInteger.intValue() : TipoObjeto.DESCRIPTOR); } if (logger.isInfoEnabled()) logger.info("Tipo Objeto: " + tipoObjeto); // Leo el parametro para saber si estoy en la descripcion de la ficha de // documentos con enlace interno. int descripcion = TypeConverter.toInt(request.getParameter("descripcion"), -1); ServiceRepository services = ServiceRepository.getInstance(getServiceClient(request)); DocDocumentoVO documento = null; if (StringUtils.isNotBlank(idDocumento)) { // Servicio de gestión de documentos GestionDocumentosElectronicosBI docsBI = services.lookupGestionDocumentosElectronicosBI(); // Leer la información del documento if (descripcion > 0) documento = docsBI.getDocumentoByIdInterno(tipoObjeto, idObjeto, idDocumento); else documento = docsBI.getDocumento(tipoObjeto, idObjeto, idDocumento); if (logger.isInfoEnabled()) logger.info("DocDocumentoVO: " + documento); // Guardar la información del documento ((DocumentoForm) form).set(documento); if (documento != null) { List listaDocumentos = getGestionDocumentosElectronicosBI(request) .getDocumentosVisiblesDesdeCuadro( tipoObjeto, documento.getIdObjeto(), documento.getIdClfPadre()); NavegadorElementosVO navegadorVO = new NavegadorElementosVO(listaDocumentos, documento.getId()); request.setAttribute(DocumentosConstants.NAVEGADOR_DOCUMENTOS_KEY, navegadorVO); } else { errors.add( ActionErrors.GLOBAL_MESSAGE, new ActionError(DocumentosConstants.ERROR_DOC_ELECTRONICOS_DOCUMENTO_NO_ENCONTRADO)); } // Carga la información del documento electrónico. request.setAttribute(DocumentosConstants.FILE_INFO_KEY, docsBI.getInfoFichero(documento)); // Obtener la información del clasificador padre if (StringUtils.isNotBlank(documento.getIdClfPadre())) request.setAttribute( DocumentosConstants.FOLDER_KEY, docsBI.getClasificador(tipoObjeto, idObjeto, documento.getIdClfPadre())); } else { ((DocumentoForm) form).setIdObjeto(idObjeto); ((DocumentoForm) form).setTipoObjeto(tipoObjeto); } // Información del objeto if (tipoObjeto == TipoObjeto.DESCRIPTOR) { request.setAttribute( DocumentosConstants.DESCRIPTOR_KEY, getGestionDescripcionBI(request).getDescriptorExt(idObjeto)); } else // if (tipoObjeto == TipoObjeto.ELEMENTO_CF) { ElementoCuadroClasificacionVO elemento = getGestionCuadroClasificacionBI(request) .getElementoCuadroClasificacion(documento.getIdObjeto()); if (elemento != null) { switch (elemento.getTipo()) { case ElementoCuadroClasificacion.TIPO_UNIDAD_DOCUMENTAL: UnidadDocumentalToPO udocTransformer = new UnidadDocumentalToPO(services); UnidadDocumentalVO udoc = getGestionUnidadDocumentalBI(request).getUnidadDocumental(documento.getIdObjeto()); request.setAttribute( DocumentosConstants.UNIDAD_DOCUMENTAL_KEY, udocTransformer.transform(udoc, getAppUser(request))); break; case ElementoCuadroClasificacion.TIPO_SERIE: SerieToPO serieTransformer = SerieToPO.getInstance(services); SerieVO serie = getGestionSeriesBI(request).getSerie(idObjeto); setInTemporalSession( request, DocumentosConstants.SERIE_KEY, serieTransformer.transform(serie, getAppUser(request))); break; } } else { errors.add( ActionErrors.GLOBAL_MESSAGE, new ActionError(DocumentosConstants.ERROR_DOC_ELECTRONICOS_DOCUMENTO_NO_ENCONTRADO)); } } if (errors != null && !errors.isEmpty()) { ErrorsTag.saveErrors(request, errors); goBackExecuteLogic(mappings, form, request, response); } else { setReturnActionFordward(request, mappings.findForward("ver_documento")); } }