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;
  }
Пример #3
0
  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;
 }
Пример #7
0
  /**
   * 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()));
    }
  }
Пример #8
0
  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"));
    }
  }