/** * @author Iecisa * @version $Revision$ */ public class EdificioDBEntityImpl extends DBEntity implements IEdificioDBEntity { /** Nombre de la Tabla */ public static final String TABLE_NAME = "ASGSEDIFICIO"; /** Identificador */ public static String ID_COLUMN_NAME = "ID"; /** Nombre único en el sistema */ public static String NOMBRE_COLUMN_NAME = "NOMBRE"; /** Dirección del edificio */ public static String UBICACION_COLUMN_NAME = "UBICACION"; /** Identificador del archivo responsable de las salas de este edificio */ public static String IDARCHIVO_COLUMN_NAME = "IDARCHIVO"; public static final DbColumnDef ID_FIELD = new DbColumnDef(null, TABLE_NAME, ID_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, false); public static final DbColumnDef NOMBRE_FIELD = new DbColumnDef(null, TABLE_NAME, NOMBRE_COLUMN_NAME, DbDataType.SHORT_TEXT, 64, false); public static final DbColumnDef UBICACION_FIELD = new DbColumnDef(null, TABLE_NAME, UBICACION_COLUMN_NAME, DbDataType.SHORT_TEXT, 254, true); public static final DbColumnDef IDARCHIVO_FIELD = new DbColumnDef(null, TABLE_NAME, IDARCHIVO_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, false); public static final DbColumnDef[] TABLE_COLUMNS = { ID_FIELD, NOMBRE_FIELD, UBICACION_FIELD, IDARCHIVO_FIELD }; public static final DbColumnDef[] TABLE_COLUMNS_UPDATE = { NOMBRE_FIELD, UBICACION_FIELD, IDARCHIVO_FIELD }; DbColumnDef columnaNombreArchivo = new DbColumnDef( "nombreArchivo", new TableDef(ArchivoDbEntityImpl.TABLE_NAME, ArchivoDbEntityImpl.TABLE_NAME), ArchivoDbEntityImpl.NOMBRE_COLUMN_NAME, ArchivoDbEntityImpl.NOMBRE_FIELD.getDataType(), true); DbColumnDef[] COLS_DEF_QUERY = (DbColumnDef[]) ArrayUtils.concat(TABLE_COLUMNS, new DbColumnDef[] {columnaNombreArchivo}); public static final String COLUM_NAMES_LIST = DbUtil.getColumnNames(TABLE_COLUMNS); /** * Obtiene el nombre de la tabla * * @return */ public String getTableName() { return TABLE_NAME; } /** @param dataSource */ public EdificioDBEntityImpl(DbDataSource dataSource) { super(dataSource); } public EdificioDBEntityImpl(DbConnection conn) { super(conn); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#deleteEdificio(java.lang.String) */ public void deleteEdificio(String idEdificio) { deleteVO(getQualById(idEdificio), TABLE_NAME); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#getEdificioById(java.lang.String) */ public EdificioVO getEdificioById(String idEdificio) { String qual = getQualById(idEdificio); return (EdificioVO) getVO(qual, getJoinCondition(), COLS_DEF_QUERY, EdificioVO.class); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#getEdificioByNombre(java.lang.String) */ public EdificioVO getEdificioByNombre(String nombre) { String qual = getQualByNombre(nombre); return (EdificioVO) getVO(qual, getJoinCondition(), COLS_DEF_QUERY, EdificioVO.class); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#insertEdificio(salas.vos.EdificioVO) */ public void insertEdificio(EdificioVO edificioVO) { edificioVO.setId(getGuid(edificioVO.getId())); insertVO(TABLE_NAME, TABLE_COLUMNS, edificioVO); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#updateEdificio(salas.vos.EdificioVO) */ public void updateEdificio(EdificioVO edificioVO) { updateVO(getQualById(edificioVO.getId()), TABLE_NAME, TABLE_COLUMNS_UPDATE, edificioVO); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#getEdificios(java.lang.String[]) */ public List getEdificiosByIdsArchivo(String[] idsArchivo) { if (ArrayUtils.isNotEmpty(idsArchivo)) { StringBuffer qual = new StringBuffer().append(getQualByIdsArchivo(idsArchivo)).append(getDefaultOrderBy()); return getDistinctVOS(qual.toString(), getJoinCondition(), COLS_DEF_QUERY, EdificioVO.class); } return null; } private String getQualById(String idEdificio) { StringBuffer qual = new StringBuffer(DBUtils.WHERE).append(DBUtils.generateEQTokenField(ID_FIELD, idEdificio)); return qual.toString(); } private String getQualByNombre(String nombre) { StringBuffer qual = new StringBuffer(DBUtils.WHERE).append(DBUtils.generateEQTokenField(NOMBRE_FIELD, nombre)); return qual.toString(); } private String getQualByIdsArchivo(String[] idsArchivo) { StringBuffer qual = new StringBuffer(); if (ArrayUtils.isNotEmpty(idsArchivo)) { qual.append(DBUtils.WHERE).append(DBUtils.generateORTokens(IDARCHIVO_FIELD, idsArchivo)); } return qual.toString(); } private DbColumnDef getColumnaNumHijos(String salasConEquipoInformatico) { StringBuffer subQuery = new StringBuffer(); subQuery .append("(") .append(DBUtils.SELECT) .append(DBUtils.COUNT_ALL) .append(DBUtils.FROM) .append(MesaDBEntityImpl.TABLE_NAME) .append(",") .append(SalaDBEntityImpl.TABLE_NAME) .append(DBUtils.WHERE) .append( DBUtils.generateJoinCondition(SalaDBEntityImpl.ID_FIELD, MesaDBEntityImpl.SALA_FIELD)) .append(DBUtils.AND) .append(DBUtils.generateEQTokenField(MesaDBEntityImpl.ESTADO_FIELD, EstadoMesa.LIBRE)); if (StringUtils.isNotEmpty(salasConEquipoInformatico)) { subQuery .append(DBUtils.AND) .append( DBUtils.generateEQTokenField( SalaDBEntityImpl.EQUIPOINFORMATICO_FIELD, salasConEquipoInformatico)); } subQuery .append(DBUtils.AND) .append(DBUtils.generateJoinCondition(SalaDBEntityImpl.EDIFICIO_FIELD, ID_FIELD)) .append(")"); DbColumnDef columnaNumHijos = new DbColumnDef("NumHijos", subQuery.toString(), DbDataType.SHORT_INTEGER); return columnaNumHijos; } 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(); } private String getJoinCondition() { /* * SELECT ASGSEDIFICIO.*, AGARCHIVO.NOMBRE FROM ASGSEDIFICIO LEFT OUTER * JOIN AGARCHIVO ON AGARCHIVO.ID = ASGSEDIFICIO.IDARCHIVO; */ JoinDefinition join = new JoinDefinition(IDARCHIVO_FIELD, ArchivoDbEntityImpl.ID_FIELD); StringBuffer fromSql = new StringBuffer() .append( DBUtils.generateLeftOuterJoinCondition( new TableDef(TABLE_NAME), new JoinDefinition[] {join})); return fromSql.toString(); } private String getQualByEdificioArchivoEquipoInformatico( String idEdificio, String idArchivo, String equipoInformatico) { StringBuffer qual = new StringBuffer(DBUtils.WHERE).append(DBUtils.generateEQTokenField(ID_FIELD, idEdificio)); if (StringUtils.isNotEmpty(equipoInformatico)) { qual.append(DBUtils.AND) .append( DBUtils.generateEQTokenField( SalaDBEntityImpl.EQUIPOINFORMATICO_FIELD, equipoInformatico)); } qual.append(DBUtils.AND) .append(DBUtils.generateEQTokenField(IDARCHIVO_FIELD, idArchivo)) .append(DBUtils.AND) .append(DBUtils.generateEQTokenField(MesaDBEntityImpl.ESTADO_FIELD, EstadoMesa.LIBRE)) .append(DBUtils.ORDER_BY) .append(MesaDBEntityImpl.SALA_FIELD) .append(Constants.COMMA) .append(MesaDBEntityImpl.NUMORDEN_FIELD); return qual.toString(); } private String getJoinConditionMesasLibres() { JoinDefinition joinEdificio = new JoinDefinition(ID_FIELD, SalaDBEntityImpl.EDIFICIO_FIELD); JoinDefinition joinMesa = new JoinDefinition(SalaDBEntityImpl.ID_FIELD, MesaDBEntityImpl.SALA_FIELD); StringBuffer fromSql = new StringBuffer() .append( DBUtils.generateLeftOuterJoinCondition( new TableDef(TABLE_NAME), new JoinDefinition[] {joinEdificio, joinMesa})); return fromSql.toString(); } private String getDefaultOrderBy() { return DBUtils.generateOrderBy(NOMBRE_FIELD); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#countEdificiosByIdArchivo(java.lang.String) */ public int getCountEdificiosByIdArchivo(String idArchivo) { if (StringUtils.isNotEmpty(idArchivo)) { String[] idsArchivo = new String[] {idArchivo}; return getVOCount(getQualByIdsArchivo(idsArchivo), TABLE_NAME); } else return 0; } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#getEdificios() */ public List getEdificios() { String qual = getDefaultOrderBy(); return getDistinctVOS(qual.toString(), getJoinCondition(), COLS_DEF_QUERY, EdificioVO.class); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#getMesasLibresEdificio(java.lang.String, java.lang.String) */ public List getMesasLibresEdificio(String idArchivo, String salasConEquipoInformatico) { DbColumnDef[] cols = new DbColumnDef[] {ID_FIELD, NOMBRE_FIELD, getColumnaNumHijos(salasConEquipoInformatico)}; StringBuffer qual = new StringBuffer(getQualByNumHijos(idArchivo)).append(getDefaultOrderBy()); return getVOS(qual.toString(), TABLE_NAME, cols, ElementoNavegacionVO.class); } /** * {@inheritDoc} * * @see salas.db.IEdificioDBEntity#getMesasLibresByEdificio(java.lang.String, java.lang.String, * java.lang.String) */ public List getMesasLibresByEdificio( final String idArchivo, final String idSala, final String salasConEquipoInformatico) { /* * SELECT ASGSMESA.* FROM ASGSEDIFICIO LEFT OUTER JOIN ASGSSALA ON * ASGSSALA.IDEDIFICIO=ASGSEDIFICIO.ID LEFT OUTER JOIN ASGSMESA ON * ASGSMESA.IDSALA = ASGSSALA.ID WHERE ASGSEDIFICIO.ID='idEdificio' AND * ASGSMESA.ESTADO='L' AND * ASGSSALA.EQUIPOINFORMATICO='salaConEquipoInformatico' AND * ASGSEDIFICIO.IDARCHIVO='idArchivo' ORDER BY * ASGSSALA.NOMBRE,ASGSMESA.NUMORDEN */ String qual = getQualByEdificioArchivoEquipoInformatico(idSala, idArchivo, salasConEquipoInformatico); return getVOS( qual, getJoinConditionMesasLibres(), MesaDBEntityImpl.TABLE_COLUMNS, MesaVO.class); } }
/** DBEntity para acceder a la tabla ADOCDOCUMENTOCF. */ public class DocDocumentoCFDBEntityImpl extends DBEntity implements IDocDocumentoCFDBEntity { /** Nombre de la tabla. */ public static final String TABLE_NAME = "ADOCDOCUMENTOCF"; /** Nombre de columnas */ public static final String ID_COLUMN_NAME = "id"; public static final String NOMBRE_COLUMN_NAME = "nombre"; public static final String ID_CLF_PADRE_COLUMN_NAME = "idclfpadre"; public static final String ID_ELEMENTO_CF_COLUMN_NAME = "idelementocf"; public static final String TAMANO_FICH_COLUMN_NAME = "tamanofich"; public static final String NOMBRE_ORG_FICH_COLUMN_NAME = "nombreorgfich"; public static final String EXT_FICH_COLUMN_NAME = "extfich"; public static final String ID_EXT_DEPOSITO_COLUMN_NAME = "idextdeposito"; public static final String ID_FICH_COLUMN_NAME = "idfich"; public static final String ESTADO_COLUMN_NAME = "estado"; public static final String DESCRIPCION_COLUMN_NAME = "descripcion"; public static final String ID_REP_ECM_COLUMN_NAME = "idRepEcm"; /** Definiciones de columnas */ public static final DbColumnDef CAMPO_ID = new DbColumnDef(null, TABLE_NAME, ID_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, false); public static final DbColumnDef CAMPO_NOMBRE = new DbColumnDef(null, TABLE_NAME, NOMBRE_COLUMN_NAME, DbDataType.SHORT_TEXT, 128, false); public static final DbColumnDef CAMPO_ID_CLF_PADRE = new DbColumnDef(null, TABLE_NAME, ID_CLF_PADRE_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, true); public static final DbColumnDef CAMPO_ID_ELEMENTO_CF = new DbColumnDef( "idobjeto", TABLE_NAME, ID_ELEMENTO_CF_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, false); public static final DbColumnDef CAMPO_TAMANO_FICH = new DbColumnDef(null, TABLE_NAME, TAMANO_FICH_COLUMN_NAME, DbDataType.LONG_DECIMAL, false); public static final DbColumnDef CAMPO_NOMBRE_ORG_FICH = new DbColumnDef( null, TABLE_NAME, NOMBRE_ORG_FICH_COLUMN_NAME, DbDataType.SHORT_TEXT, 254, false); public static final DbColumnDef CAMPO_EXT_FICH = new DbColumnDef(null, TABLE_NAME, EXT_FICH_COLUMN_NAME, DbDataType.SHORT_TEXT, 16, false); public static final DbColumnDef CAMPO_ID_EXT_DEPOSITO = new DbColumnDef( null, TABLE_NAME, ID_EXT_DEPOSITO_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, false); public static final DbColumnDef CAMPO_ID_FICH = new DbColumnDef(null, TABLE_NAME, ID_FICH_COLUMN_NAME, DbDataType.SHORT_TEXT, 128, false); public static final DbColumnDef CAMPO_ESTADO = new DbColumnDef(null, TABLE_NAME, ESTADO_COLUMN_NAME, DbDataType.LONG_INTEGER, false); public static final DbColumnDef CAMPO_DESCRIPCION = new DbColumnDef(null, TABLE_NAME, DESCRIPCION_COLUMN_NAME, DbDataType.SHORT_TEXT, 254, true); public static final DbColumnDef CAMPO_ID_REP_ECM = new DbColumnDef(null, TABLE_NAME, ID_REP_ECM_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, false); /** Lista de columnas. */ public static final DbColumnDef[] COL_DEFS = { CAMPO_ID, CAMPO_NOMBRE, CAMPO_ID_CLF_PADRE, CAMPO_ID_ELEMENTO_CF, CAMPO_TAMANO_FICH, CAMPO_NOMBRE_ORG_FICH, CAMPO_EXT_FICH, CAMPO_ID_EXT_DEPOSITO, CAMPO_ID_FICH, CAMPO_ESTADO, CAMPO_DESCRIPCION, CAMPO_ID_REP_ECM }; /** Lista de nombres de columnas. */ public static final String COL_NAMES = DbUtil.getColumnNames(COL_DEFS); /** * Obtiene el nombre de la tabla * * @return */ public String getTableName() { return TABLE_NAME; } /** * Constructor. * * @param dataSource Pool de conexiones de base de datos. */ public DocDocumentoCFDBEntityImpl(DbDataSource dataSource) { super(dataSource); } public DocDocumentoCFDBEntityImpl(DbConnection conn) { super(conn); } /** * 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; } /** * Cuenta el número de documentos asociados a un elemento del cuadro de clasificación * * @param idElementoCF Identificador de elemento del cuadro de clasificación * @return Número de documentos asociados al elemento */ public int countNumDocumentos(String idElementoCF) { StringBuffer qual = new StringBuffer("WHERE ") .append(DBUtils.generateEQTokenField(CAMPO_ID_ELEMENTO_CF, idElementoCF)); return getVOCount(qual.toString(), TABLE_NAME); } /** * 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. * @return Listas de documentos electrónicos. */ public List getDocumentos(String idElementoCF) { // 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 (SIN PROBAR - HAY QUE TESTEARLO CON // EL PROCESO BATCH DE BORRAR U.DOC. NO DEVUELTAS ... ¿IMPLEMENTADO? StringBuffer qual = new StringBuffer() .append(" WHERE ") // .append(DBUtils.generateOuterJoinCondition(DepositoElectronicoDBEntityImpl.CAMPO_ID_EXT, // CAMPO_ID_EXT_DEPOSITO)) // .append(" AND ") .append(DBUtils.generateEQTokenField(CAMPO_ID_ELEMENTO_CF, idElementoCF)); 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(), sqlFrom.toString(), COLS_DEF_QUERY, DocDocumentoVO.class); // // List documentos = getVOS(qual.toString(), pairs, // DocDocumentoVO.class); for (int i = 0; i < documentos.size(); i++) ((DocDocumentoVO) documentos.get(i)).setTipoObjeto(TipoObjeto.ELEMENTO_CF); return documentos; } /** * 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; } /** * 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); } /** * Elimina un documento electrónico. * * @param id Identificador del documento electrónico. */ public void deleteDocumento(String id) { String qual = new StringBuffer() .append(" WHERE ") .append(DBUtils.generateEQTokenField(CAMPO_ID, id)) .toString(); deleteVO(qual, TABLE_NAME); } /** * Elimina los documentos de un elemento del cuadro de clasificación. * * @param idElementoCF Identificador del elemento del cuadro de clasificación. */ public void deleteDocumentos(String idElementoCF) { String qual = new StringBuffer() .append(" WHERE ") .append(DBUtils.generateEQTokenField(CAMPO_ID_ELEMENTO_CF, idElementoCF)) .toString(); deleteVO(qual, TABLE_NAME); } /* * (non-Javadoc) * * @see * docelectronicos.db.IDocDocumentoCFDBEntity#getDocumentos(java.lang.String * , int[]) */ public List getDocumentos(String idElementoCF, 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 1=1 "); // .append(DBUtils.generateOuterJoinCondition(DepositoElectronicoDBEntityImpl.CAMPO_ID_EXT, // CAMPO_ID_EXT_DEPOSITO)); if (StringUtils.isNotBlank(idElementoCF)) qual.append(" AND ").append(DBUtils.generateEQTokenField(CAMPO_ID_ELEMENTO_CF, idElementoCF)); 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); // List documentos = getVOS(qual.toString(), pairs, // DocDocumentoVO.class); for (int i = 0; i < documentos.size(); i++) ((DocDocumentoVO) documentos.get(i)).setTipoObjeto(TipoObjeto.ELEMENTO_CF); return documentos; } /* * (non-Javadoc) * * @see docelectronicos.db.IDocDocumentoCFDBEntity#update(java.lang.String, * int[], int) */ public void update(String idObj, int[] estadosAActualizar, int nuevoEstado) { StringBuffer qual = new StringBuffer().append(" WHERE "); if (StringUtils.isNotBlank(idObj)) qual.append(DBUtils.generateEQTokenField(CAMPO_ID_ELEMENTO_CF, idObj)); if ((estadosAActualizar != null) && (estadosAActualizar.length > 0)) qual.append(" AND ").append(DBUtils.generateInTokenField(CAMPO_ESTADO, estadosAActualizar)); HashMap colToUpdate = new HashMap(); colToUpdate.put(CAMPO_ESTADO, new Integer(nuevoEstado)); updateFields(qual.toString(), colToUpdate, TABLE_NAME); } /** * Obtiene el número de documentos almacenados en un depósito electrónico. * * @param idExtDeposito Identificador externo del depósito electrónico. * @return Número de documentos. */ public int getCountDocumentosByIdExtDeposito(String idExtDeposito) { String qual = new StringBuffer() .append(" WHERE ") .append(DBUtils.generateEQTokenField(CAMPO_ID_EXT_DEPOSITO, idExtDeposito)) .toString(); return getVOCount(qual, TABLE_NAME); } /** * 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. * @return Listas de documentos electrónicos. */ public int getCountDocumentosByIdClfPadre(String idElementoCF, String idClfPadre) { int ret = 0; StringBuffer qual = new StringBuffer().append(" WHERE "); if (StringUtils.isNotBlank(idElementoCF)) qual.append(DBUtils.generateEQTokenField(CAMPO_ID_ELEMENTO_CF, idElementoCF)).append(" AND "); qual.append(DBUtils.generateEQTokenField(CAMPO_ID_CLF_PADRE, idClfPadre)); ret = getVOCount(qual.toString(), TABLE_NAME); return ret; } /** * 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 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; } public static String getCountSQL(DbColumnDef columna, String nombreColumna) { /* * SELECT COUNT(1) FROM adocdocumentocf adocdocumentocf WHERE * ELEMENTOCF.id=adocdocumentocf.idelementocf */ StringBuffer sql = new StringBuffer(DBUtils.ABRIR_PARENTESIS) .append(DBUtils.SELECT) .append(DBUtils.getCountDefault()) .append(DBUtils.FROM) .append(new TableDef(TABLE_NAME).getDeclaration()) .append(DBUtils.WHERE) .append(DBUtils.generateEQTokenField1(columna, CAMPO_ID_ELEMENTO_CF)) .append(DBUtils.CERRAR_PARENTESIS) .append(Constants.STRING_SPACE) // .append(nombreColumna) ; return sql.toString(); } /** * {@inheritDoc} * * @see docelectronicos.db.IDocDocumentoCFDBEntity#updateIdElementocf(java.lang.String, * java.lang.String, java.lang.String[]) */ public void updateIdElementocf( String idElementocfAntiguo, String idElementoCfNuevo, String[] idsInternosDocumentos) { StringBuilder qual = new StringBuilder(DBUtils.WHERE) .append(DBUtils.generateEQTokenField(CAMPO_ID_ELEMENTO_CF, idElementocfAntiguo)) .append(DBUtils.AND) .append(DBUtils.generateInTokenField(CAMPO_ID, idsInternosDocumentos)); HashMap colToUpdate = new HashMap(); colToUpdate.put(CAMPO_ID_ELEMENTO_CF, idElementoCfNuevo); updateFields(qual.toString(), colToUpdate, TABLE_NAME); } }
/** DBEntity para acceder a la tabla ASCAUSRGRP. */ public class GrupoUsuarioDBEntityImpl extends DBEntity implements IGrupoUsuarioDBEntity { /** Constantes de mapeo con la base de datos */ public static final String TABLE_NAME = "ASCAUSRGRP"; /** Nombre de columnas */ public static final String ID_USUARIO_COLUMN_NAME = "idusuario"; public static final String ID_GRUPO_COLUMN_NAME = "idgrupo"; /** Definiciones de columna */ public static final DbColumnDef CAMPO_ID_USUARIO = new DbColumnDef(null, TABLE_NAME, ID_USUARIO_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, false); public static final DbColumnDef CAMPO_ID_GRUPO = new DbColumnDef(null, TABLE_NAME, ID_GRUPO_COLUMN_NAME, DbDataType.SHORT_TEXT, 32, false); /** Lista de columnas. */ public static final DbColumnDef[] COL_DEFS = new DbColumnDef[] {CAMPO_ID_USUARIO, CAMPO_ID_GRUPO}; /** Lista de nombres de columnas. */ public static final String COLUM_NAMES_LIST = DbUtil.getColumnNames(COL_DEFS); /** * Obtiene el nombre de la tabla * * @return */ public String getTableName() { return TABLE_NAME; } /** * Constructor. * * @param dataSource Pool de conexiones de base de datos. */ public GrupoUsuarioDBEntityImpl(DbDataSource dataSource) { super(dataSource); } public GrupoUsuarioDBEntityImpl(DbConnection conn) { super(conn); } /** * Obtiene los grupos del usuario. * * @param idUsuario Identificador del usuario. * @return Grupos del usuario. */ public List getGruposUsuario(String idUsuario) { StringBuffer qual = new StringBuffer() .append("WHERE ") .append(DBUtils.generateEQTokenField(CAMPO_ID_USUARIO, idUsuario)) .append(" AND ") .append( DBUtils.generateJoinCondition( TABLE_NAME, CAMPO_ID_GRUPO, GrupoDBEntityImpl.TABLE_NAME, GrupoDBEntityImpl.CAMPO_ID)) .append(" ORDER BY ") .append(GrupoDBEntityImpl.CAMPO_NOMBRE.getName()); HashMap pairsTableNameColsDefs = new HashMap(); pairsTableNameColsDefs.put(TABLE_NAME, new DbColumnDef[0]); pairsTableNameColsDefs.put(GrupoDBEntityImpl.TABLE_NAME, GrupoDBEntityImpl.COL_DEFS); return getVOS(qual.toString(), pairsTableNameColsDefs, GrupoVO.class); } /** * Obtiene los usuarios que pertenecen a un grupo * * @param idGrupo Identificador de grupo * @return Lista de usuarios {@link gcontrol.vos.UsuarioVO} */ public List getUsuariosGrupo(String idGrupo) { StringBuffer qual = new StringBuffer("WHERE ") .append(DBUtils.generateEQTokenField(CAMPO_ID_GRUPO, idGrupo)) .append(" AND ") .append(DBUtils.generateJoinCondition(CAMPO_ID_USUARIO, UsuarioDBEntityImpl.CAMPO_ID)); String[] queryTables = {TABLE_NAME, UsuarioDBEntityImpl.TABLE_NAME}; return getVOS( qual.toString(), ArrayUtils.join(queryTables, ","), UsuarioDBEntityImpl.COL_DEFS, UsuarioVO.class); } /** * Incorpora un usuario a un grupo * * @param idGrupo Identificador de grupo * @param idUsuario Identificador de usuario */ public void insertGrupoUsuario(String idGrupo, String idUsuario) { final GrupoUsuarioVO grupoUsuario = new GrupoUsuarioVO(idUsuario, idGrupo); DBCommand command = new DBCommand(this) { public void codeLogic(DbConnection conn) throws Exception { SigiaDbInputRecord inputRecord = new SigiaDbInputRecord(COL_DEFS, grupoUsuario); DbInsertFns.insert(conn, TABLE_NAME, COLUM_NAMES_LIST, inputRecord); } }; command.execute(); } /** * Elimina un conjunto de usuarios de un grupo * * @param idGrupo Identificador de grupo * @param idUsuario Lista de identificadores de usuario. En caso de ser null se eliminaran todos * los usuarios del grupo */ public void removeGrupoUsuario(String idGrupo, String[] idUsuario) { StringBuffer qual = new StringBuffer("WHERE ").append(DBUtils.generateEQTokenField(CAMPO_ID_GRUPO, idGrupo)); if (idUsuario != null) qual.append(" AND ").append(DBUtils.generateInTokenField(CAMPO_ID_USUARIO, idUsuario)); deleteVO(qual.toString(), TABLE_NAME); } public class GrupoUsuarioVO { String idUsuario = null; String idGrupo = null; GrupoUsuarioVO(String idUsuario, String idGrupo) { super(); this.idUsuario = idUsuario; this.idGrupo = idGrupo; } public String getIdGrupo() { return idGrupo; } public String getIdUsuario() { return idUsuario; } } }