/**
  * 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());
 }
    public void getStatementValues(DbOutputStatement stmt) throws Exception {
      HashMap valueHashMap = new HashMap();

      Integer[] posColsIdsInteger = new Integer[posColsIds.length];
      for (int i = 0; i < posColsIds.length; i++) posColsIdsInteger[i] = new Integer(posColsIds[i]);
      HashSet colsIds = new HashSet(CollectionUtils.createList(posColsIdsInteger));

      String[] cadKeyMap = new String[posColsIds.length];
      for (int i = 0; i < colDef.length; i++) {
        Object mapVal = valueGetter[i].extractValue(stmt, i + 1);
        valueHashMap.put(colDef[i].getBindPropertyVO(), mapVal);
        if (colsIds.contains("" + i)) cadKeyMap[i] = mapVal.toString();
      }
      String key = "";
      for (int i = 0; i < posColsIds.length; i++) {
        key += cadKeyMap[i];
        if (i + 1 > posColsIds.length) key += separador;
      }
      values.put(key, valueHashMap);
    }
  private void eliminarUnidadDocumental(UnidadDocumentalVO udoc, Integer motivo) throws Exception {
    // Abrimos la transaccion
    iniciarTransaccion();

    // // TODO Incorporar la udoc al histórico
    // HistoricoUDOCVO historicoUDOC = new HistoricoUDOCVO();
    // historicoUDOC.setCodRefUdoc(udoc.getCodReferencia());
    // historicoUDOC.setIdEliminacion(null); // Error: NOT NULL
    // historicoUDOC.setIdUDOC(udoc.getId());
    // historicoUDOC.setSignaturaUdoc(udoc.getCodigo());
    // historicoUDOC.setTituloUdoc(udoc.getTitulo());
    // historicoUDOC.setNumExpUdoc(udoc.getNumExp());
    // getGestionEliminacionBI().crearHistoricoUDOC( historicoUDOC );

    // Eliminar la descripción
    if (udoc.tieneDescripcion())
      getGestionDescripcionBI().deleteFicha(udoc.getId(), TipoFicha.FICHA_ELEMENTO_CF);

    // Eliminar los documentos electrónicos
    GestionDocumentosElectronicosBI serviceDocumentos = getGestionDocumentosElectronicosBI();
    serviceDocumentos.deleteDocumentos(udoc.getId(), TipoObjeto.ELEMENTO_CF);

    // Eliminamos las referencias a documentos vitales
    getGestionDocumentosVitalesBI()
        .eliminaVinculosExpediente(udoc.getNumExp(), udoc.getCodSistProductor());

    // Eliminar las tareas de captura relacionadas
    serviceDocumentos.eliminarTareas(
        udoc.getId(), ElementoCuadroClasificacion.TIPO_UNIDAD_DOCUMENTAL);

    // Desinstalar la unidad documental
    List partesUdoc = getUdocsEnUI(udoc.getId());
    CollectionUtils.transform(
        partesUdoc,
        new Transformer() {
          public Object transform(Object obj) {
            return ((UDocEnUiDepositoVO) obj).getIduinstalacion();
          }
        });
    desinstalarUnidadDocumental(udoc.getId());

    // Eliminar la unidad documental y el elemento del cuadro
    eliminarUdocBasico(udoc.getId());

    // Comprobar las unidades de instalación distintas
    // y si son vacías las eliminamos.
    int numUnidadesInstalacion = 0;
    // int volumenEliminado = 0;
    double volumenEliminado = 0;
    GestorEstructuraDepositoBI serviceEstructura = getGestorEstructuraDepositoBI();
    for (Iterator itUnidades = partesUdoc.iterator(); itUnidades.hasNext(); ) {
      String idUnidadInstalacion = (String) itUnidades.next();

      List udocsEnUI = getUdocsEnUnidadInstalacion(idUnidadInstalacion);
      if (CollectionUtils.isEmpty(udocsEnUI)) {
        UInsDepositoVO unidadInstalacion = serviceEstructura.getUinsEnDeposito(idUnidadInstalacion);

        FormatoHuecoVO formato =
            serviceEstructura.getFormatoHueco(unidadInstalacion.getIdformato());
        // volumenEliminado += formato.getLongitud().intValue();

        if (formato != null) {
          if (formato.getLongitud() == null
              || formato.getLongitud().doubleValue() == Double.MIN_VALUE)
            volumenEliminado +=
                serviceEstructura.getLongitudHuecosIrregularesXIdUInstalacion(idUnidadInstalacion);
          else volumenEliminado += formato.getLongitud().doubleValue();
        }

        if (unidadInstalacion == null) {
          unidadInstalacion = new UInsDepositoVO();
          unidadInstalacion.setId(idUnidadInstalacion);
        }

        // Obtener el idArchivo
        HuecoVO huecoVO = serviceEstructura.getHuecoUInstalacion(idUnidadInstalacion);

        String idArchivo = null;
        if (huecoVO != null) {
          DepositoVO deposito = serviceEstructura.getUbicacion(huecoVO.getIddeposito());

          if (deposito != null) idArchivo = deposito.getIdArchivo();
        }

        serviceEstructura.deleteUInstDeposito(idArchivo, unidadInstalacion, motivo);
        serviceEstructura.liberaUnidadInstalacion(idUnidadInstalacion);

        numUnidadesInstalacion++;
      }
    }

    // Actualizar los datos de la serie
    GestionSeriesBI serieBI = getGestionSeriesBI();
    serieBI.updateVolumenSerieNoTransaccional(udoc.getIdSerie());
    serieBI.updateContenidoSerieNoTransaccional(udoc.getIdSerie());

    // Cerramos la transaccion
    commit();
  }