Java tutorial
/* * Copyright (C) 2008, EGT Consultores, C.A. * * Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los trminos * de la licencia "GNU General Public License" publicada por la Fundacin "Free Software Foundation". * * Este programa se distribuye con la esperanza de que pueda ser til, pero SIN NINGUNA GARANTIA; * vea la licencia "GNU General Public License" para obtener cursor informacion. * */ package com.egt.core.db.xdp; import com.egt.base.constants.CBM2; import com.egt.base.enums.EnumOperadorCom; import com.egt.base.util.BundleSegmentos; import com.egt.commons.util.BitUtils; import com.egt.commons.util.LongUtils; import com.egt.core.aplicacion.Bitacora; import com.egt.core.aplicacion.ExcepcionAplicacion; import com.egt.core.aplicacion.FiltroBusqueda; import com.egt.core.aplicacion.OrdenConjuntoResultados; import com.egt.core.aplicacion.TLC; import com.egt.core.constants.DBC; import com.egt.core.constants.EAC; import com.egt.core.constants.Global; import com.egt.core.db.util.DB; import com.egt.core.db.util.DBUtils; import com.egt.core.db.util.InterpreteSql; import com.egt.core.enums.EnumColumnaEtiqueta; import com.egt.core.enums.EnumOpcionZumNodo; import com.egt.core.jsf.JSF; import com.egt.core.util.EA; import com.egt.core.util.STP; import com.sun.data.provider.DataProviderException; import com.sun.data.provider.FieldKey; import com.sun.data.provider.RowKey; import com.sun.data.provider.TableCursorVetoException; import com.sun.data.provider.TableDataAdapter; import com.sun.data.provider.TableDataProvider; import com.sun.data.provider.impl.CachedRowSetDataProvider; import com.sun.data.provider.impl.TableRowDataProvider; import com.sun.sql.rowset.CachedRowSetX; import java.math.BigDecimal; import java.math.BigInteger; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; import javax.sql.rowset.CachedRowSet; import javax.sql.rowset.spi.SyncResolver; import org.apache.commons.lang.StringUtils; public class RecursoCachedRowSetDataProvider extends CachedRowSetDataProvider { /** * Conserva el valor de la propiedad filasElegidas. */ private Set filasElegidas = new LinkedHashSet(); /** * Creates a new instance of RecursoCachedRowSetDataProvider */ public RecursoCachedRowSetDataProvider() { super(); this.init(); } /** * Creates a new instance of RecursoCachedRowSetDataProvider */ public RecursoCachedRowSetDataProvider(CachedRowSet cachedRowSet) { super(cachedRowSet); this.init(); } /** * {@inheritDoc} */ @Override public void setCachedRowSet(CachedRowSet cachedRowSet) { super.setCachedRowSet(cachedRowSet); } /** * {@inheritDoc} */ @Override public boolean isRowAvailable(RowKey row) throws DataProviderException { return row == null ? false : super.isRowAvailable(row); } private void init() { super.addTableDataListener(new TableDataAdapter() { @Override public void valueChanged(TableDataProvider tdp, FieldKey fk, RowKey rk, Object o3, Object o4) { recursoCachedRowSetDataProvider_valueChanged(tdp, fk, rk, o3, o4); } }); } // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a interfaces"> public boolean isRecursoIdentificable() { return this instanceof RecursoIdentificableDataProvider && StringUtils .isNotBlank(((RecursoIdentificableDataProvider) this).getColumnaIdentificacionRecurso()); } public boolean isRecursoVersionable() { return this instanceof RecursoVersionableDataProvider && StringUtils.isNotBlank(((RecursoVersionableDataProvider) this).getColumnaVersionRecurso()); } public boolean isRecursoCodificable() { return this instanceof RecursoCodificableDataProvider && StringUtils.isNotBlank(((RecursoCodificableDataProvider) this).getColumnaCodigoRecurso()); } public boolean isRecursoNombrable() { return this instanceof RecursoNombrableDataProvider && StringUtils.isNotBlank(((RecursoNombrableDataProvider) this).getColumnaNombreRecurso()); } public boolean isRecursoPersonalizable() { return this instanceof RecursoPersonalizableDataProvider && StringUtils .isNotBlank(((RecursoPersonalizableDataProvider) this).getColumnaPropietarioRecurso()); } public boolean isRecursoSegmentable() { return this instanceof RecursoSegmentableDataProvider && StringUtils.isNotBlank(((RecursoSegmentableDataProvider) this).getColumnaSegmentoRecurso()); } public boolean isRecursoJerarquizable() { return this instanceof RecursoJerarquizableDataProvider && StringUtils.isNotBlank(((RecursoJerarquizableDataProvider) this).getColumnaRecursoSuperior()); } public boolean isRecursoDesactivable() { return this instanceof RecursoDesactivableDataProvider && StringUtils.isNotBlank(((RecursoDesactivableDataProvider) this).getColumnaEsRecursoInactivo()); } public boolean isRecursoEnumerable() { return this instanceof RecursoEnumerableDataProvider && StringUtils.isNotBlank(((RecursoEnumerableDataProvider) this).getColumnaNumeroRecurso()); } public boolean isRecursoLocalizable() { return this instanceof RecursoLocalizableDataProvider; } public boolean isRecursoConsultable() { return this instanceof RecursoConsultableDataProvider; } public RecursoIdentificableDataProvider getRecursoIdentificableDataProvider() { return this.isRecursoIdentificable() ? (RecursoIdentificableDataProvider) this : null; } public RecursoVersionableDataProvider getRecursoVersionableDataProvider() { return this.isRecursoVersionable() ? (RecursoVersionableDataProvider) this : null; } public RecursoCodificableDataProvider getRecursoCodificableDataProvider() { return this.isRecursoCodificable() ? (RecursoCodificableDataProvider) this : null; } public RecursoNombrableDataProvider getRecursoNombrableDataProvider() { return this.isRecursoNombrable() ? (RecursoNombrableDataProvider) this : null; } public RecursoPersonalizableDataProvider getRecursoPersonalizableDataProvider() { return this.isRecursoPersonalizable() ? (RecursoPersonalizableDataProvider) this : null; } public RecursoSegmentableDataProvider getRecursoSegmentableDataProvider() { return this.isRecursoSegmentable() ? (RecursoSegmentableDataProvider) this : null; } public RecursoJerarquizableDataProvider getRecursoJerarquizableDataProvider() { return this.isRecursoJerarquizable() ? (RecursoJerarquizableDataProvider) this : null; } public RecursoDesactivableDataProvider getRecursoDesactivableDataProvider() { return this.isRecursoDesactivable() ? (RecursoDesactivableDataProvider) this : null; } public RecursoEnumerableDataProvider getRecursoEnumerableDataProvider() { return this.isRecursoEnumerable() ? (RecursoEnumerableDataProvider) this : null; } public RecursoLocalizableDataProvider getRecursoLocalizableDataProvider() { return this.isRecursoLocalizable() ? (RecursoLocalizableDataProvider) this : null; } public RecursoConsultableDataProvider getRecursoConsultableDataProvider() { return this.isRecursoConsultable() ? (RecursoConsultableDataProvider) this : null; } public Long getIdentificacionRecurso() { return this.isRecursoIdentificable() ? this.getRecursoIdentificableDataProvider().getIdentificacionRecurso() : null; } public Long getIdentificacionRecurso(RowKey rowKey) { return this.isRecursoIdentificable() ? this.getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey) : null; } public Long getVersionRecurso() { return this.isRecursoVersionable() ? this.getRecursoVersionableDataProvider().getVersionRecurso() : null; } public Long getVersionRecurso(RowKey rowKey) { return this.isRecursoVersionable() ? this.getRecursoVersionableDataProvider().getVersionRecurso(rowKey) : null; } public String getCodigoRecurso() { return this.isRecursoCodificable() ? this.getRecursoCodificableDataProvider().getCodigoRecurso() : null; } public String getCodigoRecurso(RowKey rowKey) { return this.isRecursoCodificable() ? this.getRecursoCodificableDataProvider().getCodigoRecurso(rowKey) : null; } public String getNombreRecurso() { return this.isRecursoNombrable() ? this.getRecursoNombrableDataProvider().getNombreRecurso() : null; } public String getNombreRecurso(RowKey rowKey) { return this.isRecursoNombrable() ? this.getRecursoNombrableDataProvider().getNombreRecurso(rowKey) : null; } public Long getPropietarioRecurso() { return this.isRecursoPersonalizable() ? this.getRecursoPersonalizableDataProvider().getPropietarioRecurso() : null; } public Long getPropietarioRecurso(RowKey rowKey) { return this.isRecursoPersonalizable() ? this.getRecursoPersonalizableDataProvider().getPropietarioRecurso(rowKey) : null; } public Long getSegmentoRecurso() { return this.isRecursoSegmentable() ? this.getRecursoSegmentableDataProvider().getSegmentoRecurso() : null; } public Long getSegmentoRecurso(RowKey rowKey) { return this.isRecursoSegmentable() ? this.getRecursoSegmentableDataProvider().getSegmentoRecurso(rowKey) : null; } public Long getRecursoSuperior() { return this.isRecursoJerarquizable() ? this.getRecursoJerarquizableDataProvider().getRecursoSuperior() : null; } public Long getRecursoSuperior(RowKey rowKey) { return this.isRecursoJerarquizable() ? this.getRecursoJerarquizableDataProvider().getRecursoSuperior(rowKey) : null; } public Integer getEsRecursoInactivo() { return this.isRecursoDesactivable() ? this.getRecursoDesactivableDataProvider().getEsRecursoInactivo() : null; } public Integer getEsRecursoInactivo(RowKey rowKey) { return this.isRecursoDesactivable() ? this.getRecursoDesactivableDataProvider().getEsRecursoInactivo(rowKey) : null; } public Integer getNumeroRecurso() { return this.isRecursoEnumerable() ? this.getRecursoEnumerableDataProvider().getNumeroRecurso() : null; } public Integer getNumeroRecurso(RowKey rowKey) { return this.isRecursoEnumerable() ? this.getRecursoEnumerableDataProvider().getNumeroRecurso(rowKey) : null; } public String getUrl() { return this.isRecursoLocalizable() ? this.getRecursoLocalizableDataProvider().getUrl() : null; } public String getUrl(RowKey rowKey) { return this.isRecursoLocalizable() ? this.getRecursoLocalizableDataProvider().getUrl(rowKey) : null; } public long getFuncionConsultarRecurso() { return this.isRecursoConsultable() ? this.getRecursoConsultableDataProvider().getFuncionConsultarRecurso() : null; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="Getters y Setters de propiedades propias"> /** * Getter para propiedad filasElegidas. * * @return Valor de la propiedad filasElegidas. */ public Set getFilasElegidas() { return this.filasElegidas; } public boolean esFilaElegida(TableRowDataProvider tableRowDataProvider) { return tableRowDataProvider != null && this.esFilaElegida(tableRowDataProvider.getTableRow()); } public boolean esFilaElegida(RowKey rowKey) { return rowKey != null && this.getFilasElegidas().contains(rowKey); } public void eligeFila(TableRowDataProvider tableRowDataProvider, boolean eleccion) { if (tableRowDataProvider != null) { this.eligeFila(tableRowDataProvider.getTableRow(), eleccion); } } public void eligeFila(RowKey rowKey, boolean eleccion) { if (eleccion) { this.getFilasElegidas().add(rowKey); } else { this.getFilasElegidas().remove(rowKey); } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="Getters y Setters de propiedades de RecursoCachedRowSet"> /** * Getter para propiedad recursoCachedRowSetXImpl. * * @return Valor de la propiedad recursoCachedRowSetXImpl. */ public RecursoCachedRowSet getRecursoCachedRowSet() { CachedRowSet crs = this.getCachedRowSet(); return crs instanceof RecursoCachedRowSet ? (RecursoCachedRowSet) crs : null; } /** * Getter para propiedad inicializado. * * @return Valor de la propiedad inicializado. */ public boolean isInicializado() { return this.getRecursoCachedRowSet() == null ? false : this.getRecursoCachedRowSet().isInicializado(); } /** * Setter para propiedad inicializado. * * @param inicializado Nuevo valor de la propiedad inicializado. */ protected void setInicializado(boolean inicializado) { if (this.getRecursoCachedRowSet() != null) { this.getRecursoCachedRowSet().setInicializado(inicializado); } } /** * Getter para propiedad soloReferencia. * * @return Valor de la propiedad soloReferencia. */ public boolean isSoloReferencia() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isSoloReferencia(); } /** * Setter para propiedad soloReferencia. * * @param soloReferencia Nuevo valor de la propiedad soloReferencia. */ public void setSoloReferencia(boolean soloReferencia) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setSoloReferencia(soloReferencia); } } /** * Getter para propiedad filaEscogida. * * @return Valor de la propiedad filaEscogida. */ public RowKey getFilaEscogida() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getFilaEscogida(); } /** * Setter para propiedad filaEscogida. * * @param filaElegida Nuevo valor de la propiedad filaEscogida. */ public void setFilaEscogida() { // Bitacora.trace(this.getClass(), "setFilaEscogida"); if (this.isInicializado()) { try { if (this.isCursorRowAvailable()) { this.setFilaEscogida(this.getCursorRow()); } else { this.resetFilaEscogida(); } } catch (Exception ex) { this.resetFilaEscogida(); } } } /** * Setter para propiedad filaEscogida. * * @param filaElegida Nuevo valor de la propiedad filaEscogida. */ public void setFilaEscogida(RowKey rowKey) { Bitacora.trace(this.getClass(), "setFilaEscogida", "RowKey=" + rowKey); if (this.isInicializado() && this.isRowAvailable(rowKey)) { this.getRecursoCachedRowSet().setFilaEscogida(rowKey); Long identificacion = null; if (this.isRecursoIdentificable()) { identificacion = this.getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey); } this.setIdentificacionFilaEscogida(identificacion); Integer numero = null; if (this.isRecursoEnumerable()) { numero = this.getRecursoEnumerableDataProvider().getNumeroRecurso(rowKey); } this.setNumeroFilaEscogida(numero); String codigo = null; if (this.isRecursoCodificable()) { codigo = this.getRecursoCodificableDataProvider().getCodigoRecurso(rowKey); } this.setCodigoFilaEscogida(codigo); Bitacora.trace(this.getClass(), "setFilaEscogida", "RowKey=" + rowKey, "identificacion=" + identificacion, "numero=" + numero, "codigo=" + codigo); } else { this.resetFilaEscogida(); } } /** * Setter para propiedad filaEscogida. * * @param filaElegida Nuevo valor de la propiedad filaEscogida. */ protected void resetFilaEscogida() { // Bitacora.trace(this.getClass(), "resetFilaEscogida"); if (this.isInicializado()) { this.getRecursoCachedRowSet().setFilaEscogida(null); this.getRecursoCachedRowSet().setIdentificacionFilaEscogida(null); this.getRecursoCachedRowSet().setCodigoFilaEscogida(null); } } public boolean esFilaEscogida(RowKey rowKey) { RowKey filaEscogida = !this.isInicializado() ? null : this.getRecursoCachedRowSet().getFilaEscogida(); return filaEscogida != null && rowKey != null && rowKey.equals(filaEscogida); } /** * Getter para propiedad identificacionFilaEscogida. * * @return Valor de la propiedad identificacionFilaEscogida. */ protected Long getIdentificacionFilaEscogida() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getIdentificacionFilaEscogida(); } /** * Setter para propiedad identificacionFilaEscogida. * * @param identificacionFilaEscogida Nuevo valor de la propiedad identificacionFilaEscogida. */ protected void setIdentificacionFilaEscogida(Long identificacionFilaEscogida) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setIdentificacionFilaEscogida(identificacionFilaEscogida); } } /** * Getter para propiedad numeroFilaEscogida. * * @return Valor de la propiedad numeroFilaEscogida. */ protected Integer getNumeroFilaEscogida() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getNumeroFilaEscogida(); } /** * Setter para propiedad numeroFilaEscogida. * * @param numeroFilaEscogida Nuevo valor de la propiedad numeroFilaEscogida. */ protected void setNumeroFilaEscogida(Integer numeroFilaEscogida) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setNumeroFilaEscogida(numeroFilaEscogida); } } /** * Getter para propiedad codigoFilaEscogida. * * @return Valor de la propiedad codigoFilaEscogida. */ protected String getCodigoFilaEscogida() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getCodigoFilaEscogida(); } /** * Setter para propiedad codigoFilaEscogida. * * @param codigoFilaEscogida Nuevo valor de la propiedad codigoFilaEscogida. */ protected void setCodigoFilaEscogida(String codigoFilaEscogida) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setCodigoFilaEscogida(codigoFilaEscogida); } } /** * Getter para propiedad tablaMaestro. * * @return Valor de la propiedad tablaMaestro. */ public String getTablaMaestro() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getTablaMaestro(); } /** * Setter para propiedad tablaMaestro. * * @param tablaMaestro Nuevo valor de la propiedad tablaMaestro. */ public void setTablaMaestro(String tablaMaestro) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setTablaMaestro(tablaMaestro); } } /** * Getter para propiedad columnaMaestro. * * @return Valor de la propiedad columnaMaestro. */ public String getColumnaMaestro() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getColumnaMaestro(); } /** * Setter para propiedad columnaMaestro. * * @param columnaMaestro Nuevo valor de la propiedad columnaMaestro. */ public void setColumnaMaestro(String columnaMaestro) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setColumnaMaestro(columnaMaestro); } } /** * Getter para propiedad columnaMaestroAnterior. * * @return Valor de la propiedad columnaMaestroAnterior. */ public String getColumnaMaestroAnterior() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getColumnaMaestroAnterior(); } /** * Setter para propiedad columnaMaestroAnterior. * * @param columnaMaestroAnterior Nuevo valor de la propiedad columnaMaestroAnterior. */ public void setColumnaMaestroAnterior(String columnaMaestroAnterior) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setColumnaMaestroAnterior(columnaMaestroAnterior); } } /** * Getter para propiedad identificacionMaestro. * * @return Valor de la propiedad identificacionMaestro. */ public Long getIdentificacionMaestro() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getIdentificacionMaestro(); } /** * Setter para propiedad identificacionMaestro. * * @param identificacionMaestro Nuevo valor de la propiedad identificacionMaestro. */ public void setIdentificacionMaestro(Long identificacionMaestro) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setIdentificacionMaestro(identificacionMaestro); } } /** * Getter para propiedad identificacionMaestroAnterior. * * @return Valor de la propiedad identificacionMaestroAnterior. */ public Long getIdentificacionMaestroAnterior() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getIdentificacionMaestroAnterior(); } /** * Setter para propiedad identificacionMaestroAnterior. * * @param identificacionMaestroAnterior Nuevo valor de la propiedad identificacionMaestroAnterior. */ public void setIdentificacionMaestroAnterior(Long identificacionMaestroAnterior) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setIdentificacionMaestroAnterior(identificacionMaestroAnterior); } } /** * Getter para propiedad filasProcesadas. * * @return Valor de la propiedad filasProcesadas. */ public Map getFilasProcesadas() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getFilasProcesadas(); } public boolean esFilaProcesada(TableRowDataProvider tableRowDataProvider) { return tableRowDataProvider != null && this.esFilaProcesada(tableRowDataProvider.getTableRow()); } public boolean esFilaProcesada(RowKey rowKey) { return rowKey != null && this.getFilasProcesadas().containsKey(rowKey.getRowId()); } /** * Getter para propiedad filasRemovidas. * * @return Valor de la propiedad filasRemovidas. */ public Map getFilasRemovidas() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getFilasRemovidas(); } public boolean esFilaRemovida(TableRowDataProvider tableRowDataProvider) { return tableRowDataProvider != null && this.esFilaRemovida(tableRowDataProvider.getTableRow()); } public boolean esFilaRemovida(RowKey rowKey) { return rowKey != null && this.getFilasRemovidas().containsKey(rowKey.getRowId()); } /** * Conserva el valor de la propiedad filasPorConfirmar. */ private int filasProcesadasPorConfirmar = 0; /** * Getter para propiedad filasPorConfirmar. * * @return Valor de la propiedad filasPorConfirmar. */ protected int getFilasProcesadasPorConfirmar() { return this.filasProcesadasPorConfirmar; } /** * Getter para propiedad filasConflictivas. * * @return Valor de la propiedad filasConflictivas. */ public Map getFilasConflictivas() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getFilasConflictivas(); } public boolean esFilaConflictiva(TableRowDataProvider tableRowDataProvider) { return tableRowDataProvider != null && this.esFilaConflictiva(tableRowDataProvider.getTableRow()); } public boolean esFilaConflictiva(RowKey rowKey) { return rowKey != null && this.getFilasConflictivas().containsKey(rowKey.getRowId()); } /** * Getter para propiedad filasEliminadas. * * @return Valor de la propiedad filasEliminadas. */ public int getFilasEliminadas() { return !this.isInicializado() ? 0 : this.getRecursoCachedRowSet().getFilasEliminadas(); } /** * Setter para propiedad filasEliminadas. * * @param filasEliminadas Nuevo valor de la propiedad filasEliminadas. */ protected void setFilasEliminadas(int filasEliminadas) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFilasEliminadas(filasEliminadas); } } protected int incrementaFilasEliminadas() { int i = this.getFilasEliminadas(); this.setFilasEliminadas(++i); return this.getFilasEliminadas(); } /** * Getter para propiedad filtroFuncionSelect. * * @return Valor de la propiedad filtroFuncionSelect. */ public Long getFiltroFuncionSelect() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getFiltroFuncionSelect(); } /** * Setter para propiedad filtroFuncionSelect. * * @param filtroFuncionSelect Nuevo valor de la propiedad filtroFuncionSelect. */ public void setFiltroFuncionSelect(Long filtroFuncionSelect) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFiltroFuncionSelect(filtroFuncionSelect); } } /** * Getter para propiedad filtroFuncionSelectAnterior. * * @return Valor de la propiedad filtroFuncionSelectAnterior. */ public Long getFiltroFuncionSelectAnterior() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getFiltroFuncionSelectAnterior(); } /** * Setter para propiedad filtroFuncionSelectAnterior. * * @param filtroFuncionSelectAnterior Nuevo valor de la propiedad filtroFuncionSelectAnterior. */ public void setFiltroFuncionSelectAnterior(Long filtroFuncionSelectAnterior) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFiltroFuncionSelectAnterior(filtroFuncionSelectAnterior); } } /** * Getter para propiedad filtroFuncionSelectModificado. * * @return Valor de la propiedad filtroFuncionSelectModificado. */ public boolean isFiltroFuncionSelectModificado() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFiltroFuncionSelectModificado(); } /** * Setter para propiedad filtroFuncionSelectModificado. * * @param filtroFuncionSelectModificado Nuevo valor de la propiedad filtroFuncionSelectModificado. */ public void setFiltroFuncionSelectModificado(boolean filtroFuncionSelectModificado) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFiltroFuncionSelectModificado(filtroFuncionSelectModificado); } } /** * Getter para propiedad codigoFuncionSelect. * * @return Valor de la propiedad codigoFuncionSelect. */ public String getCodigoFuncionSelect() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getCodigoFuncionSelect(); } /** * Setter para propiedad codigoFuncionSelect. * * @param codigoFuncionSelect Nuevo valor de la propiedad codigoFuncionSelect. */ public void setCodigoFuncionSelect(String codigoFuncionSelect) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setCodigoFuncionSelect(codigoFuncionSelect); } } /** * Getter para propiedad codigoFuncionSelectAnterior. * * @return Valor de la propiedad codigoFuncionSelectAnterior. */ public String getCodigoFuncionSelectAnterior() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getCodigoFuncionSelectAnterior(); } /** * Setter para propiedad codigoFuncionSelectAnterior. * * @param codigoFuncionSelectAnterior Nuevo valor de la propiedad codigoFuncionSelectAnterior. */ public void setCodigoFuncionSelectAnterior(String codigoFuncionSelectAnterior) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setCodigoFuncionSelectAnterior(codigoFuncionSelectAnterior); } } /** * Getter para propiedad codigoFuncionSelectModificado. * * @return Valor de la propiedad codigoFuncionSelectModificado. */ public boolean isCodigoFuncionSelectModificado() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isCodigoFuncionSelectModificado(); } /** * Setter para propiedad codigoFuncionSelectModificado. * * @param codigoFuncionSelectModificado Nuevo valor de la propiedad codigoFuncionSelectModificado. */ public void setCodigoFuncionSelectModificado(boolean codigoFuncionSelectModificado) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setCodigoFuncionSelectModificado(codigoFuncionSelectModificado); } } /** * Getter para propiedad nombreFuncionSelect. * * @return Valor de la propiedad nombreFuncionSelect. */ public String getNombreFuncionSelect() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getNombreFuncionSelect(); } /** * Setter para propiedad nombreFuncionSelect. * * @param nombreFuncionSelect Nuevo valor de la propiedad nombreFuncionSelect. */ public void setNombreFuncionSelect(String nombreFuncionSelect) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setNombreFuncionSelect(nombreFuncionSelect); } } /** * Getter para propiedad nombreFuncionSelectAnterior. * * @return Valor de la propiedad nombreFuncionSelectAnterior. */ public String getNombreFuncionSelectAnterior() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getNombreFuncionSelectAnterior(); } /** * Setter para propiedad nombreFuncionSelectAnterior. * * @param nombreFuncionSelectAnterior Nuevo valor de la propiedad nombreFuncionSelectAnterior. */ public void setNombreFuncionSelectAnterior(String nombreFuncionSelectAnterior) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setNombreFuncionSelectAnterior(nombreFuncionSelectAnterior); } } /** * Getter para propiedad nombreFuncionSelectModificado. * * @return Valor de la propiedad nombreFuncionSelectModificado. */ public boolean isNombreFuncionSelectModificado() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isNombreFuncionSelectModificado(); } /** * Setter para propiedad nombreFuncionSelectModificado. * * @param nombreFuncionSelectModificado Nuevo valor de la propiedad nombreFuncionSelectModificado. */ public void setNombreFuncionSelectModificado(boolean nombreFuncionSelectModificado) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setNombreFuncionSelectModificado(nombreFuncionSelectModificado); } } /** * Getter para propiedad filtroFuncionSelect. * * @return Valor de la propiedad filtroFuncionSelect. */ public Long getSegmentoFuncionSelect() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getSegmentoFuncionSelect(); } /** * Setter para propiedad filtroFuncionSelect. * * @param filtroFuncionSelect Nuevo valor de la propiedad filtroFuncionSelect. */ public void setSegmentoFuncionSelect(Long filtroFuncionSelect) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setSegmentoFuncionSelect(filtroFuncionSelect); } } /** * Getter para propiedad funcionSelect. * * @return Valor de la propiedad funcionSelect. */ public long getFuncionSelect() { return !this.isInicializado() ? -1L : this.getRecursoCachedRowSet().getFuncionSelect(); } /** * Setter para propiedad funcionSelect. * * @param funcionSelect Nuevo valor de la propiedad funcionSelect. */ public void setFuncionSelect(long funcion) throws ExcepcionAplicacion { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionSelect(funcion); } } /** * Getter para propiedad funcionInsert. * * @return Valor de la propiedad funcionInsert. */ public long getFuncionInsert() { return !this.isInicializado() ? -1L : this.getRecursoCachedRowSet().getFuncionInsert(); } /** * Setter para propiedad funcionInsert. * * @param funcionInsert Nuevo valor de la propiedad funcionInsert. */ public void setFuncionInsert(long funcion) throws ExcepcionAplicacion { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionInsert(funcion); } } /** * Getter para propiedad funcionUpdate. * * @return Valor de la propiedad funcionUpdate. */ public long getFuncionUpdate() { return !this.isInicializado() ? -1L : this.getRecursoCachedRowSet().getFuncionUpdate(); } /** * Setter para propiedad funcionUpdate. * * @param funcionUpdate Nuevo valor de la propiedad funcionUpdate. */ public void setFuncionUpdate(long funcion) throws ExcepcionAplicacion { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionUpdate(funcion); } } /** * Getter para propiedad funcionDelete. * * @return Valor de la propiedad funcionDelete. */ public long getFuncionDelete() { return !this.isInicializado() ? -1L : this.getRecursoCachedRowSet().getFuncionDelete(); } /** * Setter para propiedad funcionDelete. * * @param funcionDelete Nuevo valor de la propiedad funcionDelete. */ public void setFuncionDelete(long funcion) throws ExcepcionAplicacion { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionDelete(funcion); } } /** * Getter para propiedad funcionBusinessProcess. * * @return Valor de la propiedad funcionBusinessProcess. */ public long getFuncionBusinessProcess() { return !this.isInicializado() ? -1L : this.getRecursoCachedRowSet().getFuncionBusinessProcess(); } /** * Setter para propiedad funcionBusinessProcess. * * @param funcionBusinessProcess Nuevo valor de la propiedad funcionBusinessProcess. */ public void setFuncionBusinessProcess(long funcion) throws ExcepcionAplicacion { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionBusinessProcess(funcion); } } /** * Getter para propiedad funcionSelectAutorizada. * * @return Valor de la propiedad funcionSelectAutorizada. */ public boolean isFuncionSelectAutorizada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionSelectAutorizada(); } /** * Getter para propiedad funcionInsertAutorizada. * * @return Valor de la propiedad funcionInsertAutorizada. */ public boolean isFuncionInsertAutorizada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionInsertAutorizada(); } /** * Getter para propiedad funcionUpdateAutorizada. * * @return Valor de la propiedad funcionUpdateAutorizada. */ public boolean isFuncionUpdateAutorizada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionUpdateAutorizada(); } /** * Getter para propiedad funcionDeleteAutorizada. * * @return Valor de la propiedad funcionDeleteAutorizada. */ public boolean isFuncionDeleteAutorizada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionDeleteAutorizada(); } /** * Getter para propiedad funcionBusinessProcessAutorizada. * * @return Valor de la propiedad funcionBusinessProcessAutorizada. */ public boolean isFuncionBusinessProcessAutorizada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionBusinessProcessAutorizada(); } /** * Getter para propiedad funcionSelectEjecutada. * * @return Valor de la propiedad funcionSelectEjecutada. */ public boolean isFuncionSelectEjecutada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionSelectEjecutada(); } /** * Setter para propiedad funcionSelectEjecutada. * * @param funcionSelectEjecutada Nuevo valor de la propiedad funcionSelectEjecutada. */ protected void setFuncionSelectEjecutada(boolean funcionSelectEjecutada) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionSelectEjecutada(funcionSelectEjecutada); } } /** * Getter para propiedad funcionInsertEjecutada. * * @return Valor de la propiedad funcionInsertEjecutada. */ public boolean isFuncionInsertEjecutada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionInsertEjecutada(); } /** * Setter para propiedad funcionInsertEjecutada. * * @param funcionInsertEjecutada Nuevo valor de la propiedad funcionInsertEjecutada. */ protected void setFuncionInsertEjecutada(boolean funcionInsertEjecutada) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionInsertEjecutada(funcionInsertEjecutada); } } /** * Getter para propiedad funcionUpdateEjecutada. * * @return Valor de la propiedad funcionUpdateEjecutada. */ public boolean isFuncionUpdateEjecutada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionUpdateEjecutada(); } /** * Setter para propiedad funcionUpdateEjecutada. * * @param funcionUpdateEjecutada Nuevo valor de la propiedad funcionUpdateEjecutada. */ protected void setFuncionUpdateEjecutada(boolean funcionUpdateEjecutada) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionUpdateEjecutada(funcionUpdateEjecutada); } } /** * Getter para propiedad funcionDeleteEjecutada. * * @return Valor de la propiedad funcionDeleteEjecutada. */ public boolean isFuncionDeleteEjecutada() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionDeleteEjecutada(); } /** * Setter para propiedad funcionDeleteEjecutada. * * @param funcionDeleteEjecutada Nuevo valor de la propiedad funcionDeleteEjecutada. */ protected void setFuncionDeleteEjecutada(boolean funcionDeleteEjecutada) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFuncionDeleteEjecutada(funcionDeleteEjecutada); } } /** * Getter para propiedad funcionBusinessProcessEjecutada. * * @return Valor de la propiedad funcionBusinessProcessEjecutada. */ // public boolean isFuncionBusinessProcessEjecutada() { // return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFuncionBusinessProcessEjecutada(); // } // /** * Setter para propiedad funcionBusinessProcessEjecutada. * * @param funcionBusinessProcessEjecutada Nuevo valor de la propiedad funcionBusinessProcessEjecutada. */ // protected void setFuncionBusinessProcessEjecutada(boolean funcionBusinessProcessEjecutada) { // if (this.isInicializado()) { // this.getRecursoCachedRowSet().setFuncionBusinessProcessEjecutada(funcionBusinessProcessEjecutada); // } // } // /** * Getter para propiedad filtroEscondido. * * @return Valor de la propiedad filtroEscondido. */ public boolean isFiltroEscondido() { return !this.isInicializado() ? false : this.getRecursoCachedRowSet().isFiltroEscondido(); } /** * Setter para propiedad filtroEscondido. * * @param filtroEscondido Nuevo valor de la propiedad filtroEscondido. */ public void setFiltroEscondido(boolean filtroEscondido) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setFiltroEscondido(filtroEscondido); } } /** * Getter para propiedad versionComandoSelect. * * @return Valor de la propiedad versionComandoSelect. */ public long getVersionComandoSelect() { return !this.isInicializado() ? -1L : this.getRecursoCachedRowSet().getVersionComandoSelect(); } /** * Setter para propiedad versionComandoSelect. * * @param versionComandoSelect Nuevo valor de la propiedad versionComandoSelect. */ protected void setVersionComandoSelect(long versionComandoSelect) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setVersionComandoSelect(versionComandoSelect); } } protected void incrementaVersionComandoSelect() { long i = this.getVersionComandoSelect(); this.setVersionComandoSelect(++i); } /** * Getter para propiedad versionComandoSelectAnterior. * * @return Valor de la propiedad versionComandoSelectAnterior. */ public long getVersionComandoSelectAnterior() { return !this.isInicializado() ? -1L : this.getRecursoCachedRowSet().getVersionComandoSelectAnterior(); } /** * Setter para propiedad versionComandoSelectAnterior. * * @param versionComandoSelectAnterior Nuevo valor de la propiedad versionComandoSelectAnterior. */ protected void setVersionComandoSelectAnterior(long versionComandoSelectAnterior) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setVersionComandoSelectAnterior(versionComandoSelectAnterior); } } /** * Getter para propiedad versionComandoInsert. * * @return Valor de la propiedad versionComandoInsert. */ public long getVersionComandoInsert() { return !this.isInicializado() ? -1L : this.getRecursoCachedRowSet().getVersionComandoInsert(); } /** * Setter para propiedad versionComandoInsert. * * @param versionComandoInsert Nuevo valor de la propiedad versionComandoInsert. */ protected void setVersionComandoInsert(long versionComandoInsert) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setVersionComandoInsert(versionComandoInsert); } } /** * Getter para propiedad criteriosBusqueda. * * @return Valor de la propiedad criteriosBusqueda. */ public String getCriteriosBusqueda() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getCriteriosBusqueda(); } /** * Setter para propiedad criteriosBusqueda. * * @param criteriosBusqueda Nuevo valor de la propiedad criteriosBusqueda. */ public void setCriteriosBusqueda(String criteriosBusqueda) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setCriteriosBusqueda(criteriosBusqueda); } } /** * Setter para propiedad criteriosBusqueda. * * @param criteriosBusqueda Nuevo valor de la propiedad criteriosBusqueda. */ public void setCriteriosBusqueda(FiltroBusqueda filtro) { if (this.isInicializado()) { String criteriosBusqueda = filtro == null ? null : filtro.toString(this.getCodigoDominioRecurso()); this.getRecursoCachedRowSet().setCriteriosBusqueda(criteriosBusqueda); } } /** * Getter para propiedad criteriosOrden. * * @return Valor de la propiedad criteriosOrden. */ public String getCriteriosOrden() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getCriteriosOrden(); } /** * Setter para propiedad criteriosOrden. * * @param criteriosOrden Nuevo valor de la propiedad criteriosOrden. */ public void setCriteriosOrden(String criteriosOrden) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setCriteriosOrden(criteriosOrden); } } /** * Setter para propiedad criteriosOrden. * * @param criteriosOrden Nuevo valor de la propiedad criteriosOrden. */ public void setCriteriosOrden(OrdenConjuntoResultados orden) { if (this.isInicializado()) { String criteriosOrden = orden == null ? null : orden.toString(); this.getRecursoCachedRowSet().setCriteriosOrden(criteriosOrden); } } /** * Getter para propiedad comandoSelectAnsi. * * @return Valor de la propiedad comandoSelectAnsi. */ public String getComandoSelectAnsi() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getComandoSelectAnsi(); } /** * Setter para propiedad comandoSelectAnsi. * * @param comandoSelectAnsi Nuevo valor de la propiedad comandoSelectAnsi. */ protected void setComandoSelectAnsi(String comandoSelectAnsi) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setComandoSelectAnsi(comandoSelectAnsi); } } /** * Getter para propiedad comandoSelectAnterior. * * @return Valor de la propiedad comandoSelectAnterior. */ public String getComandoSelectAnterior() { return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getComandoSelectAnterior(); } /** * Setter para propiedad comandoSelectAnterior. * * @param comandoSelectAnterior Nuevo valor de la propiedad comandoSelectAnterior. */ protected void setComandoSelectAnterior(String comandoSelectAnterior) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setComandoSelectAnterior(comandoSelectAnterior); } } /** * Getter para propiedad opcionZumNodo. * * @return Valor de la propiedad opcionZumNodo. */ public EnumOpcionZumNodo getOpcionZumNodo() { return !this.isInicializado() ? EnumOpcionZumNodo.TODO : this.getRecursoCachedRowSet().getOpcionZumNodo(); } /** * Setter para propiedad opcionZumNodo. * * @param opcionZumNodo Nuevo valor de la propiedad opcionZumNodo. */ public void setOpcionZumNodo(EnumOpcionZumNodo opcionZumNodo) { if (this.isInicializado()) { this.getRecursoCachedRowSet().setOpcionZumNodo(opcionZumNodo); } } /** * Conserva el valor de la propiedad segmentoKeyColumn. */ private String segmentoKeyColumn; /** * Conserva el valor de la propiedad segmentoFunctionName. */ private String segmentoFunctionName; public String getSegmentoKeyColumn() { // return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getSegmentoKeyColumn(); return segmentoKeyColumn; } public void setSegmentoKeyColumn(String segmentoKeyColumn) { // if (this.isInicializado()) { // this.getRecursoCachedRowSet().setSegmentoKeyColumn(segmentoKeyColumn); // } this.segmentoKeyColumn = segmentoKeyColumn; } public String getSegmentoFunctionName() { // return !this.isInicializado() ? null : this.getRecursoCachedRowSet().getSegmentoFunctionName(); return segmentoFunctionName; } public void setSegmentoFunctionName(String segmentoFunctionName) { // if (this.isInicializado()) { // this.getRecursoCachedRowSet().setSegmentoFunctionName(segmentoFunctionName); // } this.segmentoFunctionName = segmentoFunctionName; } /** * Getter para propiedad consultaInsertDisponible. * * @return Valor de la propiedad consultaInsertDisponible. */ public boolean isConsultaInsertDisponible() { return !this.isInicializado() ? false : this.getVersionComandoInsert() > 0L; } /** * Getter para propiedad consultaAnteriorDisponible. * * @return Valor de la propiedad consultaAnteriorDisponible. */ public boolean isConsultaAnteriorDisponible() { return !this.isInicializado() ? false : this.getVersionComandoSelectAnterior() > 0L; } /** * Getter para propiedad funcionSelectHabilitada. * * @return Valor de la propiedad funcionSelectHabilitada. */ public boolean isFuncionSelectHabilitada() { // boolean b = this.isFuncionSelectAutorizada(); // int i = this.getFilasProcesadas().size() + this.getFilasEliminadas(); // return b && i == 0; return this.isFuncionSelectAutorizada() && this.isLoteSinCambios(); } /** * Getter para propiedad funcionInsertHabilitada. * * @return Valor de la propiedad funcionInsertHabilitada. */ public boolean isFuncionInsertHabilitada() { // removeRow + appendRow + setCursorRow = java.lang.IllegalArgumentException // por lo tanto, hay que evitar el appendRow(con su consecuente setCursorRow) si se ejecuta un removeRow // boolean b = this.isFuncionInsertAutorizada(); // int i = this.getFilasEliminadas(); // return b && i == 0; // return this.isFuncionInsertAutorizada() && !this.isFuncionDeleteEjecutada(); return this.isFuncionSelectEjecutada() && !this.isFuncionUpdateEjecutada() && !this.isFuncionDeleteEjecutada(); } /** * Getter para propiedad funcionUpdateHabilitada. * * @return Valor de la propiedad funcionUpdateHabilitada. */ public boolean isFuncionUpdateHabilitada() { // return this.isFuncionUpdateAutorizada() && this.isLoteConFilas(); return this.isLoteConFilas() && !this.isFuncionInsertEjecutada() && !this.isFuncionDeleteEjecutada(); } /** * Getter para propiedad funcionDeleteHabilitada. * * @return Valor de la propiedad funcionDeleteHabilitada. */ public boolean isFuncionDeleteHabilitada() { // return this.isFuncionDeleteAutorizada() && this.isLoteConFilas(); return this.isLoteConFilas() && !this.isFuncionInsertEjecutada() && !this.isFuncionUpdateEjecutada(); } /** * Getter para propiedad funcionBusinessProcessHabilitada. * * @return Valor de la propiedad funcionBusinessProcessHabilitada. */ public boolean isFuncionBusinessProcessHabilitada() { // return this.isFuncionBusinessProcessAutorizada() && this.isLoteConFilas(); return this.isFuncionBusinessProcessAutorizada() && this.isLoteConFilas() && this.isLoteSinCambios(); } /** * Getter para propiedad funcionHideFilterHabilitada. * * @return Valor de la propiedad funcionHideFilterHabilitada. */ public boolean isFuncionHideFilterHabilitada() { return this.isFuncionSelectHabilitada() && this.isFuncionSelectEjecutada() && !this.isFiltroEscondido(); } /** * Getter para propiedad funcionHideFilterInhabilitada. * * @return Valor de la propiedad funcionHideFilterInhabilitada. */ public boolean isFuncionHideFilterInhabilitada() { return !this.isFuncionHideFilterHabilitada(); } /** * Getter para propiedad funcionShowFilterHabilitada. * * @return Valor de la propiedad funcionShowFilterHabilitada. */ public boolean isFuncionShowFilterHabilitada() { return this.isFuncionSelectHabilitada() && this.isFiltroEscondido(); } /** * Getter para propiedad funcionShowFilterInhabilitada. * * @return Valor de la propiedad funcionShowFilterInhabilitada. */ public boolean isFuncionShowFilterInhabilitada() { return !this.isFuncionShowFilterHabilitada(); } /** * Getter para propiedad funcionModifyFilterHabilitada. * * @return Valor de la propiedad funcionModifyFilterHabilitada. */ public boolean isFuncionViewFilterHabilitada() { return this.isFuncionSelectHabilitada() && !this.isFiltroEscondido(); } /** * Getter para propiedad funcionModifyFilterInhabilitada. * * @return Valor de la propiedad funcionModifyFilterInhabilitada. */ public boolean isFuncionViewFilterInhabilitada() { return !this.isFuncionViewFilterHabilitada(); } /** * Getter para propiedad funcionApplyFilterHabilitada. * * @return Valor de la propiedad funcionApplyFilterHabilitada. */ public boolean isFuncionApplyFilterHabilitada() { return this.isFuncionSelectHabilitada(); } /** * Getter para propiedad funcionApplyFilterInhabilitada. * * @return Valor de la propiedad funcionApplyFilterInhabilitada. */ public boolean isFuncionApplyFilterInhabilitada() { return !this.isFuncionApplyFilterHabilitada(); } /** * Getter para propiedad funcionRemoveFilterHabilitada. * * @return Valor de la propiedad funcionRemoveFilterHabilitada. */ public boolean isFuncionRemoveFilterHabilitada() { return this.isFuncionSelectHabilitada() && this.isFiltroFuncionSelectDisponible(); } /** * Getter para propiedad funcionRemoveFilterInhabilitada. * * @return Valor de la propiedad funcionRemoveFilterInhabilitada. */ public boolean isFuncionRemoveFilterInhabilitada() { return !this.isFuncionRemoveFilterHabilitada(); } /** * Getter para propiedad funcionRestoreFilterHabilitada. * * @return Valor de la propiedad funcionRestoreFilterHabilitada. */ public boolean isFuncionRestoreFilterHabilitada() { return this.isFuncionSelectHabilitada() && this.isFiltroFuncionSelectAnteriorDisponible(); } /** * Getter para propiedad funcionRestoreFilterInhabilitada. * * @return Valor de la propiedad funcionRestoreFilterInhabilitada. */ public boolean isFuncionRestoreFilterInhabilitada() { return !this.isFuncionRestoreFilterHabilitada(); } /** * Getter para propiedad filtroFuncionSelectDisponible. * * @return Valor de la propiedad filtroFuncionSelectDisponible. */ private boolean isFiltroFuncionSelectDisponible() { return (this.getFiltroFuncionSelect() != null || this.getCodigoFuncionSelect() != null || this.getNombreFuncionSelect() != null); } /** * Getter para propiedad filtroFuncionSelectAnteriorDisponible. * * @return Valor de la propiedad filtroFuncionSelectAnteriorDisponible. */ private boolean isFiltroFuncionSelectAnteriorDisponible() { return (this.getFiltroFuncionSelectAnterior() != null || this.getCodigoFuncionSelectAnterior() != null || this.getNombreFuncionSelectAnterior() != null); } /** * Getter para propiedad loteConFilas. * * @return Valor de la propiedad loteConFilas. */ public boolean isLoteConFilas() { // return this.isInicializado() && this.getRowCount() > 0; return this.isInicializado() && this.getRowKeys(1, null).length > 0; } /** * Getter para propiedad loteSinFilas. * * @return Valor de la propiedad loteSinFilas. */ public boolean isLoteSinFilas() { return !this.isLoteConFilas(); } /** * Getter para propiedad loteConCambios. * * @return Valor de la propiedad loteConCambios. */ public boolean isLoteConCambios() { return this.isFuncionInsertEjecutada() || this.isFuncionUpdateEjecutada() || this.isFuncionDeleteEjecutada(); } /** * Getter para propiedad loteSinCambios. * * @return Valor de la propiedad loteSinCambios. */ public boolean isLoteSinCambios() { return !this.isLoteConCambios(); } /** * Getter para propiedad loteConFilasEliminadas. * * @return Valor de la propiedad loteConFilasEliminadas. */ public boolean isLoteConFilasEliminadas() { int i = !this.isInicializado() ? 0 : this.getFilasEliminadas(); return i > 0; } /** * Getter para propiedad loteSinFilasEliminadas. * * @return Valor de la propiedad loteSinFilasEliminadas. */ public boolean isLoteSinFilasEliminadas() { return !this.isLoteConFilasEliminadas(); } /** * Getter para propiedad cursorRowAvailable. * * @return Valor de la propiedad cursorRowAvailable. */ public boolean isCursorRowAvailable() { if (this.isInicializado()) { try { RowKey rowKey = this.getCursorRow(); return this.isRowAvailable(rowKey); } catch (Exception ex) { } } return false; } /** * Getter para propiedad filaEscogidaDisponible. * * @return Valor de la propiedad filaEscogidaDisponible. */ public boolean isFilaEscogidaDisponible() { if (this.isInicializado()) { try { RowKey rowKey = this.getFilaEscogida(); return this.isRowAvailable(rowKey); } catch (Exception ex) { } } return false; } /** * Conserva el valor de la propiedad codigoDominio. */ private static final String CODIGO_DOMINIO_RECURSO = "recurso"; /** * Getter para propiedad codigoDominio. * * @return Valor de la propiedad codigoDominio. */ public String getCodigoDominioRecurso() { return CODIGO_DOMINIO_RECURSO; } /** * Conserva el valor de la propiedad nombreDominio. */ private static final String NOMBRE_DOMINIO_RECURSO = "Recursos"; /** * Getter para propiedad nombreDominio. * * @return Valor de la propiedad nombreDominio. */ public String getNombreDominioRecurso() { return NOMBRE_DOMINIO_RECURSO; } /** * Conserva el valor de la propiedad comandoSelect. */ private static final String COMANDO_SELECT = "SELECT * FROM " + CODIGO_DOMINIO_RECURSO + " "; /** * Getter para propiedad comandoSelect. * * @return Valor de la propiedad comandoSelect. */ public String getComandoSelect() { return COMANDO_SELECT; } /** * Conserva el valor de la propiedad comandoSelectNothing. */ private static final String COMANDO_SELECT_NOTHING = COMANDO_SELECT + "WHERE (0=1)"; /** * Getter para propiedad comandoSelectNothing. * * @return Valor de la propiedad comandoSelectNothing. */ public String getComandoSelectNothing() { return COMANDO_SELECT_NOTHING; } /** * Conserva el valor de la propiedad tablaDestino. */ private static final String TABLA_DESTINO = CODIGO_DOMINIO_RECURSO; /** * Getter para propiedad tablaDestino. * * @return Valor de la propiedad tablaDestino. */ public String getTablaDestino() { return TABLA_DESTINO; } /** * Getter para propiedad etiquetaRecurso. * * @return Valor de la propiedad etiquetaRecurso. */ public String getEtiquetaRecurso() { return !this.isInicializado() ? null : this.getEtiquetaRecurso(this.getCursorRow()); } /** * Getter para propiedad etiquetaRecurso. * * @return Valor de la propiedad etiquetaRecurso. */ public String getEtiquetaRecurso(RowKey rowKey) { Integer id = Integer.valueOf(rowKey.getRowId()); String tag = Global.PREFIJO_ETIQUETA_ID_RECURSO + String.valueOf(id + 1); return tag; } /** * Getter para propiedad denominacionFilaEscogida. * * @return Valor de la propiedad denominacionFilaEscogida. */ public String getDenominacionFilaEscogida() { return this.getDenominacionFilaEscogida(null); } /** * Getter para propiedad denominacionFilaEscogida. * * @return Valor de la propiedad denominacionFilaEscogida. */ public String getDenominacionFilaEscogida(String etiqueta) { String tag = StringUtils.isBlank(etiqueta) ? "" : etiqueta.trim() + " "; if (this.isInicializado()) { /* DTR (design-time-requirement) */ RowKey rowKey = this.getFilaEscogida(); if (this.isRowAvailable(rowKey)) { String quotes = ""; String number = ""; String id2str = null; String codigo = null; String nombre = null; if (StringUtils.isNotBlank(etiqueta)) { quotes = "\""; number = "N\272 "; } if (this.isRecursoIdentificable()) { Long id = this.getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey); id2str = id == null ? STP.STRING_VALOR_NULO : id.toString(); } else if (this.isRecursoEnumerable()) { Integer id = this.getRecursoEnumerableDataProvider().getNumeroRecurso(rowKey); id2str = id == null ? STP.STRING_VALOR_NULO : id.toString(); } if (this.isRecursoCodificable()) { codigo = this.getRecursoCodificableDataProvider().getCodigoRecurso(rowKey); } if (this.isRecursoNombrable()) { nombre = this.getRecursoNombrableDataProvider().getNombreRecurso(rowKey); } if (StringUtils.isBlank(codigo) && StringUtils.isBlank(nombre)) { tag += number + id2str; } else if (StringUtils.isNotBlank(codigo) && StringUtils.isBlank(nombre)) { tag += quotes + codigo + quotes; } else if (StringUtils.isBlank(codigo) && StringUtils.isNotBlank(nombre)) { tag += quotes + nombre + quotes; } else { tag += quotes + nombre + quotes; } } } return tag; } /** * Getter para propiedad mensajeCambiosPorConfirmar. * * @return Valor de la propiedad mensajeCambiosPorConfirmar. */ public String getMensajeCambiosPorConfirmar() { if (!this.isInicializado()) { return null; } String clave = CBM2.CHANGES_TO_COMMIT; int i = this.getFilasProcesadas().size(); int j = this.getFilasEliminadas(); return i > 0 || j > 0 ? Bitacora.getTextoMensaje(clave, Integer.valueOf(i), Integer.valueOf(j)) : null; } /** * Getter para propiedad mensajeCambiosPorDescartar. * * @return Valor de la propiedad mensajeCambiosPorDescartar. */ public String getMensajeCambiosPorDescartar() { if (!this.isInicializado()) { return null; } String clave = CBM2.CHANGES_TO_REVERT; int i = this.getFilasProcesadas().size(); int j = this.getFilasEliminadas(); return i > 0 || j > 0 ? Bitacora.getTextoMensaje(clave, Integer.valueOf(i), Integer.valueOf(j)) : null; } /** * Conserva el valor de la propiedad mensajeErrorFinal. */ private String mensajeErrorFinal; /** * Getter para propiedad mensajeErrorFinal. * * @return Valor de la propiedad mensajeErrorFinal. */ private String getMensajeErrorFinal() { return this.mensajeErrorFinal; } /** * Setter para propiedad mensajeErrorFinal. * * @param mensajeErrorFinal Nuevo valor de la propiedad mensajeErrorFinal. */ private void setMensajeErrorFinal(String mensajeErrorFinal) { this.mensajeErrorFinal = mensajeErrorFinal; } /** * Conserva el valor de la propiedad limiteFilasFuncionSelect. */ private int limiteFilasFuncionSelect = 0; /** * Getter para propiedad limiteFilasFuncionSelect. * * @return Valor de la propiedad limiteFilasFuncionSelect. */ public int getLimiteFilasFuncionSelect() { return this.limiteFilasFuncionSelect; } /** * Setter para propiedad limiteFilasFuncionSelect. * * @param limiteFilasFuncionSelect Nuevo valor de la propiedad limiteFilasFuncionSelect. */ public void setLimiteFilasFuncionSelect(int limiteFilasFuncionSelect) { this.limiteFilasFuncionSelect = limiteFilasFuncionSelect; } public String getDataSourceCachedRowSet() { CachedRowSet crs = this.getCachedRowSet(); return crs == null ? "" : crs.getDataSourceName(); } protected void setDataSourceCachedRowSet(String dataSource) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "setDataSourceCachedRowSet", dataSource); if (StringUtils.isNotBlank(dataSource)) { CachedRowSet crs = this.getCachedRowSet(); Bitacora.trace(this.getClass(), "setDataSourceCachedRowSet", crs == null ? "CachedRowSet=?" : "CachedRowSet=" + crs); if (crs != null && !dataSource.equalsIgnoreCase(crs.getDataSourceName())) { try { crs.setDataSourceName(dataSource); /* throws SQLException */ } catch (SQLException ex) { TLC.getBitacora().fatal(ex); throw new ExcepcionAplicacion(ex); } } } } public String getComandoCachedRowSet() { CachedRowSet crs = this.getCachedRowSet(); return crs == null ? "" : crs.getCommand(); } protected void setComandoCachedRowSet(String comando) throws ExcepcionAplicacion { if (EA.isLoaded() && StringUtils.isBlank(this.getDataSourceCachedRowSet())) { this.setDataSourceCachedRowSet(EA.getString(EAC.JDBC_DATASOURCE)); } this.setComandoCachedRowSet(comando, false); } protected void setComandoCachedRowSet(String comando, boolean refresh) throws ExcepcionAplicacion { this.setComandoCachedRowSet(comando, refresh, 0L); } private void setComandoCachedRowSet(String comando, boolean refresh, long version) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "setComandoCachedRowSet", comando, "refresh=" + refresh); if (StringUtils.isNotBlank(comando)) { CachedRowSet crs = this.getCachedRowSet(); Bitacora.trace(this.getClass(), "setComandoCachedRowSet", crs == null ? "CachedRowSet=?" : "CachedRowSet=" + crs); if (crs != null) { try { InterpreteSql interprete = TLC.getInterpreteSql(); if (interprete != null) { String command = crs.getCommand(); String comandoSelect = interprete.getComandoSelect(comando, this.getLimiteFilasFuncionSelect()); if (comandoSelect != null && !comandoSelect.equals(command)) { crs.setCommand(comandoSelect); /* throws SQLException */ this.setComandoSelectAnsi(comando); this.incrementaVersionComandoSelect(); this.setVersionComandoInsert(version); } if (refresh) { this.refresh(); /* throws DataProviderException */ } } } catch (SQLException | DataProviderException ex) { TLC.getBitacora().fatal(ex); throw new ExcepcionAplicacion(ex); } } } } public String getTablaCachedRowSet() throws SQLException { CachedRowSet crs = this.getCachedRowSet(); return crs == null ? "" : crs.getTableName(); } protected void setTablaCachedRowSet(String tabla) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "setTablaCachedRowSet", tabla); if (StringUtils.isNotBlank(tabla)) { CachedRowSet crs = this.getCachedRowSet(); Bitacora.trace(this.getClass(), "setTablaCachedRowSet", crs == null ? "CachedRowSet=?" : "CachedRowSet=" + crs); if (crs != null) { try { InterpreteSql interprete = TLC.getInterpreteSql(); if (interprete != null) { String tableName = crs.getTableName(); /* throws SQLException */ String nombreTabla = interprete.getNombreTabla(tabla); if (nombreTabla != null && !nombreTabla.equals(tableName)) { crs.setTableName(nombreTabla); /* throws SQLException */ } } } catch (SQLException ex) { TLC.getBitacora().fatal(ex); throw new ExcepcionAplicacion(ex); } } } } protected void setColumnasInsertables(boolean insertable) { CachedRowSet crs = this.getCachedRowSet(); if (crs instanceof CachedRowSetX) { FieldKey[] keys = this.getFieldKeys(); if (keys != null && keys.length > 0) { CachedRowSetX crsx = (CachedRowSetX) crs; boolean[] columns = crsx.getInsertableColumns(); int colcount = columns == null ? 0 : columns.length; if (keys.length != colcount) { columns = new boolean[keys.length]; } for (int i = 0; i < columns.length; i++) { columns[i] = insertable; } crsx.setInsertableColumns(columns); } } } protected void setColumnasInsertables(String columna, boolean insertable) { CachedRowSet crs = this.getCachedRowSet(); if (crs instanceof CachedRowSetX) { FieldKey[] keys = this.getFieldKeys(); if (keys != null && keys.length > 0) { CachedRowSetX crsx = (CachedRowSetX) crs; boolean[] columns = crsx.getInsertableColumns(); int colcount = columns == null ? 0 : columns.length; if (keys.length != colcount) { columns = new boolean[keys.length]; for (int i = 0; i < columns.length; i++) { columns[i] = false; } crsx.setInsertableColumns(columns); } for (int i = 0; i < keys.length; i++) { if (columna.equalsIgnoreCase(keys[i].getDisplayName())) { crsx.setInsertableColumns(i, insertable); } } } } } protected void setColumnasModificables(boolean modificable) { CachedRowSet crs = this.getCachedRowSet(); if (crs instanceof CachedRowSetX) { FieldKey[] keys = this.getFieldKeys(); if (keys != null && keys.length > 0) { CachedRowSetX crsx = (CachedRowSetX) crs; boolean[] columns = crsx.getUpdatableColumns(); int colcount = columns == null ? 0 : columns.length; if (keys.length != colcount) { columns = new boolean[keys.length]; } for (int i = 0; i < columns.length; i++) { columns[i] = modificable; } crsx.setUpdatableColumns(columns); } } } protected void setColumnasModificables(String columna, boolean modificable) { CachedRowSet crs = this.getCachedRowSet(); if (crs instanceof CachedRowSetX) { FieldKey[] keys = this.getFieldKeys(); if (keys != null && keys.length > 0) { CachedRowSetX crsx = (CachedRowSetX) crs; boolean[] columns = crsx.getUpdatableColumns(); int colcount = columns == null ? 0 : columns.length; if (keys.length != colcount) { columns = new boolean[keys.length]; for (int i = 0; i < columns.length; i++) { columns[i] = false; } crsx.setUpdatableColumns(columns); } for (int i = 0; i < keys.length; i++) { if (columna.equalsIgnoreCase(keys[i].getDisplayName())) { crsx.setUpdatableColumns(i, modificable); } } } } } public boolean isColumnaInsertable(String columna) { CachedRowSet crs = this.getCachedRowSet(); if (crs instanceof CachedRowSetX) { FieldKey[] keys = this.getFieldKeys(); if (keys == null || keys.length == 0) { return false; } CachedRowSetX crsx = (CachedRowSetX) crs; boolean[] columns = crsx.getInsertableColumns(); if (columns == null || columns.length == 0 || columns.length != keys.length) { return false; } for (int i = 0; i < keys.length; i++) { if (columna.equalsIgnoreCase(keys[i].getDisplayName())) { return columns[i]; } } } return false; } public boolean isColumnaModificable(String columna) { CachedRowSet crs = this.getCachedRowSet(); if (crs instanceof CachedRowSetX) { FieldKey[] keys = this.getFieldKeys(); if (keys == null || keys.length == 0) { return false; } CachedRowSetX crsx = (CachedRowSetX) crs; boolean[] columns = crsx.getUpdatableColumns(); if (columns == null || columns.length == 0 || columns.length != keys.length) { return false; } for (int i = 0; i < keys.length; i++) { if (columna.equalsIgnoreCase(keys[i].getDisplayName())) { return columns[i]; } } } return false; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a la Lista de Opciones"> public ArrayList getListaOpciones() { return this.getListaOpciones(false, EnumColumnaEtiqueta.AMBAS_COLUMNAS, true); } public ArrayList getListaOpciones(boolean anulable) { return this.getListaOpciones(anulable, EnumColumnaEtiqueta.AMBAS_COLUMNAS, true); } public ArrayList getListaOpciones(boolean anulable, String columna) { return this.getListaOpciones(anulable, columna, true); } public ArrayList getListaOpciones(boolean anulable, EnumColumnaEtiqueta columna) { return this.getListaOpciones(anulable, columna, true); } public ArrayList getListaOpciones(boolean anulable, boolean ordenado) { return this.getListaOpciones(anulable, EnumColumnaEtiqueta.AMBAS_COLUMNAS, ordenado); } public ArrayList getListaOpciones(String columna) { return this.getListaOpciones(false, columna, true); } public ArrayList getListaOpciones(EnumColumnaEtiqueta columna) { return this.getListaOpciones(false, columna, true); } public ArrayList getListaOpciones(String columna, boolean ordenado) { return this.getListaOpciones(false, columna, ordenado); } public ArrayList getListaOpciones(EnumColumnaEtiqueta columna, boolean ordenado) { return this.getListaOpciones(false, columna, ordenado); } public ArrayList getListaOpciones(boolean anulable, String columna, boolean ordenado) { return JSF.getListaOpciones(this, anulable, columna, ordenado); } public ArrayList getListaOpciones(boolean anulable, EnumColumnaEtiqueta columna, boolean ordenado) { return JSF.getListaOpciones(this, anulable, columna, ordenado); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a la Etiqueta de la Transaccion"> public String getEtiquetaTransaccion(RowKey rowKey) throws SQLException { if (this.isInicializado()) { this.setCursorRow(rowKey); /* throws TableCursorVetoException */ return this.getEtiquetaTransaccion(); } return null; } public String getEtiquetaTransaccion() throws SQLException { if (this.isInicializado()) { CachedRowSet crs = this.getCachedRowSet(); if (crs == null) { return null; } else if (crs.rowInserted()) { return DBC.COMANDO_INSERT; } else if (crs.rowUpdated()) { return DBC.COMANDO_UPDATE; } else if (crs.rowDeleted()) { return DBC.COMANDO_DELETE; } else { return DBC.COMANDO_COMMIT; } } return null; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a appendRow"> /** * {@inheritDoc} */ @Override public RowKey appendRow() throws DataProviderException { return this.appendRow(this.getFuncionInsert()); } public RowKey appendRow(long funcion) throws DataProviderException { Bitacora.trace(this.getClass(), "appendRow", funcion); try { if (this.isFuncionUpdateEjecutada() || this.isFuncionDeleteEjecutada()) { throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.INSERT_ROW_EXCEPTION_4)); } this.setFuncionInsert(funcion); /* throws ExcepcionAplicacion */ if (this.esPermitidoAgregar()) { this.setComandoSelectVersion(); /* throws ExcepcionAplicacion */ RowKey rowKey = super.appendRow(); /* throws DataProviderException */ this.setFuncionInsertEjecutada(true); this.getFilasProcesadas().put(rowKey.getRowId(), rowKey); this.posAppendRow(rowKey, funcion); /* fire afterAppendRow event? */ this.setAppendedRowVersion(rowKey); this.setFilaEscogida(rowKey); return rowKey; } this.setMensajeErrorFinal(CBM2.CHECK_CHANGES_EXCEPTION_0); return null; } catch (ExcepcionAplicacion ex) { throw new DataProviderException(ex); } catch (DataProviderException ex) { TLC.getBitacora().fatal(ex); throw ex; } } protected boolean esPermitidoAgregar() { Bitacora.trace(getClass(), "esPermitidoAgregar"); Object object = execute(getBeforeAppendingProcedure(), getIdentificacionMaestro()); return object == null || BitUtils.valueOf(object); } protected void setComandoSelectVersion() throws ExcepcionAplicacion { if (this.isRecursoVersionable() && this.getVersionComandoInsert() == 0L) { String columnaId = this.getRecursoVersionableDataProvider().getColumnaIdentificacionRecurso(); String columnaVersion = this.getRecursoVersionableDataProvider().getColumnaVersionRecurso(); long version = LongUtils.getNewId(); FiltroBusqueda filtro = new FiltroBusqueda(); filtro.addCriterio(columnaVersion, EnumOperadorCom.ES_IGUAL, version); String comando = this.getComandoSelect(); comando += "WHERE " + filtro.toString() + " "; comando += "ORDER BY " + columnaId + " "; this.setComandoCachedRowSet(comando, true, version); this.resetFilter(); } } protected void posAppendRow(RowKey rowKey, long funcion) { /* fire afterAppendRow event? */ Bitacora.trace(this.getClass(), "posAppendRow", rowKey, funcion); } protected void setAppendedRowVersion(RowKey rowKey) { if (this.isRecursoVersionable()) { this.getRecursoVersionableDataProvider().setVersionRecurso(rowKey, this.getVersionComandoInsert()); } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a editRow"> public void recursoCachedRowSetDataProvider_valueChanged(TableDataProvider tdp, FieldKey fk, RowKey rk, Object o3, Object o4) { // o3 es el valor original y o4 es el nuevo Bitacora.trace(this.getClass(), "valueChanged", fk.getDisplayName() + "(" + rk.getRowId() + ")", o3, o4); // // CachedRowSetX crsx = (CachedRowSetX) this.getCachedRowSet(); // FieldKey[] fieldKeys = this.getFieldKeys(); // int columnsUpdated = 0; // for (int i = 0; i < fieldKeys.length; i++) // if (crsx.columnUpdated(fieldKeys[i].getDisplayName())) // columnsUpdated++; // try { this.setCursorRow(rk); /* throws TableCursorVetoException */ if (this.getFilasProcesadas().containsKey(rk.getRowId())) { this.setFilaEscogida(rk); /* fila recion insertada o ya editada */ } else { boolean b = TLC.getBitacora().isSinDuplicados(); TLC.getBitacora().setSinDuplicados(true); String texto = TLC.getBitacora().error(CBM2.CHECK_CHANGES_EXCEPTION_3, this.getEtiquetaRecurso(rk)); TLC.getBitacora().setSinDuplicados(b); throw new ExcepcionAplicacion(texto); } } catch (TableCursorVetoException ex) { TLC.getBitacora().fatal(ex); /* throw new DataProviderException(ex); */ } catch (ExcepcionAplicacion ex) { try { this.getCachedRowSet().cancelRowUpdates(); /* throws SQLException */ } catch (SQLException sqlex) { TLC.getBitacora().fatal(sqlex); /* throw new DataProviderException(sqlex); */ } } } public boolean editRow(RowKey rowKey) throws ExcepcionAplicacion { return this.editRow(rowKey, this.getFuncionUpdate()); } public boolean editRow(Set rowSet) throws ExcepcionAplicacion { return this.editRow(rowSet, this.getFuncionUpdate()); } public boolean editRow(Set rowSet, long funcion) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "editRow", funcion); this.setFuncionUpdate(funcion); /* throws ExcepcionAplicacion */ if (rowSet.isEmpty()) { TLC.getBitacora().warn(CBM2.UPDATE_NONE); return false; } else { this.setMensajeErrorFinal(null); Iterator iterator = rowSet.iterator(); while (iterator.hasNext()) { RowKey rowKey = (RowKey) iterator.next(); this.editRow(rowKey, funcion); /* throws ExcepcionAplicacion */ } if (this.getMensajeErrorFinal() != null) { TLC.getBitacora().error(this.getMensajeErrorFinal()); } return true; } } public boolean editRow(RowKey rowKey, long funcion) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "editRow", rowKey, funcion); try { if (this.isRowAvailable(rowKey)) { this.setCursorRow(rowKey); /* throws SQLException */ if (this.getFilasProcesadas().containsKey(rowKey.getRowId())) { return false; /* fila recion insertada o ya editada */ } if (this.getCachedRowSet().rowDeleted() || this.getCachedRowSet().rowInserted()) { /* throws SQLException */ throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.UPDATE_ROW_EXCEPTION_3)); } if (this.isFuncionInsertEjecutada() || this.isFuncionDeleteEjecutada()) { throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.UPDATE_ROW_EXCEPTION_4)); } this.setFuncionUpdate(funcion); /* throws ExcepcionAplicacion */ if (this.esPermitidoEditar(rowKey)) { if (this.esFilaModificable(rowKey, funcion)) { this.setFuncionUpdateEjecutada(true); this.getFilasProcesadas().put(rowKey.getRowId(), rowKey); this.posEditRow(rowKey, funcion); /* fire afterEditRow event? */ this.setFilaEscogida(rowKey); return true; } } // String mensaje = TLC.getBitacora().error(CBM2.UPDATE_ROW_EXCEPTION_2, this.getEtiquetaRecurso(rowKey)); // throw new ExcepcionAplicacion(mensaje); this.setMensajeErrorFinal(CBM2.CHECK_CHANGES_EXCEPTION_0); } else { TLC.getBitacora().warn(CBM2.UPDATE_NONE); } return false; } catch (SQLException ex) { TLC.getBitacora().fatal(ex); throw new ExcepcionAplicacion(ex); } } protected boolean esPermitidoEditar(RowKey rowKey) { Bitacora.trace(getClass(), "esPermitidoEditar", rowKey); Object object = execute(getBeforeEditingProcedure(), getIdentificacionRecurso(rowKey)); return object == null || BitUtils.valueOf(object); } protected boolean esFilaModificable(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "esFilaModificable", rowKey, funcion); return this.esFilaRecursoPropio(rowKey, funcion) && this.esFilaSegmentoAutorizado(rowKey, funcion); } protected void posEditRow(RowKey rowKey, long funcion) { /* fire afterEditRow event? */ Bitacora.trace(this.getClass(), "posEditRow", rowKey, funcion); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a undoRow"> public boolean undoRow(Set rowSet) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "undoRow"); if (rowSet.isEmpty()) { TLC.getBitacora().warn(CBM2.UNDO_CHANGES_NONE); return false; } else { Iterator iterator = rowSet.iterator(); while (iterator.hasNext()) { RowKey rowKey = (RowKey) iterator.next(); this.undoRow(rowKey); /* throws ExcepcionAplicacion */ } return true; } } public boolean undoRow(RowKey rowKey) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "undoRow", rowKey); try { if (this.isRowAvailable(rowKey)) { if (this.getFilasProcesadas() .containsKey(rowKey.getRowId())) { /* fila insertada o editada y aun no confirmada */ this.setCursorRow(rowKey); /* throws SQLException */ if (this.getCachedRowSet().rowInserted()) { /* throws SQLException */ // this.getCachedRowSet().undoInsert(); throws SQLException Y NO FUNCIONA! super.removeRow( rowKey); /* siempre es posible eliminar lo recion insertado y aun no guardado */ this.setFuncionDeleteEjecutada(true); } else { // this.getCachedRowSet().undoUpdate(); /* throws SQLException */ NO FUNCIONA! this.getCachedRowSet().cancelRowUpdates(); /* throws SQLException */ } if (this.esFilaEscogida(rowKey)) { this.resetFilaEscogida(); } this.getFilasProcesadas().remove(rowKey.getRowId()); this.getFilasConflictivas().remove(rowKey.getRowId()); this.checkRevertChanges(); return true; } } else { TLC.getBitacora().warn(CBM2.UNDO_CHANGES_NONE); } return false; } catch (SQLException | DataProviderException ex) { TLC.getBitacora().fatal(ex); throw new ExcepcionAplicacion(ex); } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a removeRow"> /** * {@inheritDoc} */ @Override public void removeRow(RowKey rowKey) throws DataProviderException { this.removeRow(rowKey, this.getFuncionDelete()); /* throws ExcepcionAplicacion */ } public void removeRow(Set rowSet) throws DataProviderException { this.removeRow(rowSet, this.getFuncionDelete()); /* throws ExcepcionAplicacion */ } public void removeRow(Set rowSet, long funcion) throws DataProviderException { Bitacora.trace(this.getClass(), "removeRow", funcion); try { this.setFuncionDelete(funcion); /* throws ExcepcionAplicacion */ if (rowSet.isEmpty()) { TLC.getBitacora().warn(CBM2.DELETE_NONE); } else { this.setMensajeErrorFinal(null); Iterator iterator = rowSet.iterator(); while (iterator.hasNext()) { RowKey rowKey = (RowKey) iterator.next(); this.removeRow(rowKey, funcion); /* throws DataProviderException */ } if (this.getMensajeErrorFinal() != null) { TLC.getBitacora().error(this.getMensajeErrorFinal()); } } } catch (ExcepcionAplicacion ex) { throw new DataProviderException(ex); } catch (DataProviderException ex) { // viene de removeRow(rowKey, funcion) y por lo tanto ya esta anotado en la bitacora throw ex; } } public void removeRow(RowKey rowKey, long funcion) throws DataProviderException { Bitacora.trace(this.getClass(), "removeRow", rowKey, funcion); try { if (this.isRowAvailable(rowKey)) { this.setCursorRow(rowKey); /* throws TableCursorVetoException */ if (this.getCachedRowSet().rowInserted()) { /* throws SQLException */ this.undoRow(rowKey); /* siempre es posible eliminar lo recion insertado y aun no guardado */ } else { if (this.isFuncionInsertEjecutada() || this.isFuncionUpdateEjecutada()) { throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.DELETE_ROW_EXCEPTION_4)); } this.setFuncionDelete(funcion); /* throws ExcepcionAplicacion */ if (this.esPermitidoEliminar(rowKey)) { if (this.esFilaEliminable(rowKey, funcion)) { this.preRemoveRow(rowKey, funcion); /* fire beforeRemoveRow event? */ super.removeRow(rowKey); /* throws DataProviderException */ this.setFuncionDeleteEjecutada(true); this.getFilasRemovidas().put(rowKey.getRowId(), rowKey); if (this.esFilaEscogida(rowKey)) { this.resetFilaEscogida(); } this.getFilasProcesadas().remove(rowKey.getRowId()); this.getFilasConflictivas().remove(rowKey.getRowId()); this.posRemoveRow(rowKey, funcion); /* fire afterRemoveRow event? */ this.incrementaFilasEliminadas(); return; } } // String mensaje = TLC.getBitacora().error(CBM2.DELETE_ROW_EXCEPTION_2, this.getEtiquetaRecurso(rowKey)); // throw new ExcepcionAplicacion(mensaje); this.setMensajeErrorFinal(CBM2.CHECK_CHANGES_EXCEPTION_0); } } else { TLC.getBitacora().warn(CBM2.DELETE_NONE); } } catch (ExcepcionAplicacion ex) { throw new DataProviderException(ex); } catch (SQLException ex) { TLC.getBitacora().fatal(ex); throw new DataProviderException(ex); } catch (DataProviderException ex) { TLC.getBitacora().fatal(ex); throw ex; } } protected boolean esPermitidoEliminar(RowKey rowKey) { Bitacora.trace(getClass(), "esPermitidoEliminar", rowKey); Object object = execute(getBeforeRemovingProcedure(), getIdentificacionRecurso(rowKey)); return object == null || BitUtils.valueOf(object); } protected boolean esFilaEliminable(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "esFilaEliminable", rowKey, funcion); return this.esFilaRecursoPropio(rowKey, funcion) && this.esFilaSegmentoAutorizado(rowKey, funcion); } protected void preRemoveRow(RowKey rowKey, long funcion) { /* fire beforeRemoveRow event? */ Bitacora.trace(this.getClass(), "preRemoveRow", rowKey, funcion); } protected void posRemoveRow(RowKey rowKey, long funcion) { /* fire afterRemoveRow event? */ Bitacora.trace(this.getClass(), "posRemoveRow", rowKey, funcion); FieldKey[] fields = this.getFieldKeys(); for (int i = 0; i < fields.length; i++) { Object obj = this.getValue(fields[i]); String value = "NULL"; if (obj != null) { value = this.getValue(fields[i]).toString(); } Bitacora.trace(fields[i].getDisplayName() + " = " + value); } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a processRow"> public boolean processRow(Set rowSet, long funcion) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "processRow", funcion); // if (!TLC.getControlador().esFuncionAutorizada(funcion)) { // throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.PROCESS_ROW_EXCEPTION_1)); // } this.setFuncionBusinessProcess(funcion); /* throws ExcepcionAplicacion */ if (rowSet.isEmpty()) { TLC.getBitacora().warn(CBM2.PROCESS_NONE); return false; } else { this.setMensajeErrorFinal(null); Iterator iterator = rowSet.iterator(); while (iterator.hasNext()) { RowKey rowKey = (RowKey) iterator.next(); this.processRow(rowKey, funcion); /* throws ExcepcionAplicacion */ } if (this.getMensajeErrorFinal() != null) { TLC.getBitacora().error(this.getMensajeErrorFinal()); } return false; } } public boolean processRow(RowKey rowKey, long funcion) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "processRow", rowKey, funcion); if (this.canProcessRow(rowKey, funcion)) { this.runProcessRow(rowKey, funcion); /* fire onProcessRow event? */ this.posProcessRow(rowKey, funcion); /* fire afterProcessRow event? */ return true; } return false; } public boolean canProcessRow(RowKey rowKey, long funcion) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "canProcessRow", rowKey, funcion); try { if (this.isRowAvailable(rowKey)) { this.setCursorRow(rowKey); /* throws SQLException */ if (this.getCachedRowSet().rowDeleted() || this.getCachedRowSet().rowUpdated() || this.getCachedRowSet().rowInserted()) { /* throws SQLException */ throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.PROCESS_ROW_EXCEPTION_3)); } if (this.isLoteConCambios()) { /*(this.isFuncionInsertEjecutada() || this.isFuncionUpdateEjecutada() || this.isFuncionDeleteEjecutada())*/ throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.PROCESS_ROW_EXCEPTION_4)); } // if (!TLC.getControlador().esFuncionAutorizada(funcion)) { // throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.PROCESS_ROW_EXCEPTION_1)); // } this.setFuncionBusinessProcess(funcion); /* throws ExcepcionAplicacion */ if (this.esFilaProcesable(rowKey, funcion)) { TLC.getBitacora().info(CBM2.CHECK_CHANGES_1, this.getEtiquetaRecurso(rowKey)); return true; } this.setMensajeErrorFinal(CBM2.CHECK_CHANGES_EXCEPTION_0); // String mensaje = TLC.getBitacora().error(CBM2.PROCESS_ROW_EXCEPTION_2, this.getEtiquetaRecurso(rowKey)); // throw new ExcepcionAplicacion(mensaje); } else { TLC.getBitacora().warn(CBM2.PROCESS_NONE); } return false; } catch (SQLException ex) { TLC.getBitacora().fatal(ex); throw new ExcepcionAplicacion(ex); } } protected boolean esFilaProcesable(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "esFilaProcesable", rowKey, funcion); return this.esFilaRecursoPropio(rowKey, funcion) && this.esFilaSegmentoAutorizado(rowKey, funcion); } protected void runProcessRow(RowKey rowKey, long funcion) throws ExcepcionAplicacion { /* fire onProcessRow event? */ Bitacora.trace(this.getClass(), "runProcessRow", rowKey, funcion); } protected void posProcessRow(RowKey rowKey, long funcion) { /* fire afterProcessRow event? */ Bitacora.trace(this.getClass(), "posProcessRow", rowKey, funcion); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a commit y revert"> /** * (@inheritDoc} */ @Override public void commitChanges() throws DataProviderException { Bitacora.trace(this.getClass(), "commitChanges"); try { if (this.isFuncionDeleteEjecutada() || !this.getFilasProcesadas().values().isEmpty()) { if (this.esLoteValido()) { /* throws ExcepcionAplicacion */ Connection connection = TLC.getConnection(); /* conexion para los rastros de auditoria */ DB.setAutoCommit(connection, false); /* para que los rastros de auditoria no se confirmen sin antes confirmar los cambios */ this.preCommitChanges(); /* graba los rastros de auditoria // throws ExcepcionAplicacion */ super.commitChanges(); /* confirma los cambios // throws DataProviderException */ DB.commit(connection); /* confirma los rastros de auditoria */ this.resetState(); } else { throw new ExcepcionAplicacion(TLC.getBitacora().error(CBM2.COMMIT_CHANGES_EXCEPTION)); } } else { TLC.getBitacora().warn(CBM2.NO_CHANGES_TO_COMMIT); this.resetState(); } } catch (ExcepcionAplicacion ex) { throw new DataProviderException(ex); } catch (DataProviderException ex) { TLC.getBitacora().fatal(ex); throw ex; } } private boolean checkRevertChanges() throws DataProviderException { // ejecuta el metodo revertChanges si NO quedan filas agregadas, editadas o eliminadas // vale mas un "por si acaso" ... boolean check = (this.getFilasProcesadas().isEmpty() && this.getFilasEliminadas() == 0); if (check) { this.revertChanges(); this.refresh(); } return check; } /** * {@inheritDoc} */ @Override public void revertChanges() throws DataProviderException { Bitacora.trace(this.getClass(), "revertChanges"); super.revertChanges(); /* throws DataProviderException */ this.resetState(); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a refresh"> /** * {@inheritDoc} */ @Override public void refresh() throws DataProviderException { Bitacora.trace(this.getClass(), "refresh"); super.refresh(); /* throws DataProviderException */ this.resetFlags(); this.resetState(); this.setFuncionSelectEjecutada(true); // this.setFuncionDeleteEjecutada(false) en este punto, porque despues del refresh ya no ocurre el java.lang.IllegalArgumentException this.setFuncionDeleteEjecutada( false); /* removeRow + appendRow + setCursorRow = java.lang.IllegalArgumentException ... */ this.restoreFilaEscogida(); int limite = this.getLimiteFilasFuncionSelect(); if (limite > 0) { int filas = this.getRowCount(); Bitacora.trace(this.getClass(), "refresh", "limite=" + limite, "filas=" + filas); if (filas == limite) { TLC.getBitacora().warn(CBM2.SELECT_ROW_LIMIT_REACHED, String.valueOf(limite)); } } } private void resetFlags() { this.setFiltroFuncionSelectModificado(false); this.setCodigoFuncionSelectModificado(false); this.setNombreFuncionSelectModificado(false); } private void resetState() { this.getFilasElegidas().clear(); this.getFilasProcesadas().clear(); this.getFilasRemovidas().clear(); this.getFilasConflictivas().clear(); this.setFilasEliminadas(0); this.setFuncionInsertEjecutada(false); this.setFuncionUpdateEjecutada(false); //----->this.setFuncionDeleteEjecutada(false); /* removeRow + appendRow + setCursorRow = java.lang.IllegalArgumentException ... */ } private void restoreFilaEscogida() { Bitacora.trace(this.getClass(), "restoreFilaEscogida"); try { if (this.isLoteSinFilas()) { this.resetFilaEscogida(); } else { RowKey rowKey = null; if (this.isRecursoIdentificable()) { String clave = this.getRecursoIdentificableDataProvider().getColumnaIdentificacionRecurso(); Long valor = this.getIdentificacionFilaEscogida(); Bitacora.trace(this.getClass(), "restoreFilaEscogida", clave + "=" + valor); if (valor != null) { rowKey = this.findFirst(clave, valor); } } if (rowKey == null && this.isRecursoEnumerable()) { String clave = this.getRecursoEnumerableDataProvider().getColumnaNumeroRecurso(); Integer valor = this.getNumeroFilaEscogida(); Bitacora.trace(this.getClass(), "restoreFilaEscogida", clave + "=" + valor); if (valor != null) { rowKey = this.findFirst(clave, valor); } } if (rowKey == null && this.isRecursoCodificable()) { String clave = this.getRecursoCodificableDataProvider().getColumnaCodigoRecurso(); String valor = this.getCodigoFilaEscogida(); Bitacora.trace(this.getClass(), "restoreFilaEscogida", clave + "=" + valor); if (valor != null) { rowKey = this.findFirst(clave, valor); /* TODO: OJO con (appendRow + codigo que ya existe + revert + refresh) */ } } if (this.isRowAvailable(rowKey)) { this.setCursorRow(rowKey); this.setFilaEscogida(rowKey); } else { this.setFilaEscogida(); /* attempt to set to current cursor row */ } } } catch (Exception ex) { this.resetFilaEscogida(); } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a release, ..."> public void release() throws SQLException { this.getCachedRowSet().release(); this.incrementaVersionComandoSelect(); this.reset(); } public void setComandoEmptyCachedRowSet() throws ExcepcionAplicacion { this.setComandoEmptyCachedRowSet("SELECT * FROM " + this.getCodigoDominioRecurso() + " WHERE (0=1)"); } public void setComandoEmptyCachedRowSet(String comando) throws ExcepcionAplicacion { this.setComandoCachedRowSet(comando, true); this.reset(); } void reset() { this.resetFilter(); this.resetState(); this.setFuncionSelectEjecutada(false); this.setFuncionDeleteEjecutada(false); this.setFilaEscogida(null); } public void storeQuery() { this.storeCommand(); this.storeFilter(); this.storeMaster(); } public void restoreQuery() throws ExcepcionAplicacion { this.restoreCommand(); this.restoreFilter(); this.restoreMaster(); } void resetFilter() { this.setFiltroFuncionSelect(null); this.setCodigoFuncionSelect(null); this.setNombreFuncionSelect(null); this.setFiltroFuncionSelectModificado(true); this.setCodigoFuncionSelectModificado(true); this.setNombreFuncionSelectModificado(true); } void resetMaster() { this.setColumnaMaestro(null); this.setIdentificacionMaestro(null); } void storeCommand() { Bitacora.trace(this.getClass(), "storeCommand", "Comando=" + this.getComandoSelectAnsi()); Bitacora.trace(this.getClass(), "storeCommand", "Version=" + this.getVersionComandoSelect()); this.setComandoSelectAnterior(this.getComandoSelectAnsi()); this.setVersionComandoSelectAnterior(this.getVersionComandoSelect()); } void restoreCommand() throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "restoreCommand", "Comando=" + this.getComandoSelectAnterior()); Bitacora.trace(this.getClass(), "restoreCommand", "Version=" + this.getVersionComandoSelectAnterior()); this.setComandoCachedRowSet(this.getComandoSelectAnterior(), true); this.setVersionComandoSelect(this.getVersionComandoSelectAnterior()); } void storeFilter() { Bitacora.trace(this.getClass(), "storeFilter", "Filtro=" + this.getFiltroFuncionSelect()); Bitacora.trace(this.getClass(), "storeFilter", "Codigo=" + this.getCodigoFuncionSelect()); Bitacora.trace(this.getClass(), "storeFilter", "Nombre=" + this.getNombreFuncionSelect()); this.setFiltroFuncionSelectAnterior(this.getFiltroFuncionSelect()); this.setCodigoFuncionSelectAnterior(this.getCodigoFuncionSelect()); this.setNombreFuncionSelectAnterior(this.getNombreFuncionSelect()); } void restoreFilter() { Bitacora.trace(this.getClass(), "restoreFilter", "Filtro=" + this.getFiltroFuncionSelectAnterior()); Bitacora.trace(this.getClass(), "restoreFilter", "Codigo=" + this.getCodigoFuncionSelectAnterior()); Bitacora.trace(this.getClass(), "restoreFilter", "Nombre=" + this.getNombreFuncionSelectAnterior()); this.setFiltroFuncionSelect(this.getFiltroFuncionSelectAnterior()); this.setCodigoFuncionSelect(this.getCodigoFuncionSelectAnterior()); this.setNombreFuncionSelect(this.getNombreFuncionSelectAnterior()); this.setFiltroFuncionSelectModificado(false); this.setCodigoFuncionSelectModificado(false); this.setNombreFuncionSelectModificado(false); } void storeMaster() { Bitacora.trace(this.getClass(), "storeMaster", "Clave=" + this.getColumnaMaestro()); Bitacora.trace(this.getClass(), "storeMaster", "Valor=" + this.getIdentificacionMaestro()); this.setColumnaMaestroAnterior(this.getColumnaMaestro()); this.setIdentificacionMaestroAnterior(this.getIdentificacionMaestro()); } void restoreMaster() { Bitacora.trace(this.getClass(), "restoreMaster", "Clave=" + this.getColumnaMaestroAnterior()); Bitacora.trace(this.getClass(), "restoreMaster", "valor=" + this.getIdentificacionMaestroAnterior()); this.setColumnaMaestro(this.getColumnaMaestroAnterior()); this.setIdentificacionMaestro(this.getIdentificacionMaestroAnterior()); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a validaciones"> public boolean esFilaAutorizada(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "esFilaAutorizada", rowKey, funcion); boolean es = true; try { if (this.isRowAvailable(rowKey)) { this.setCursorRow(rowKey); /* throws SQLException */ if (this.getCachedRowSet().rowDeleted() || this.getCachedRowSet().rowUpdated() || this.getCachedRowSet().rowInserted()) { /* throws SQLException */ TLC.getBitacora().error(CBM2.PROCESS_ROW_EXCEPTION_3); es = false; } if (this.isLoteConCambios()) { /*(this.isFuncionInsertEjecutada() || this.isFuncionUpdateEjecutada() || this.isFuncionDeleteEjecutada())*/ TLC.getBitacora().error(CBM2.PROCESS_ROW_EXCEPTION_4); es = false; } if (TLC.getControlador().esFuncionAutorizada(funcion)) { es &= this.esFilaRecursoPropio(rowKey, funcion); es &= this.esFilaSegmentoAutorizado(rowKey, funcion); } else { TLC.getBitacora().error(CBM2.PROCESS_ROW_EXCEPTION_1); es = false; } } else { TLC.getBitacora().warn(CBM2.PROCESS_NONE); es = false; } } catch (SQLException ex) { TLC.getBitacora().fatal(ex); es = false; } return es; } public boolean esFilaRecursoActivo(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "esFilaRecursoActivo", rowKey, funcion); if (this.isRecursoDesactivable()) { Integer inactivo = this.getRecursoDesactivableDataProvider().getEsRecursoInactivo(rowKey); if (BitUtils.valueOf(inactivo)) { String columna = this.isRecursoIdentificable() ? this.getRecursoIdentificableDataProvider().getColumnaIdentificacionRecurso() : this.isRecursoEnumerable() ? this.getRecursoEnumerableDataProvider().getColumnaNumeroRecurso() : this.getNombreDominioRecurso(); TLC.getBitacora().error(CBM2.RECURSO_INACTIVO, "<" + columna + ">", this.getEtiquetaRecurso(rowKey)); return false; } else { return true; } } return true; } public boolean esFilaRecursoPropio(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "esFilaRecursoPropio", rowKey, funcion); if (this.isRecursoPersonalizable()) { Long propietario = this.getRecursoPersonalizableDataProvider().getPropietarioRecurso(rowKey); if (TLC.getControlador().esPropietarioRecurso(propietario, funcion)) { return true; } else { String columna = this.getRecursoPersonalizableDataProvider().getColumnaPropietarioRecurso(); TLC.getBitacora().error(CBM2.USUARIO_NO_PROPIETARIO, "<" + columna + ">", this.getEtiquetaRecurso(rowKey)); return false; } } return true; } public boolean esFilaSegmentoAutorizado(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "esFilaSegmentoAutorizado", rowKey, funcion); if (this.isRecursoSegmentable()) { Long segmento = this.getRecursoSegmentableDataProvider().getSegmentoRecurso(rowKey); if (TLC.getControlador().esSegmentoAutorizado(segmento, funcion)) { return true; } else { String columna = this.getRecursoSegmentableDataProvider().getColumnaSegmentoRecurso(); TLC.getBitacora().error(CBM2.SEGMENTO_NO_AUTORIZADO, "<" + columna + ">", this.getEtiquetaRecurso(rowKey)); return false; } } return true; } public boolean esLoteValido() throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "esLoteValido"); this.getFilasConflictivas().clear(); this.filasProcesadasPorConfirmar = 0; boolean ok = true; // boolean cursor = this.cursorFirst(); // while (cursor) { // ok &= this.esFilaValida(this.cursorRow, false); // cursor = this.cursorNext(); // } Collection filas = this.getFilasProcesadas().values(); if (filas.isEmpty()) { // la lista de filas procesadas no incluye las filas eliminadas, // por lo tanto seria valido hacer commit aun cuando este vacia // ok = this.isFuncionDeleteEjecutada(); // if (!ok) // TLC.getBitacora().warn(CBM2.NO_CHANGES_TO_COMMIT); } else { Iterator iterator = filas.iterator(); while (iterator.hasNext()) { RowKey rowKey = (RowKey) iterator.next(); ok &= this.esFilaValida(rowKey, true); } } return ok; } public boolean esFilaValida(RowKey rowKey) throws ExcepcionAplicacion { return this.esFilaValida(rowKey, true); } private boolean esFilaValida(RowKey rowKey, boolean cursor) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "esFilaValida", rowKey, String.valueOf(cursor)); try { long funcion = -1L; int status = SyncResolver.NO_ROW_CONFLICT; int tipoError = 3; /* OJO con la constante, 3 -> fila con uno o mas errores, todos conocidos */ boolean ejecutada = false; boolean autorizada = false; String comando; String mensaje; if (cursor) { this.setCursorRow(rowKey); /* throws TableCursorVetoException */ } if (this.getCachedRowSet().rowInserted()) { /* throws SQLException */ funcion = this.getFuncionInsert(); status = SyncResolver.INSERT_ROW_CONFLICT; ejecutada = true; /* this.isFuncionInsertEjecutada(); */ autorizada = this.isFuncionInsertAutorizada(); } else { if (this.getCachedRowSet().rowUpdated()) { /* throws SQLException */ funcion = this.getFuncionUpdate(); status = SyncResolver.UPDATE_ROW_CONFLICT; ejecutada = true; /* this.isFuncionUpdateEjecutada(); */ autorizada = this.isFuncionUpdateAutorizada(); } } boolean es = true; if (ejecutada) { this.filasProcesadasPorConfirmar++; if (autorizada) { es = this.esFilaValida(rowKey, funcion); /* check */ if (es) { Bitacora.trace(CBM2.CHECK_CHANGES_1, this.getEtiquetaRecurso(rowKey)); } else { comando = DBUtils.getTransactionLabel(status); mensaje = tipoError + TLC.getBitacora().error(CBM2.CHECK_CHANGES_EXCEPTION_2, comando, this.getEtiquetaRecurso(rowKey)); this.getFilasConflictivas().put(rowKey.getRowId(), mensaje); } } else { comando = DBUtils.getTransactionLabel(status); mensaje = tipoError + TLC.getBitacora().error(CBM2.CHECK_CHANGES_EXCEPTION_2, comando, this.getEtiquetaRecurso(rowKey)); this.getFilasConflictivas().put(rowKey.getRowId(), mensaje); } } else { Bitacora.trace(CBM2.CHECK_CHANGES_2, this.getEtiquetaRecurso(rowKey)); } return es; } catch (IllegalArgumentException | SQLException | DataProviderException ex) { TLC.getBitacora().fatal(ex); throw new ExcepcionAplicacion(ex); } } protected boolean esFilaValida(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "esFilaValida", rowKey, funcion); return this.esFilaSegmentoAutorizado(rowKey, funcion); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a preCommitRow"> protected void preCommitChanges() throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "preCommitChanges"); if (this.getFilasProcesadas().size() > 0) { Collection filas = this.getFilasProcesadas().values(); Iterator iterator = filas.iterator(); while (iterator.hasNext()) { RowKey rowKey = (RowKey) iterator.next(); this.preCommitRow(rowKey, true); } } if (this.getFilasRemovidas().size() > 0) { Collection filas = this.getFilasRemovidas().values(); Iterator iterator = filas.iterator(); while (iterator.hasNext()) { RowKey rowKey = (RowKey) iterator.next(); this.preCommitRow(rowKey, false); } } } protected void preCommitRow(RowKey rowKey) throws ExcepcionAplicacion { this.preCommitRow(rowKey, true); } protected void preCommitRow(RowKey rowKey, boolean cursor) throws ExcepcionAplicacion { Bitacora.trace(this.getClass(), "preCommitRow", rowKey, String.valueOf(cursor)); try { long funcion = -1L; boolean ejecutada = false; if (cursor) { this.setCursorRow(rowKey); /* throws TableCursorVetoException */ if (this.getCachedRowSet().rowInserted()) { /* throws SQLException */ funcion = this.getFuncionInsert(); ejecutada = true; /* this.isFuncionInsertEjecutada(); */ if (this.isRecursoIdentificable()) { Long identificacion = this.getRecursoIdentificableDataProvider() .getIdentificacionRecurso(rowKey); if (identificacion == null || identificacion == 0) { identificacion = LongUtils.getNewId(); this.getRecursoIdentificableDataProvider().setIdentificacionRecurso(rowKey, identificacion); } if (this.isRecursoCodificable()) { String codigo = this.getRecursoCodificableDataProvider().getCodigoRecurso(rowKey); if (StringUtils.isBlank(codigo)) { codigo = identificacion.toString(); this.getRecursoCodificableDataProvider().setCodigoRecurso(rowKey, codigo); } } } if (this.isRecursoEnumerable() && this.isRecursoCodificable()) { String codigo = this.getRecursoCodificableDataProvider().getCodigoRecurso(rowKey); if (StringUtils.isBlank(codigo)) { Integer numero = this.getRecursoEnumerableDataProvider().getNumeroRecurso(rowKey); if (numero != null) { codigo = numero.toString(); this.getRecursoCodificableDataProvider().setCodigoRecurso(rowKey, codigo); } } } } else { if (this.getCachedRowSet().rowUpdated()) { /* throws SQLException */ funcion = this.getFuncionUpdate(); ejecutada = true; /* this.isFuncionUpdateEjecutada(); */ } else { if (this.getCachedRowSet().rowDeleted()) { /* throws SQLException */ funcion = this.getFuncionDelete(); ejecutada = true; /* this.isFuncionDeleteEjecutada(); */ } } } } else { funcion = this.getFuncionDelete(); ejecutada = true; /* this.isFuncionDeleteEjecutada(); */ } if (ejecutada && funcion > 0) { this.preCommitRow(rowKey, funcion); } else { Bitacora.trace(CBM2.CHECK_CHANGES_2, this.getEtiquetaRecurso(rowKey)); } } catch (IllegalArgumentException | SQLException | DataProviderException ex) { TLC.getBitacora().fatal(ex); throw new ExcepcionAplicacion(ex); } } protected void preCommitRow(RowKey rowKey, long funcion) { Bitacora.trace(this.getClass(), "preCommitRow", rowKey, funcion); FieldKey[] fields = this.getFieldKeys(); for (int i = 0; i < fields.length; i++) { Object obj = this.getValue(fields[i]); String value = "NULL"; if (obj != null) { value = this.getValue(fields[i]).toString(); } Bitacora.trace(fields[i].getDisplayName() + " = " + value); } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos correspondientes a setValue"> // /** // * {@inheritDoc} // */ // @Override // public void setValue(String fieldId, Object value) throws DataProviderException { // Object object = this.getSqlObject(fieldId, value); // super.setValue(fieldId, object); // } // // /** // * {@inheritDoc} // */ // @Override // public void setValue(String fieldId, RowKey row, Object value) throws DataProviderException { // Object object = this.getSqlObject(fieldId, value); // super.setValue(fieldId, row, object); // } // // /** // * {@inheritDoc} // */ // @Override // public void setValue(FieldKey fieldKey, Object value) throws DataProviderException { // Object object = this.getSqlObject(fieldKey, value); // super.setValue(fieldKey, object); // } // /** * {@inheritDoc} */ @Override public void setValue(FieldKey fieldKey, RowKey row, Object value) throws DataProviderException { Bitacora.trace(this.getClass(), "setValue", fieldKey, row, value); Object object = this.getSqlObject(fieldKey, value); super.setValue(fieldKey, row, object); } private static Calendar calendar = Calendar.getInstance(); private Object getSqlObject(FieldKey fieldKey, Object value) { if (value == null) { return null; } String fieldId = fieldKey.getFieldId(); int type = this.getSqlColumnType(fieldId); boolean nullable = this.isNullableColumn(fieldId); if (nullable && value instanceof String && StringUtils.isBlank((String) value)) { return null; } Object object = value; Bitacora.trace(fieldId + " (" + type + ", " + nullable + ") = (" + object.getClass().getSimpleName() + ") " + object); switch (type) { case java.sql.Types.INTEGER: if (value instanceof Long) { object = Integer.valueOf(((Long) value).intValue()); } else if (value instanceof BigInteger) { object = Integer.valueOf(((BigInteger) value).intValue()); } else if (value instanceof Double) { object = Integer.valueOf(((Double) value).intValue()); } break; case java.sql.Types.BIGINT: if (value instanceof Integer) { object = Long.valueOf(((Integer) value).longValue()); } else if (value instanceof BigInteger) { object = Long.valueOf(((BigInteger) value).longValue()); } else if (value instanceof Double) { object = Long.valueOf(((Double) value).longValue()); } break; case java.sql.Types.NUMERIC: case java.sql.Types.DECIMAL: if (value instanceof Integer) { object = BigDecimal.valueOf(((Integer) value).longValue()); } else if (value instanceof Long) { object = BigDecimal.valueOf(((Long) value).longValue()); } else if (value instanceof BigInteger) { object = BigDecimal.valueOf(((BigInteger) value).longValue()); } else if (value instanceof Double) { object = BigDecimal.valueOf(((Double) value).doubleValue()); } break; case java.sql.Types.TIMESTAMP: if (value instanceof Date) { calendar.setTime((Date) value); object = new Timestamp(calendar.getTimeInMillis()); } break; default: break; } Bitacora.trace(fieldId + " (" + type + ", " + nullable + ") = (" + object.getClass().getSimpleName() + ") " + object); return object; } private int getSqlColumnType(String fieldId) { try { ResultSetMetaData rsmd = this.getCachedRowSet().getMetaData(); int numberOfColumns = rsmd.getColumnCount(); for (int i = 1; i <= numberOfColumns; i++) { if (rsmd.getColumnName(i).equalsIgnoreCase(fieldId)) { return rsmd.getColumnType(i); } } } catch (Exception ex) { TLC.getBitacora().fatal(ex); } return java.sql.Types.OTHER; } private boolean isNullableColumn(String fieldId) { try { ResultSetMetaData rsmd = this.getCachedRowSet().getMetaData(); int numberOfColumns = rsmd.getColumnCount(); for (int i = 1; i <= numberOfColumns; i++) { if (rsmd.getColumnName(i).equalsIgnoreCase(fieldId)) { if (rsmd.isNullable(i) == ResultSetMetaData.columnNullable) { return true; } else { return false; } } } } catch (Exception ex) { TLC.getBitacora().fatal(ex); } return false; } public boolean isColumnaDisponible(String fieldId) { try { ResultSetMetaData rsmd = this.getCachedRowSet().getMetaData(); int numberOfColumns = rsmd.getColumnCount(); for (int i = 1; i <= numberOfColumns; i++) { if (rsmd.getColumnName(i).equalsIgnoreCase(fieldId)) { return true; } } } catch (Exception ex) { TLC.getBitacora().fatal(ex); } return false; } // </editor-fold> public void setSegmento(RowKey rowKey) { Bitacora.trace(getClass(), "setSegmento", rowKey); if (isRecursoSegmentable() && isRowAvailable(rowKey)) { setSegmentoFields(); String colname = getSegmentoKeyColumn(); String stpname = getSegmentoFunctionName(); if (StringUtils.isNotBlank(colname) && StringUtils.isNotBlank(stpname)) { Long segmento = null; Object argumento = getValue(colname, rowKey); if (argumento instanceof Long) { Object object = execute(stpname, argumento); segmento = LongUtils.toLong(object); } getRecursoSegmentableDataProvider().setSegmentoRecurso(rowKey, segmento); } } } private void setSegmentoFields() { String colname = null; String stpname = null; String tabname = this.getTablaDestino(); if (StringUtils.isNotBlank(tabname)) { colname = BundleSegmentos.getKeyColumn(tabname); stpname = BundleSegmentos.getFunctionName(tabname); if (StringUtils.isBlank(colname) || StringUtils.isBlank(stpname)) { colname = null; stpname = null; } else if (colname.contains("{maestro}") || stpname.contains("{maestro}")) { tabname = this.getTablaMaestro(); if (StringUtils.isBlank(tabname)) { colname = null; stpname = null; } else { colname = this.getColumnaMaestro(); stpname = stpname.replace("{maestro}", tabname); if (StringUtils.isBlank(colname)) { colname = null; stpname = null; } } } } this.setSegmentoKeyColumn(colname); this.setSegmentoFunctionName(stpname); } private Object execute(String procedure, Object argumento) { // throws SQLException Bitacora.trace(getClass(), "executeFunction", procedure, argumento); if (StringUtils.isNotBlank(procedure) && argumento != null) { try { if (TLC.getAgenteSql().isStoredProcedure(procedure)) { Object[] args = new Object[] { argumento }; Object resultado = TLC.getAgenteSql().executeProcedure(procedure, args); if (resultado instanceof ResultSet) { ResultSet resultSet = (ResultSet) resultado; if (resultSet.next()) { return resultSet.getObject(1); } // } else if (resultado instanceof Number) { // return resultado; } return resultado; } } catch (SQLException ex) { String localizedMessage = StringUtils.substringBefore(ex.getLocalizedMessage(), " Where: "); TLC.getBitacora().error(localizedMessage); return ex; } } return null; } private String getBeforeAppendingProcedure() { String tablaDestino = getTablaDestino(); String tablaMaestro = getTablaMaestro(); if (StringUtils.isBlank(tablaDestino) || StringUtils.isBlank(tablaMaestro)) { return null; } return tablaMaestro + "_b4_append_" + tablaDestino; } private String getBeforeEditingProcedure() { String tablaDestino = getTablaDestino(); if (StringUtils.isBlank(tablaDestino)) { return null; } return tablaDestino + "_b4_edit"; } private String getBeforeRemovingProcedure() { String tablaDestino = getTablaDestino(); if (StringUtils.isBlank(tablaDestino)) { return null; } return tablaDestino + "_b4_remove"; } }