private String getQualByNumHijos(String idArchivo) {
    /*
     * SELECT ASGSEDIFICIO.ID, ASGSEDIFICIO.NOMBRE, (SELECT COUNT(*) FROM
     * ASGSMESA ASGSMESA,ASGSSALA ASGSSALA WHERE ASGSMESA.IDSALA =
     * ASGSSALA.ID AND ASGSMESA.ESTADO='L' AND
     * ASGSSALA.EQUIPOINFORMATICO='equipoInformatico' AND
     * ASGSSALA.IDEDIFICIO = ASGSEDIFICIO.ID ) HIJOSEDIFICIO FROM
     * ASGSEDIFICIO ASGSEDIFICIO WHERE ASGSEDIFICIO.IDARCHIVO='idArchivo'
     * GROUP BY ASGSEDIFICIO.ID, ASGSEDIFICIO.NOMBRE ORDER BY
     * ASGSEDIFICIO.NOMBRE
     */
    StringBuffer qual =
        new StringBuffer(DBUtils.WHERE)
            .append(DBUtils.generateEQTokenField(IDARCHIVO_FIELD, idArchivo))
            .append(DBUtils.GROUPBY)
            .append(ID_FIELD.getQualifiedName())
            .append(", ")
            .append(NOMBRE_FIELD.getQualifiedName());

    return qual.toString();
  }
  /**
   * Obtiene la lista de documentos electrónicos de un elemento del cuadro de clasificación.
   *
   * @param idElementoCF Identificador del elemento del cuadro de clasificación.
   * @param idClfPadre Identificador del clasificador padre.
   * @param estados Lista de estados de los documentos.
   * @return Listas de documentos electrónicos.
   */
  public List getDocumentos(String idElementoCF, String idClfPadre, int[] estados) {

    // 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
    StringBuffer qual = new StringBuffer().append(" WHERE ");
    // .append(DBUtils.generateOuterJoinCondition(
    // DepositoElectronicoDBEntityImpl.CAMPO_ID_EXT,
    // CAMPO_ID_EXT_DEPOSITO))
    // .append(" AND ");

    if (StringUtils.isNotBlank(idElementoCF))
      qual.append(DBUtils.generateEQTokenField(CAMPO_ID_ELEMENTO_CF, idElementoCF)).append(" AND ");

    qual.append(DBUtils.generateEQTokenField(CAMPO_ID_CLF_PADRE, idClfPadre));

    if ((estados != null) && (estados.length > 0))
      qual.append(" AND ").append(DBUtils.generateInTokenField(CAMPO_ESTADO, estados));

    qual.append(" ORDER BY ").append(CAMPO_NOMBRE.getQualifiedName());

    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);

    // List documentos = getVOS(qual.toString(), pairs,
    // DocDocumentoVO.class);
    List documentos =
        getVOS(qual.toString(), sqlFrom.toString(), COLS_DEF_QUERY, DocDocumentoVO.class);
    for (int i = 0; i < documentos.size(); i++)
      ((DocDocumentoVO) documentos.get(i)).setTipoObjeto(TipoObjeto.ELEMENTO_CF);

    return documentos;
  }