/**
   * Publica las unidades documentales con acceso restringido que han sobrepasado la fecha de
   * restricción.
   */
  public void publicarUnidadesDocumentales() {
    // Auditoria
    LoggingEvent logEvent = getLogginEvent(ArchivoActions.FONDOS_MODULE_PUBLICACION_ELEMENTO);
    Locale locale = getServiceClient().getLocale();

    // Comprobar permisos
    checkPermission(FondosSecurityManager.PUBLICAR_ELEMENTO_ACTION);

    // Lista de unidades documentales a publicar
    List udocs = _unidadDocumentalDBEntity.getUnidadesDocumentalesPublicacion();

    UnidadDocumentalVO udoc;
    for (int i = 0; i < udocs.size(); i++) {
      udoc = (UnidadDocumentalVO) udocs.get(i);

      iniciarTransaccion();

      // Cambio de nivel de acceso de la unidad documental
      _elementoCuadroClasificacionDBEntity.updateControlAcceso(
          udoc.getIdElementocf(), NivelAcceso.PUBLICO, udoc.getIdLCA());

      // Auditoría
      AuditFondos.addDataLogUpdatePublicacionUdoc(locale, logEvent, udoc);

      if (logger.isDebugEnabled())
        logger.debug("Publicación de la unidad documental con id: " + udoc.getId());

      commit();
    }
  }
  /**
   * Elimina las unidades documentales prestadas que no han sido devueltas tras dos reclamaciones.
   *
   * @throws Exception
   */
  public void eliminarUnidadesDocumentalesPrestadasNoDevueltas() throws Exception {
    // Auditoria
    LoggingEvent logEvent = getLogginEvent(ArchivoActions.FONDOS_MODULE_BAJA_ELEMENTO);
    Locale locale = getServiceClient().getLocale();

    // Comprobar permisos
    checkPermission(FondosSecurityManager.ELIMINACION_ELEMENTO_ACTION);

    // Lista de unidades documentales a publicar
    List udocs = _unidadDocumentalDBEntity.getUnidadesDocumentalesPrestadasNoDevueltas();

    // Eliminar las unidades documentales
    UnidadDocumentalVO udoc;
    for (int i = 0; i < udocs.size(); i++) {
      udoc = (UnidadDocumentalVO) udocs.get(i);

      iniciarTransaccion();

      // Eliminar la unidad documental
      eliminarUnidadDocumental(udoc, MotivoEliminacionUnidadInstalacion.WS_PRESTADAS_NO_DEVUELTAS);

      // Auditoría
      AuditFondos.addDataLogRemove(locale, logEvent, udoc, null);

      if (logger.isDebugEnabled())
        logger.debug("Eliminación de la unidad documental con id: " + udoc.getId());

      commit();
    }
  }
 /**
  * Obtiene la unidad documental en el cuadro de clasificacion en la que se ha integrado la unidad
  * documental proveniente de relacion de entrega que se indica
  *
  * @param id
  * @return
  */
 public UnidadDocumentalVO getUdocXUdocEnTransferencia(String idUdocEnRelacionEntrega) {
   List signaturasUdoc =
       _udocDepositoDBEntity.getPartesUdocByIDUdocEnRelacionEntrega(idUdocEnRelacionEntrega);
   if (CollectionUtils.isEmpty(signaturasUdoc)) return null;
   UDocEnUiDepositoVO signaturaUdoc = (UDocEnUiDepositoVO) signaturasUdoc.get(0);
   return _unidadDocumentalDBEntity.getUnidadDocumental(signaturaUdoc.getIdunidaddoc());
 }
 /**
  * Obtiene la unidad documental que se corresponde con un número de expediente
  *
  * @param numeroExpediente Número de expediente
  * @return Datos de unidad documental
  */
 public UnidadDocumentalVO getUdocByNumeroExpediente(String numeroExpediente) {
   String[] numExpediente = {numeroExpediente};
   List udocs = _unidadDocumentalDBEntity.getUnidadDocumentalXNumeroExpediente(numExpediente);
   UnidadDocumentalVO udoc = null;
   if (udocs.size() > 0) udoc = (UnidadDocumentalVO) udocs.get(0);
   return udoc;
 }
  public UnidadDocumentalVO getUdocXUdocEnDivisionFS(String idUdocEnDivisionFS) {
    UnidadDocumentalVO udoc = null;

    UDocEnUiDepositoVO udocEnUiDepositoVO =
        _udocDepositoDBEntity.getUdocByIDUdocEnDivisionFS(idUdocEnDivisionFS);
    if (udocEnUiDepositoVO != null)
      udoc = _unidadDocumentalDBEntity.getUnidadDocumental(udocEnUiDepositoVO.getIdunidaddoc());

    return udoc;
  }
  private void eliminarUdocBasico(String idUdoc) {
    iniciarTransaccion();

    // Eliminamos la udoc
    _unidadDocumentalDBEntity.deleteUnidadDocumental(idUdoc);

    // Eliminamos el elemento del cuadro
    _elementoCuadroClasificacionDBEntity.deleteElementoCF(idUdoc);

    commit();
  }
 /**
  * Actualiza los campos de la tabla de Unidades Documentales en el cuadro de clasificación que es
  * necesario modificar durante la validación
  *
  * @param idUnidadDocumental
  * @param columnsToUpdate
  */
 public void updateFieldsUDocCFVEA(UnidadDocumentalVO uDoc) {
   _unidadDocumentalDBEntity.updateFieldsUDocCFVEA(uDoc);
 }
 public int getNumUdocsUISerie(String idSerie, String idUnidadInstalacion) {
   return _unidadDocumentalDBEntity.getNumUdocsUISerie(idSerie, idUnidadInstalacion);
 }
 /*
  * (non-Javadoc)
  *
  * @see
  * common.bi.GestionUnidadDocumentalBI#getUnidadDocumental(java.lang.String
  * [])
  */
 public List getUnidadDocumental(String[] idsElemento) {
   return _unidadDocumentalDBEntity.getUnidadesDocumentales(idsElemento);
 }
 public HashMap getUdocNumCambiosVolumenSerie(List idsUdocs) {
   return _unidadDocumentalDBEntity.getUdocNumCambiosVolumenSerie(idsUdocs);
 }
 public UnidadDocumentalVO getTuplaUnidadDocumental(String idElemento) {
   return _unidadDocumentalDBEntity.getTuplaUnidadDocumental(idElemento);
 }
 public List getRangosUdoc(String idUDoc, String idCampoInicial, String idCampoFinal) {
   return _unidadDocumentalDBEntity.getRangosUDoc(idUDoc, idCampoInicial, idCampoFinal);
 }
 public void updateNumeroExpediente(String idUnidadDocumental, String numExpediente) {
   _unidadDocumentalDBEntity.updateNumeroExpediente(idUnidadDocumental, numExpediente);
 }
 /**
  * Obtiene las números de expediente que están en el cuadro de clasificación de entre la lista que
  * se pasa como parámetro
  *
  * @param numerosExpedientes Conjunto de números de expediente
  * @return Lista de números de expediente
  */
 public List findNumerosExpediente(String[] numerosExpediente) {
   return _unidadDocumentalDBEntity.findNumerosExpediente(numerosExpediente);
 }
 /**
  * Obtiene las unidades documentales constituidas por los expedientes cuyos números se indican
  *
  * @param numeroExpediente Conjunto de números de expediente
  * @return Lista de unidades documentales {@link UnidadDocumentalVO}
  */
 public List getUdocsByNumeroExpediente(String[] numeroExpediente) {
   return _unidadDocumentalDBEntity.getUnidadDocumentalXNumeroExpediente(numeroExpediente);
 }
  public UnidadDocumentalVO crearUnidadDocumental(
      SerieVO serie,
      ValoracionSerieVO valoracion,
      INivelCFVO nivelUnidadDocumental,
      String codigoUdoc,
      transferencias.vos.UnidadDocumentalVO infoUnidadDocumental,
      Map.Entry sistemaProductor,
      String tipoDocumental,
      String idLCAPref,
      String idArchivo,
      boolean comprobarPermisos,
      boolean isUnidadElectronica) {

    // Auditoria
    LoggingEvent logEvent = AuditFondos.getLogginEventAlta(this);
    Locale locale = getServiceClient().getLocale();

    if (comprobarPermisos) checkPermission(FondosSecurityManager.ALTA_ELEMENTO_ACTION);
    ElementoCuadroClasificacionVO elementoCF = new ElementoCuadroClasificacion();
    elementoCF.setCodigo(codigoUdoc);
    elementoCF.setTitulo(infoUnidadDocumental.getAsunto());
    elementoCF.setIdPadre(serie.getId());
    elementoCF.setIdNivel(nivelUnidadDocumental.getId());
    elementoCF.setIdFichaDescr(nivelUnidadDocumental.getIdFichaDescrPref());
    elementoCF.setTipo(TipoNivelCF.UNIDAD_DOCUMENTAL.getIdentificador());
    ConfiguracionFondos configuracionFondos =
        ConfiguracionSistemaArchivoFactory.getConfiguracionSistemaArchivo()
            .getConfiguracionFondos();
    StringBuffer codigoReferenciaUdoc =
        new StringBuffer(serie.getCodReferencia())
            .append(configuracionFondos.getDelimitadorCodigoReferencia())
            .append(codigoUdoc);
    elementoCF.setIdFondo(serie.getIdFondo());
    elementoCF.setCodRefFondo(serie.getCodRefFondo());
    elementoCF.setCodReferencia(codigoReferenciaUdoc.toString());
    elementoCF.setEstado(IElementoCuadroClasificacion.VIGENTE);
    elementoCF.setIdLCA(idLCAPref);
    elementoCF.setNivelAcceso(getNivelAcceso(infoUnidadDocumental, valoracion));
    elementoCF.setIdArchivo(idArchivo);
    String fichaDescripcionUdoc = nivelUnidadDocumental.getIdFichaDescrPref();
    String idRepEcmUdoc = nivelUnidadDocumental.getIdRepEcmPref();

    String fichaDescripcionPrefUDoc = serie.getIdFichaDescrPrefUdoc(nivelUnidadDocumental.getId());
    String idRepEcmPrefUDoc = serie.getIdRepEcmPrefUdoc(nivelUnidadDocumental.getId());

    // Si la serie tiene definidos listas de volúmenes y ficha preferente
    // para las u.docs., usar estas
    if (fichaDescripcionPrefUDoc != null) fichaDescripcionUdoc = fichaDescripcionPrefUDoc;

    if (idRepEcmPrefUDoc != null) idRepEcmUdoc = idRepEcmPrefUDoc;

    elementoCF.setIdFichaDescr(fichaDescripcionUdoc);
    elementoCF.setIdRepEcm(idRepEcmUdoc);
    elementoCF.setTienedescr(Constants.FALSE_STRING);
    elementoCF.setEditClfDocs(Constants.FALSE_STRING);

    // Si no está activada la distinción de mayúsculas/minúsculas, no hacer
    // el toUpper
    if (!ConfigConstants.getInstance().getDistinguirMayusculasMinusculas())
      elementoCF.setTitulo(elementoCF.getTitulo().toUpperCase());

    elementoCF.setSubtipo(nivelUnidadDocumental.getSubtipo());

    iniciarTransaccion();

    // Auditoria
    AuditFondos.addDataLogAlta(
        locale, logEvent, elementoCF, nivelUnidadDocumental.getNombre(), serie.getCodReferencia());
    elementoCF = _elementoCuadroClasificacionDBEntity.insertElementoCF(elementoCF);

    IUnidadDocumental unidadDocumental = new UnidadDocumental(elementoCF);
    unidadDocumental.setCodSistProductor(infoUnidadDocumental.getCodSistProductor());
    unidadDocumental.setNumExp(infoUnidadDocumental.getNumeroExpediente());
    unidadDocumental.setTipoDocumental(tipoDocumental);
    unidadDocumental.setMarcasBloqueo(infoUnidadDocumental.getMarcasBloqueo());
    unidadDocumental =
        (IUnidadDocumental) _unidadDocumentalDBEntity.insertUnidadDocumental(unidadDocumental);

    // Si es una unidad Electrónica

    if (isUnidadElectronica) {
      UnidadDocumentalElectronicaVO unidadDocumentalElectronica =
          new UnidadDocumentalElectronicaVO(elementoCF.getId());

      _unidadDocumentalElectroncaDBEntity.insertRow(unidadDocumentalElectronica);
    }

    commit();

    return unidadDocumental;
  }