Java tutorial
/* * 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 mas informacin. * */ package ips1ap101.lib.core.web.app; import com.sun.data.provider.DataProviderException; import com.sun.data.provider.RowKey; import com.sun.webui.jsf.model.Option; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.SQLException; import java.util.Map; import ips1ap101.lib.base.BaseBundle; import ips1ap101.lib.base.bundle.BundleWebui; import ips1ap101.lib.base.constant.CBM; import ips1ap101.lib.base.entity.enumeration.OperadorComEnumeration; import ips1ap101.lib.base.util.NumUtils; import ips1ap101.lib.core.app.Bitacora; import ips1ap101.lib.core.app.CampoBusqueda; import ips1ap101.lib.core.app.ExcepcionAplicacion; import ips1ap101.lib.core.app.FiltroBusqueda; import ips1ap101.lib.core.app.TLC; import ips1ap101.lib.core.constant.Global; import ips1ap101.lib.core.db.xdp.RecursoCachedRowSetDataProvider; import ips1ap101.lib.core.db.xdp.RecursoCodificableDataProvider; import ips1ap101.lib.core.db.xdp.RecursoConsultableDataProvider; import ips1ap101.lib.core.db.xdp.RecursoEnumerableDataProvider; import ips1ap101.lib.core.db.xdp.RecursoIdentificableDataProvider; import ips1ap101.lib.core.db.xdp.RecursoNombrableDataProvider; import ips1ap101.lib.core.db.xdp.RecursoSegmentableDataProvider; import ips1ap101.lib.core.enumeration.EnumOpcionAbrirVentana; import ips1ap101.lib.core.enumeration.EnumSeveridadMensaje; import ips1ap101.lib.core.util.ClassX; import ips1ap101.lib.core.util.JS; import ips1ap101.lib.core.util.STP; import ips1ap101.lib.core.util.TypeValuePair; import org.apache.commons.lang.StringUtils; /** * @author Jorge Campins */ public class GestorPaginaActualizacion extends GestorPaginaBasica { public static GestorPaginaActualizacion newInstance() { Class<?> clase = GestorPaginaActualizacion.class; String subclase = ClassX.get().subclassName(clase, "page_delegate"); Object instance = ClassX.get().newInstance(clase, subclase); return (GestorPaginaActualizacion) instance; } public static GestorPaginaActualizacion newInstance(PaginaActualizacion pagina) { Class<?> clase = GestorPaginaActualizacion.class; TypeValuePair parametro = new TypeValuePair(PaginaActualizacion.class, pagina); String subclase = ClassX.get().subclassName(clase, "page_delegate"); Object instance = ClassX.get().newInstance(clase, subclase, parametro); return (GestorPaginaActualizacion) instance; } public GestorPaginaActualizacion() { super(); } public GestorPaginaActualizacion(PaginaActualizacion pagina) { super(pagina); } private static final int LIMITE_FILAS_FUNCION_SELECT = 500; // <editor-fold defaultstate="collapsed" desc="propiedades estandar de la pagina de actualizacion"> /** * Getter para propiedad paginaActualizacion. * * @return Valor de la propiedad paginaActualizacion. */ protected PaginaActualizacion getPaginaActualizacion() { return getPaginaBasica() instanceof PaginaActualizacion ? (PaginaActualizacion) getPaginaBasica() : null; } /** * Getter para propiedad paginaActualizacionConAccionMultiple. * * @return Valor de la propiedad paginaActualizacionConAccionMultiple. */ protected PaginaActualizacionConAccionMultiple getPaginaActualizacionConAccionMultiple() { return getPaginaBasica() instanceof PaginaActualizacionConAccionMultiple ? (PaginaActualizacionConAccionMultiple) getPaginaBasica() : null; } /** * Getter para propiedad paginaActualizacionConEdicionMultiple. * * @return Valor de la propiedad paginaActualizacionConEdicionMultiple. */ protected PaginaActualizacionConEdicionMultiple getPaginaActualizacionConEdicionMultiple() { return getPaginaBasica() instanceof PaginaActualizacionConEdicionMultiple ? (PaginaActualizacionConEdicionMultiple) getPaginaBasica() : null; } /** * Getter para propiedad paginaConsultaConFiltro. * * @return Valor de la propiedad paginaConsultaConFiltro. */ protected PaginaConsultaConFiltro getPaginaConsultaConFiltro() { return getPaginaBasica() instanceof PaginaConsultaConFiltro ? (PaginaConsultaConFiltro) getPaginaBasica() : null; } /** * Getter para propiedad paginaConsultaConMaestro. * * @return Valor de la propiedad paginaConsultaConMaestro. */ protected PaginaConsultaConMaestro getPaginaConsultaConMaestro() { return getPaginaBasica() instanceof PaginaConsultaConMaestro ? (PaginaConsultaConMaestro) getPaginaBasica() : null; } public boolean isPaginaConsultaConMaestro() { if (designing) { return true; } return getPaginaBasica() instanceof PaginaConsultaConMaestro; } public boolean isPaginaConsultaConArbol() { if (designing) { return true; } return getPaginaBasica() instanceof PaginaConsultaConArbol; } public boolean isPaginaConsultaConTabla() { if (designing) { return true; } return getPaginaBasica() instanceof PaginaConsultaConTabla; } public boolean isPaginaConsultaConFiltro() { if (designing) { return true; } return getPaginaBasica() instanceof PaginaConsultaConFiltro; } public boolean isPaginaConsultaSinFiltro() { return !isPaginaConsultaConFiltro(); } protected boolean isPaginaActualizacionConAccionMultiple() { return getPaginaBasica() instanceof PaginaActualizacionConAccionMultiple; } protected boolean isPaginaActualizacionConEdicionMultiple() { return getPaginaBasica() instanceof PaginaActualizacionConEdicionMultiple; } protected RecursoIdentificableDataProvider getRecursoIdentificableDataProvider() { return getPaginaActualizacion().getRecursoDataProvider().getRecursoIdentificableDataProvider(); } protected RecursoIdentificableDataProvider getRecursoMaestroIdentificableDataProvider() { return isPaginaConsultaConMaestro() ? getPaginaConsultaConMaestro().getRecursoMaestroDataProvider() .getRecursoIdentificableDataProvider() : null; } protected RecursoEnumerableDataProvider getRecursoMaestroEnumerableDataProvider() { return isPaginaConsultaConMaestro() ? getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().getRecursoEnumerableDataProvider() : null; } protected RecursoCodificableDataProvider getRecursoCodificableDataProvider() { return getPaginaActualizacion().getRecursoDataProvider().getRecursoCodificableDataProvider(); } protected RecursoNombrableDataProvider getRecursoNombrableDataProvider() { return getPaginaActualizacion().getRecursoDataProvider().getRecursoNombrableDataProvider(); } protected RecursoSegmentableDataProvider getRecursoSegmentableDataProvider() { return getPaginaActualizacion().getRecursoDataProvider().getRecursoSegmentableDataProvider(); } protected RecursoConsultableDataProvider getRecursoConsultableDataProvider() { return getPaginaActualizacion().getRecursoDataProvider().getRecursoConsultableDataProvider(); } protected RecursoConsultableDataProvider getRecursoMaestroConsultableDataProvider() { return isPaginaConsultaConMaestro() ? getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().getRecursoConsultableDataProvider() : null; } protected String getRecursoDataProviderDataSourceName() { return getPaginaActualizacion().getRecursoDataProvider().getCachedRowSet().getDataSourceName(); } protected String getRecursoMaestroDataProviderDataSourceName() { return getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().getCachedRowSet().getDataSourceName(); } protected boolean isConsultaInsert() { if (designing) { return false; } return getPaginaActualizacion().getRecursoDataProvider().isConsultaInsertDisponible(); } protected boolean isConsultaAnteriorDisponible() { if (designing) { return true; } return getPaginaActualizacion().getRecursoDataProvider().isConsultaAnteriorDisponible(); } protected boolean isConsultaValida() { if (designing) { return true; } track("isConsultaValida"); boolean ok = !isRestauracion() && getPaginaActualizacion().getRecursoDataProvider().isFuncionSelectAutorizada(); if (ok) { long f1 = getPaginaActualizacion().getRecursoDataProvider().getFuncionSelect(); long f2 = getPaginaActualizacion().getFuncionConsultarRecurso(); trace("funcion-actual=" + f1 + ", funcion-anterior=" + f2); ok = f1 == f2; } if (ok) { long v1 = getPaginaActualizacion().getRecursoDataProvider().getVersionComandoSelect(); long v2 = getPaginaActualizacion().getContextoSesion().getVersionComandoSelectPagina(); trace("version-actual=" + v1 + ", version-anterior=" + v2); ok = v1 == v2; } if (ok && isReinicio()) { String c1 = StringUtils .trimToNull(getPaginaActualizacion().getRecursoDataProvider().getConsultaBusqueda()); String c2 = StringUtils .trimToNull(getPaginaActualizacion().getContextoPeticion().getConsultaBusqueda()); trace("consulta-actual=" + c1 + ", consulta-anterior=" + c2); ok = c1 == null ? c2 == null : c1.equals(c2); } if (ok && isReinicio()) { String c1 = StringUtils .trimToNull(getPaginaActualizacion().getRecursoDataProvider().getCriteriosBusqueda()); String c2 = StringUtils .trimToNull(getPaginaActualizacion().getContextoPeticion().getCriteriosBusqueda()); trace("criterio-actual=" + c1 + ", criterio-anterior=" + c2); ok = c1 == null ? c2 == null : c1.equals(c2); } if (ok) { // String c1 = getColumnaIdentificacionRecursoMaestro(); String c1 = getPaginaActualizacion().getRecursoDataProvider().getColumnaMaestro(); String c2 = getPaginaActualizacion().getContextoSesion().getColumnaIdentificacionRecursoMaestroPagina(); trace("maestro-actual=" + c1 + ", maestro-anterior=" + c2); ok = c1 == null ? c2 == null : c1.equals(c2); } if (ok) { // Long i1 = getIdentificacionRecursoMaestro(); Long i1 = getPaginaActualizacion().getRecursoDataProvider().getIdentificacionMaestro(); Long i2 = getPaginaActualizacion().getContextoSesion().getIdentificacionRecursoMaestroPagina(); trace("maestro-actual=" + i1 + ", maestro-anterior=" + i2); ok = i1 == null ? i2 == null : i1.equals(i2); } return ok; } protected boolean isConsultaInvalida() { return !isConsultaValida(); } protected Long getIdentificacionRecursoActual() { if (designing) { return null; } Long valor = null; try { if (getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable()) { RowKey rowKey = getCurrentRowKey(); if (getPaginaActualizacion().getRecursoDataProvider().isRowAvailable(rowKey)) { valor = getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey); } } } catch (Exception ex) { handle(ex); } finally { return valor; } } protected Long getIdentificacionRecursoEscogido() { if (designing) { return null; } Long valor = null; try { if (getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable()) { if (getPaginaActualizacion().getRecursoDataProvider().isFilaEscogidaDisponible()) { RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); valor = getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey); } } } catch (Exception ex) { handle(ex); } finally { return valor; } } protected String getColumnaIdentificacionRecurso() { if (designing) { return null; } String columna = null; if (getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable()) { columna = getRecursoIdentificableDataProvider().getColumnaIdentificacionRecurso(); } return columna; } protected String getColumnaIdentificacionRecursoMaestro() { if (designing) { return null; } String columna = null; RecursoCachedRowSetDataProvider recursoMaestroDataProvider; if (isPaginaConsultaConMaestro()) { columna = getPaginaConsultaConMaestro().getColumnaIdentificacionRecursoMaestro(); if (StringUtils.isBlank(columna)) { recursoMaestroDataProvider = getPaginaConsultaConMaestro().getRecursoMaestroDataProvider(); if (recursoMaestroDataProvider == null) { } else if (recursoMaestroDataProvider.isRecursoIdentificable()) { columna = getRecursoMaestroIdentificableDataProvider().getColumnaIdentificacionRecurso(); } else if (recursoMaestroDataProvider.isRecursoEnumerable()) { columna = getRecursoMaestroEnumerableDataProvider().getColumnaNumeroRecurso(); } } } return columna; } protected Long getIdentificacionRecursoMaestro() { if (designing) { return null; } Long valor = null; RecursoCachedRowSetDataProvider recursoMaestroDataProvider; RowKey rowKey; try { if (isPaginaConsultaConMaestro()) { recursoMaestroDataProvider = getPaginaConsultaConMaestro().getRecursoMaestroDataProvider(); if (recursoMaestroDataProvider == null) { } else if (recursoMaestroDataProvider.isFilaEscogidaDisponible()) { rowKey = recursoMaestroDataProvider.getFilaEscogida(); if (rowKey == null) { } else if (recursoMaestroDataProvider.isRecursoIdentificable()) { valor = getRecursoMaestroIdentificableDataProvider().getIdentificacionRecurso(rowKey); } else if (recursoMaestroDataProvider.isRecursoEnumerable()) { valor = NumUtils.toLong(getRecursoMaestroEnumerableDataProvider().getNumeroRecurso(rowKey)); } } } } catch (Exception ex) { handle(ex); } finally { return valor; } } public String getDenominacionFilaMaestro() { if (designing) { return null; } return isPaginaConsultaConMaestro() ? getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().getDenominacionFilaEscogida() : null; } public RowKey getCurrentRowKey() { if (designing) { return null; } return getPaginaActualizacion().getRecursoDataProvider().getCursorRow(); } public String getIdentificacionFila() { if (designing) { return null; } RowKey rowKey = getCurrentRowKey(); return getPaginaActualizacion().getRecursoDataProvider().isRowAvailable(rowKey) ? String.valueOf(Integer.parseInt(rowKey.getRowId()) + 1) : null; } public boolean isFuncionSelectHabilitada() { if (designing) { return true; } return (getPaginaActualizacion().getFuncionConsultarRecurso() > 0 && getPaginaActualizacion().getRecursoDataProvider().isFuncionSelectHabilitada()); } public boolean isFuncionSelectInhabilitada() { return !isFuncionSelectHabilitada(); } public boolean isFuncionInsertHabilitada() { if (designing) { return true; } return (getPaginaActualizacion().getFuncionCrearRecurso() > 0 && getPaginaActualizacion().getRecursoDataProvider().isFuncionInsertHabilitada()); } public boolean isFuncionInsertInhabilitada() { return !isFuncionInsertHabilitada(); } public boolean isFuncionUpdateHabilitada() { if (designing) { return true; } return (getPaginaActualizacion().getFuncionModificarRecurso() > 0 && getPaginaActualizacion().getRecursoDataProvider().isFuncionUpdateHabilitada() && isEdicionMultiFuncionInhabilitada()); } public boolean isFuncionUpdateInhabilitada() { return !isFuncionUpdateHabilitada(); } public boolean isFuncionDeleteHabilitada() { if (designing) { return true; } return (getPaginaActualizacion().getFuncionEliminarRecurso() > 0 && getPaginaActualizacion().getRecursoDataProvider().isFuncionDeleteHabilitada()); } public boolean isFuncionDeleteInhabilitada() { return !isFuncionDeleteHabilitada(); } public boolean isFuncionCheckChangesHabilitada() { if (designing) { return true; } return (isFilaDisponible() && getPaginaActualizacion().getRecursoDataProvider().esFilaProcesada(getCurrentRowKey())); } public boolean isFuncionCheckChangesInhabilitada() { return !isFuncionCheckChangesHabilitada(); } public boolean isFuncionCancelUpdateHabilitada() { if (designing) { return true; } return (isFilaDisponible() && getPaginaActualizacion().getRecursoDataProvider().esFilaProcesada(getCurrentRowKey())); } public boolean isFuncionCancelUpdateInhabilitada() { return !isFuncionCancelUpdateHabilitada(); } public boolean isFuncionCommitHabilitada() { if (designing) { return true; } return isLoteConCambios(); } public boolean isFuncionCommitInhabilitada() { return !isFuncionCommitHabilitada(); } public boolean isFuncionRevertHabilitada() { if (designing) { return true; } return isLoteConCambios(); } public boolean isFuncionRevertInhabilitada() { return !isFuncionRevertHabilitada(); } public boolean isFuncionExecuteHabilitada() { if (designing) { return true; } return isAccionMultiFuncionHabilitada() && getPaginaActualizacion().getRecursoDataProvider().isFuncionBusinessProcessHabilitada(); } public boolean isFuncionExecuteInhabilitada() { return !isFuncionExecuteHabilitada(); } public boolean isFuncionRefreshHabilitada() { if (designing) { return true; } return (getPaginaActualizacion().getRecursoDataProvider().isFuncionSelectEjecutada() && getPaginaActualizacion().getRecursoDataProvider().isFuncionSelectHabilitada()); } public boolean isFuncionRefreshInhabilitada() { return !isFuncionRefreshHabilitada(); } public boolean isFuncionRequeryHabilitada() { if (designing) { return true; } return isFuncionSelectHabilitada() && isConsultaAnteriorDisponible() && isConsultaInsert(); } public boolean isFuncionRequeryInhabilitada() { return !isFuncionRequeryHabilitada(); } public boolean isFuncionRestoreFilterHabilitada() { if (designing) { return true; } return isFuncionSelectHabilitada() && isConsultaAnteriorDisponible(); } public boolean isFuncionRestoreFilterInhabilitada() { return !isFuncionRestoreFilterHabilitada(); } public boolean isFuncionReturnHabilitada() { if (designing) { return true; } return (isFilaDisponible() && isValorRetornoRecursoDisponible() && getPaginaActualizacion().getRecursoDataProvider().isLoteSinCambios()); } public boolean isFuncionReturnInhabilitada() { return !isFuncionReturnHabilitada(); } public boolean isFuncionReturnFilaEscogidaHabilitada() { if (designing) { return true; } return (isFilaEscogidaDisponible() && isValorRetornoRecursoDisponible() && getPaginaActualizacion().getRecursoDataProvider().isLoteSinCambios()); } public boolean isFuncionReturnFilaEscogidaInhabilitada() { return !isFuncionReturnFilaEscogidaHabilitada(); } public boolean isFuncionReturnVisible() { if (designing) { return true; } return getPaginaActualizacion().getContextoSesion().getOpcionCampoRetorno() != null; } public boolean isFuncionReturnInvisible() { return !isFuncionReturnVisible(); } public boolean isFuncionPickItemHabilitada() { return true; } public boolean isFuncionPickItemInhabilitada() { return !isFuncionPickItemHabilitada(); } public boolean isFuncionOpenLinkHabilitada() { if (designing) { return true; } return isFilaEscogidaDisponible() && isLoteSinCambios(); } public boolean isFuncionOpenLinkInhabilitada() { return !isFuncionOpenLinkHabilitada(); } public boolean isFilaAmaestrable(String referencia) { if (designing) { return true; } return getPaginaActualizacion().getRecursoDataProvider().esFilaAmaestrable(getCurrentRowKey(), referencia); } public boolean isFilaDisponible() { if (designing) { return true; } return getPaginaActualizacion().getRecursoDataProvider().isRowAvailable(getCurrentRowKey()); } public boolean isFilaNoDisponible() { if (designing) { return true; /* OJO: para que muestre el correspondiente grid de la P2 */ } return !isFilaDisponible(); } public boolean isFilaEscogida() { if (designing) { return false; /* OJO: para que las filas de la tabla no aparezcan todas resaltadas */ } return getPaginaActualizacion().getRecursoDataProvider().esFilaEscogida(getCurrentRowKey()); } public boolean isFilaEscogidaDisponible() { if (designing) { return true; } return (getPaginaActualizacion().getRecursoDataProvider() .isRowAvailable(getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida())); } public boolean isFilaEscogidaNoDisponible() { return !isFilaEscogidaDisponible(); } public boolean isFilaCreada() { /* 14/08/2007 "Fila procesada por FuncionCrearRecurso" */ if (designing) { return true; } return (getPaginaActualizacion().getRecursoDataProvider().esFilaProcesada(getCurrentRowKey()) && getPaginaActualizacion().getRecursoDataProvider().isFuncionInsertEjecutada() && getPaginaActualizacion().getRecursoDataProvider().getFuncionInsert() == getPaginaActualizacion() .getFuncionCrearRecurso()); } public boolean isFilaNoCreada() { /* 14/08/2007 "Fila no procesada por FuncionCrearRecurso" */ return !isFilaCreada(); } public boolean isFilaModificada() { /* 14/08/2007 "Fila procesada por FuncionModificarRecurso" */ if (designing) { return true; } return (getPaginaActualizacion().getRecursoDataProvider().esFilaProcesada(getCurrentRowKey()) && getPaginaActualizacion().getRecursoDataProvider().isFuncionUpdateEjecutada() && getPaginaActualizacion().getRecursoDataProvider().getFuncionUpdate() == getPaginaActualizacion() .getFuncionModificarRecurso()); } public boolean isFilaNoModificada() { /* 14/08/2007 "Fila no procesada por FuncionModificarRecurso" */ return !isFilaModificada(); } public boolean isFilaProcesada() { if (designing) { return true; } // 19/06/2007 a partir de hoy significa "Fila procesada por FuncionCrearRecurso o FuncionModificarRecurso" if (getPaginaActualizacion().getRecursoDataProvider().esFilaProcesada(getCurrentRowKey())) { if (getPaginaActualizacion().getRecursoDataProvider().isFuncionInsertEjecutada()) { return (getPaginaActualizacion().getRecursoDataProvider() .getFuncionInsert() == getPaginaActualizacion().getFuncionCrearRecurso()); } if (getPaginaActualizacion().getRecursoDataProvider().isFuncionUpdateEjecutada()) { return (getPaginaActualizacion().getRecursoDataProvider() .getFuncionUpdate() == getPaginaActualizacion().getFuncionModificarRecurso()); } } return false; } public boolean isFilaNoProcesada() { return !isFilaProcesada(); } public boolean isFilaDisponibleProcesada() { return isFilaDisponible() && isFilaProcesada(); } public boolean isFilaDisponibleNoProcesada() { return isFilaDisponible() && isFilaNoProcesada(); } public boolean isFilaConCambios() { if (designing) { return true; } try { return (getPaginaActualizacion().getRecursoDataProvider().getCachedRowSet().rowInserted() || getPaginaActualizacion().getRecursoDataProvider().getCachedRowSet().rowUpdated() || getPaginaActualizacion().getRecursoDataProvider().getCachedRowSet().rowDeleted()); } catch (Exception ex) { handle(ex); } return false; } public boolean isFilaSinCambios() { if (designing) { return true; } return !isFilaConCambios(); } public boolean isLoteConCambios() { if (designing) { return true; } return getPaginaActualizacion().getRecursoDataProvider().isLoteConCambios(); } public boolean isLoteSinCambios() { if (designing) { return true; } return !isLoteConCambios(); } public boolean isLoteConFilas() { if (designing) { return true; } return getPaginaActualizacion().getRecursoDataProvider().isLoteConFilas(); } public boolean isLoteSinFilas() { if (designing) { return true; } return !isLoteConFilas(); } // public boolean isLoteConFilasEliminadas() { // if (designing) { // return true; // } // return getPaginaActualizacion().getRecursoDataProvider().isLoteConFilasEliminadas(); // } // // public boolean isLoteSinFilasEliminadas() { // return !isLoteConFilasEliminadas(); // } // public boolean isParametroFuncionConsultarAutorizado(String parametro) { long funcion = getPaginaActualizacion().getFuncionConsultarRecurso(); return TLC.getControlador().esParametroAutorizado(parametro, funcion); } public boolean isParametroFuncionConsultarNoAutorizado(String parametro) { return !isParametroFuncionConsultarAutorizado(parametro); } public boolean isParametroFuncionCrearAutorizado(String parametro) { long funcion = getPaginaActualizacion().getFuncionCrearRecurso(); return TLC.getControlador().esParametroAutorizado(parametro, funcion); } public boolean isParametroFuncionCrearNoAutorizado(String parametro) { return !isParametroFuncionCrearAutorizado(parametro); } public boolean isParametroFuncionModificarAutorizado(String parametro) { long funcion = getPaginaActualizacion().getFuncionModificarRecurso(); return TLC.getControlador().esParametroAutorizado(parametro, funcion); } public boolean isParametroFuncionModificarNoAutorizado(String parametro) { return !isParametroFuncionModificarAutorizado(parametro); } public boolean isLecturaAutorizada(String parametro) { return isParametroFuncionConsultarAutorizado(parametro); } public boolean isLecturaNoAutorizada(String parametro) { return !isLecturaAutorizada(parametro); } public boolean isEscrituraAutorizada(String parametro) { return isFilaCreada() ? isParametroFuncionCrearAutorizado(parametro) : isFilaModificada() ? isParametroFuncionModificarAutorizado(parametro) : false; } public boolean isEscrituraNoAutorizada(String parametro) { return !isEscrituraAutorizada(parametro); } /** * Conserva el valor de la propiedad nuevaPosicionCursor. */ private boolean nuevaPosicionCursor = false; /** * Getter para propiedad nuevaPosicionCursor. * * @return Valor de la propiedad nuevaPosicionCursor. */ public boolean isNuevaPosicionCursor() { return nuevaPosicionCursor; } /** * Setter para propiedad nuevaPosicionCursor. * * @param b Nuevo valor de la propiedad nuevaPosicionCursor. */ public void setNuevaPosicionCursor(boolean b) { nuevaPosicionCursor = b; } @Override public boolean isMensajeDisponible() { return super.isMensajeDisponible() && isFilaDisponible(); } public String getMensajeCambiosPorConfirmar() { if (designing) { return getDesignTimeString("getMensajeCambiosPorConfirmar"); } return getPaginaActualizacion().getRecursoDataProvider().getMensajeCambiosPorConfirmar(); } public String getMensajeCambiosPorDescartar() { if (designing) { return getDesignTimeString("getMensajeCambiosPorDescartar"); } return getPaginaActualizacion().getRecursoDataProvider().getMensajeCambiosPorDescartar(); } public String getMensajeFilaNoDisponible() { if (designing) { return getDesignTimeString("getMensajeFilaNoDisponible"); } String mensaje1 = getPaginaActualizacion().getRecursoDataProvider().getMensajeCambiosPorConfirmar(); String mensaje2 = getMensaje(); String mensaje3 = Bitacora.getTextoMensaje(CBM.NO_CHANGES_TO_COMMIT); return mensaje1 == null ? mensaje2 == null ? mensaje3 : mensaje2 : mensaje1; } /** * Conserva el valor de la propiedad peticionInsert. */ private boolean peticionInsert = false; /** * Getter para propiedad peticionInsert. * * @return Valor de la propiedad peticionInsert. */ public boolean isPeticionInsert() { return peticionInsert; } /** * Setter para propiedad peticionInsert. * * @param b Nuevo valor de la propiedad peticionInsert. */ public void setPeticionInsert(boolean b) { peticionInsert = b; } /** * Conserva el valor de la propiedad reposicionPendiente. */ private boolean reposicionPendiente = false; /** * Getter para propiedad reposicionPendiente. * * @return Valor de la propiedad reposicionPendiente. */ public boolean isReposicionPendiente() { return reposicionPendiente; } /** * Setter para propiedad reposicionPendiente. * * @param b Nuevo valor de la propiedad reposicionPendiente. */ public void setReposicionPendiente(boolean b) { reposicionPendiente = b; } /** * Conserva el valor de la propiedad consultaPendiente. */ private boolean consultaPendiente = false; /** * Getter para propiedad consultaPendiente. * * @return Valor de la propiedad consultaPendiente. */ public boolean isConsultaPendiente() { return consultaPendiente; } /** * Setter para propiedad consultaPendiente. * * @param b Nuevo valor de la propiedad consultaPendiente. */ public void setConsultaPendiente(boolean b) { consultaPendiente = b; } /** * Conserva el valor de la propiedad iniciacionPendiente. */ private boolean iniciacionPendiente = false; /** * Getter para propiedad iniciacionPendiente. * * @return Valor de la propiedad iniciacionPendiente. */ public boolean isIniciacionPendiente() { return iniciacionPendiente; } /** * Setter para propiedad iniciacionPendiente. * * @param b Nuevo valor de la propiedad iniciacionPendiente. */ public void setIniciacionPendiente(boolean b) { iniciacionPendiente = b; } /** * Conserva el valor de la propiedad readOnlyProcessing. */ private boolean readOnlyProcessing = false; /** * Getter para propiedad readOnlyProcessing. * * @return Valor de la propiedad readOnlyProcessing. */ public boolean isReadOnlyProcessing() { return readOnlyProcessing; } /** * Setter para propiedad readOnlyProcessing. * * @param b Nuevo valor de la propiedad readOnlyProcessing. */ public void setReadOnlyProcessing(boolean b) { readOnlyProcessing = b; } public String getTituloConsulta() { if (designing) { return getDesignTimeString("getTituloConsulta"); } String titulo = getPaginaActualizacion().getRecursoDataProvider().getNombreDominioRecurso(); if (isPaginaConsultaConMaestro()) { String detalle = getPaginaConsultaConMaestro().getEtiquetaClaseDetalle(); String maestro = getPaginaConsultaConMaestro().getEtiquetaClaseMaestro(); if (StringUtils.isNotBlank(detalle)) { String etiqueta = detalle.trim(); if (StringUtils.isNotBlank(maestro)) { etiqueta += " " + maestro.trim(); } titulo = getPaginaConsultaConMaestro().getRecursoMaestroDataProvider() .getDenominacionFilaEscogida(etiqueta); } } else if (isPaginaConsultaConArbol() || isPaginaConsultaConTabla()) { String detalle = getPaginaActualizacion().getEtiquetaClaseDetalle(); if (StringUtils.isNotBlank(detalle)) { titulo = detalle.trim(); } } else { String detalle = getPaginaActualizacion().getEtiquetaClaseDetalle(); if (StringUtils.isNotBlank(detalle)) { // String etiqueta = detalle.trim(); // titulo = getPaginaActualizacion().getRecursoDataProvider().getDenominacionFilaEscogida(etiqueta); titulo = detalle.trim(); } } return titulo; } @Override protected String getToolTipHipervinculoMigasPan() { if (designing) { return null; } // if (getPaginaActualizacion().getRecursoDataProvider().isFilaEscogidaDisponible()) { // return getPaginaActualizacion().getRecursoDataProvider().getDenominacionFilaEscogida(); // } else { // return getTituloConsulta(); // } return getTituloConsulta(); } @Override protected String getMensajePeticionPorOmision() { return getMensajeCambiosPorConfirmar(); } public String getValorRetornoRecursoActual() { if (designing) { return null; } return getValorRetornoRecurso(getCurrentRowKey()); } public void setValorRetornoRecursoActual(String valor) { track("setValorRetornoRecursoActual", "valor=" + valor); } public String getValorRetornoRecursoEscogido() { if (designing) { return null; } return getValorRetornoRecurso(getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida()); } public void setValorRetornoRecursoEscogido(String valor) { track("setValorRetornoRecursoEscogido", "valor=" + valor); } protected String getValorRetornoRecurso(RowKey rowKey) { if (designing) { return null; } track("getValorRetornoRecurso", "RowKey=" + rowKey); String valor = null; try { if (getPaginaActualizacion().getRecursoDataProvider().isNotRowAvailable(rowKey)) { return null; } String opcion = getPaginaActualizacion().getContextoSesion().getOpcionCampoRetorno(); if (StringUtils.isBlank(opcion)) { // anteriormente opcion Blank era equivalente a BUSCAR_ID return null; } EnumOpcionAbrirVentana opcionAbrirVentana = EnumOpcionAbrirVentana.enumValueOf(opcion); String dominioRecurso = getPaginaActualizacion().getRecursoDataProvider().getDominioSelect() + ""; String dominioRetorno = getPaginaActualizacion().getContextoSesion().getDominioRetorno(); boolean identificable = getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable(); boolean codificable = getPaginaActualizacion().getRecursoDataProvider().isRecursoCodificable(); // if (StringUtils.isBlank(opcion) || EnumOpcionAbrirVentana.BUSCAR_ID.equals(opcionAbrirVentana)) { if (EnumOpcionAbrirVentana.BUSCAR_ID.equals(opcionAbrirVentana)) { if (dominioRecurso.equals(dominioRetorno)) { if (identificable) { valor = STP .getString(getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey)); } getPaginaActualizacion().getContextoSesion().setValorRetorno(opcion, dominioRetorno, valor); } } else if (EnumOpcionAbrirVentana.BUSCAR_CODIGO.equals(opcionAbrirVentana)) { if (dominioRecurso.equals(dominioRetorno)) { if (codificable) { valor = getRecursoCodificableDataProvider().getCodigoRecurso(rowKey); } else if (identificable) { valor = Global.PREFIJO_STRING_ID_RECURSO + getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey); } getPaginaActualizacion().getContextoSesion().setValorRetorno(opcion, dominioRetorno, valor); } } else if (dominioRetorno == null || dominioRecurso.equals(dominioRetorno)) { if (getPaginaActualizacion().getRecursoDataProvider().isColumnaDisponible(opcion)) { Object obj = getPaginaActualizacion().getRecursoDataProvider().getValue(opcion, rowKey); valor = obj instanceof Long ? Global.PREFIJO_STRING_ID_RECURSO + obj : STP.getString(obj); getPaginaActualizacion().getContextoSesion().setValorRetorno(opcion, dominioRetorno, valor); } else if (dominioRetorno != null) { getPaginaActualizacion().getContextoSesion().setValorRetorno(opcion, dominioRetorno, null); } } valor = getPaginaActualizacion().getContextoSesion().getValorRetorno(opcion, dominioRetorno); } catch (Exception ex) { Bitacora.logTrace(ex); } return valor; } private boolean isValorRetornoRecursoDisponible() { String opcion = getPaginaActualizacion().getContextoSesion().getOpcionCampoRetorno(); if (StringUtils.isBlank(opcion)) { return false; } EnumOpcionAbrirVentana opcionAbrirVentana = EnumOpcionAbrirVentana.enumValueOf(opcion); String dominioRecurso = getPaginaActualizacion().getRecursoDataProvider().getDominioSelect() + ""; String dominioRetorno = getPaginaActualizacion().getContextoSesion().getDominioRetorno(); boolean identificable = getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable(); boolean codificable = getPaginaActualizacion().getRecursoDataProvider().isRecursoCodificable(); if (EnumOpcionAbrirVentana.BUSCAR_ID.equals(opcionAbrirVentana)) { return dominioRecurso.equals(dominioRetorno) && identificable; } if (EnumOpcionAbrirVentana.BUSCAR_CODIGO.equals(opcionAbrirVentana)) { return dominioRecurso.equals(dominioRetorno) && (codificable || identificable); } return getPaginaActualizacion().getRecursoDataProvider().isColumnaDisponible(opcion); } // </editor-fold> @Override protected void autorizar() { track("autorizar"); long funcion = getPaginaActualizacion().getFuncionConsultarRecurso(); paginaAutorizada = funcion == -1L || TLC.getControlador().esFuncionAutorizada(funcion); } @Override public void iniciar() { super.iniciar(); iniciarDataProvider(); setReposicionPendiente(true); // setConsultaPendiente(isRestauracion()); setConsultaPendiente(false); setPeticionProcesada(false); setPeticionInsert(false); } private void iniciarDataProvider() { long funcion = getPaginaActualizacion().getFuncionConsultarRecurso(); int limite = getLimiteFilasFuncionSelect(); String tabla = null; try { getPaginaActualizacion().getRecursoDataProvider().setFuncionSelect(funcion); } catch (ExcepcionAplicacion ex) { handle(ex); } getPaginaActualizacion().getRecursoDataProvider().setLimiteFilasFuncionSelect(limite); if (isPaginaConsultaConMaestro()) { tabla = getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().getTablaDestino(); } getPaginaActualizacion().getRecursoDataProvider().setTablaMaestro(tabla); } private int getLimiteFilasFuncionSelect() { String dominio = getPaginaActualizacion().getRecursoDataProvider().getCodigoDominioRecurso(); String string = BaseBundle.getLimiteFilasFuncionSelect(dominio); int limite = StringUtils.isNotBlank(string) && StringUtils.isNumeric(string) ? Integer.valueOf(string) : -1; return limite < 0 ? LIMITE_FILAS_FUNCION_SELECT : limite; } @Override public void preprocesar() { /* no se ejecuta si al apenas abrir la pagina se hace click en un link con url */ super.preprocesar(); inicializarFunciones(true); reposicionar(); /* no es necesario si es PaginaConsultaConTabla */ } @Override public void prepresentar() { track("prepresentar"); setIniciacionPendiente(false); String cb1 = getPaginaActualizacion().getContextoPeticion().getConsultaBusqueda(); String cb2 = getPaginaActualizacion().getContextoPeticion().getCriteriosBusqueda(); boolean consultaInsert = isConsultaInsert(); boolean consultaValida = !consultaInsert && isConsultaValida(); boolean reinicioFiltro = isReinicio() && (cb1 != null || cb2 != null); // trace(); // trace("consultaInsert=" + consultaInsert); // trace("consultaValida=" + consultaValida); // trace("reinicioFiltro=" + reinicioFiltro); if (consultaInsert && isRetruque()) { retrucarAgregar(); } else if (consultaValida && isRetruque()) { retrucar(); } else if (reinicioFiltro || isConsultaPendiente() || isPaginaConsultaConMaestro() || isPaginaConsultaSinFiltro()) { inquirir(); } else if (consultaValida && getPaginaActualizacion().getRecursoDataProvider().isLoteSinCambios()) { continuar(); } else if (consultaValida && getPaginaActualizacion().getRecursoDataProvider().isLoteConCambios()) { refrescar(); } else if (getPaginaActualizacion().getRecursoDataProvider().getLimiteFilasFuncionSelect() > 0) { iniciarConsulta(); } else { inquirir(); } if (isPaginaConsultaConMaestro()) { getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().restoreFilaEscogida(); } boolean consultaSinFilas = isFuncionRefreshHabilitada() && isFilaNoDisponible(); if (consultaSinFilas) { TLC.getBitacora().warn(CBM.SELECT_ROW_EMPTY_SET); } posprepresentar(); } private void trace() { track("trace@GestorPaginaActualizacion"); trace("isRecursion=" + isRecursion()); trace("isReinicio=" + isReinicio()); trace("isRestauracion=" + isRestauracion()); trace("isRetorno=" + isRetorno()); trace("isRetruque=" + isRetruque()); trace("isConsultaPendiente=" + isConsultaPendiente()); trace("isPaginaConsultaConMaestro=" + isPaginaConsultaConMaestro()); trace("isPaginaConsultaSinFiltro=" + isPaginaConsultaSinFiltro()); trace("isLoteSinCambios=" + getPaginaActualizacion().getRecursoDataProvider().isLoteSinCambios()); trace("isLoteConCambios=" + getPaginaActualizacion().getRecursoDataProvider().isLoteConCambios()); trace("getLimiteFilasFuncionSelect=" + getPaginaActualizacion().getRecursoDataProvider().getLimiteFilasFuncionSelect()); } // <editor-fold defaultstate="collapsed"> // private boolean isConsultaConLimiteConFiltroSinMaestro() { // return !isConsultaPendiente() && // getPaginaActualizacion().getRecursoDataProvider().getLimiteFilasFuncionSelect() != 0 && // isPaginaConsultaConFiltro() && !isPaginaConsultaConMaestro(); // } // </editor-fold> protected void retrucarAgregar() { track("retrucarAgregar"); if (isConsultaPendiente()) { consultar(); } else if (getPaginaActualizacion().getRecursoDataProvider().isLoteSinCambios()) { TLC.getBitacora().info(BundleWebui.getString("filtro_solo_filas_agregadas")); } continuar(); } protected void retrucar() { track("retrucar"); if (isConsultaPendiente()) { consultar(); } continuar(); } protected void continuar() { track("continuar"); // OJO: reposicionar() y cursorSet(0) no son necesarios si es PaginaConsultaConTabla, pero no hacen dao if (isReposicionPendiente()) { reposicionar(); } else { cursorSet(0); /* OJO con la constante: reposicionar [+ cursorNext [+ cursorFirst]] */ } } protected void iniciarConsulta() { track("iniciarConsulta"); if (isReinicio()) { String cb1 = getPaginaActualizacion().getContextoPeticion().getConsultaBusqueda(); String cb2 = getPaginaActualizacion().getContextoPeticion().getCriteriosBusqueda(); getPaginaActualizacion().getRecursoDataProvider().setConsultaBusqueda(cb1); getPaginaActualizacion().getRecursoDataProvider().setCriteriosBusqueda(cb2); } try { // getPaginaActualizacion().getRecursoDataProvider().setFuncionSelect(getPaginaActualizacion().getFuncionConsultarRecurso()); getPaginaActualizacion().getRecursoDataProvider().setComandoEmptyCachedRowSet(); getPaginaActualizacion().getRecursoDataProvider().setFiltroEscondido(false); TLC.getBitacora().warn(CBM.SELECT_SET_SEARCH_CRITERIA, getPaginaActualizacion().getRecursoDataProvider().getLimiteFilasFuncionSelect()); } catch (ExcepcionAplicacion ex) { Bitacora.logError(ex); inquirir(); } } protected void inquirir() { track("inquirir"); consultar(); if (getPaginaActualizacion().getRecursoDataProvider().isFuncionSelectAutorizada()) { inicializarFunciones(true); setIniciacionPendiente(true); getPaginaActualizacion().posconsultar(); // if (isRetruque() || isPaginaConsultaSinFiltro()) { // } else { // getPaginaActualizacion().getRecursoDataProvider().setFiltroEscondido(true); // } } } // <editor-fold defaultstate="collapsed" desc="metodos estandar para consultar"> protected void consultar() { track("consultar"); setConsultaPendiente(true); if (isReinicio()) { String cb1 = getPaginaActualizacion().getContextoPeticion().getConsultaBusqueda(); String cb2 = getPaginaActualizacion().getContextoPeticion().getCriteriosBusqueda(); getPaginaActualizacion().getRecursoDataProvider().setConsultaBusqueda(cb1); getPaginaActualizacion().getRecursoDataProvider().setCriteriosBusqueda(cb2); consultarPorIdentificacionRecurso(); if (isConsultaPendiente()) { consultarMaestroPorIdentificacionRecursoMaestro(); } } if (isConsultaPendiente()) { getPaginaActualizacion().consultar(); if (isConsultaInsert()) { } else { getPaginaActualizacion().getRecursoDataProvider().storeQuery(); if (isPaginaConsultaConFiltro()) { if (isPaginaConsultaConMaestro()) { getPaginaActualizacion().getRecursoDataProvider().setFiltroEscondido(true); } else { boolean consultaSinFilas = isFuncionRefreshHabilitada() && isFilaNoDisponible(); getPaginaActualizacion().getRecursoDataProvider().setFiltroEscondido(!consultaSinFilas); } } } } if (isConsultaPendiente()) { release(); /* OJO: realmente hay que retornar un rowset vacio? */ } else { if (getPaginaActualizacion().getRecursoDataProvider().isFuncionSelectAutorizada()) { setVersionComandoSelectPagina(); setMaestroPagina(); setNuevaPosicionCursor(true); } else { release(); /* OJO: realmente hay que retornar un rowset vacio? */ } } descartarFormulariosVirtuales(); } protected void consultarPorIdentificacionRecurso() { // consulta y posiciona el cursor utilizando la identificacion del recurso track("consultarPorIdentificacionRecurso"); if (getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable()) { String clave = getRecursoIdentificableDataProvider().getColumnaIdentificacionRecurso(); Long valor = getPaginaActualizacion().getContextoPeticion().getIdentificacionRecurso(); // trace(clave + "=" + valor); if (valor != null) { RowKey rowKey = getRowRecurso(clave, valor); if (rowKey != null) { posicionar(rowKey); setConsultaPendiente(false); if (isPaginaConsultaConMaestro()) { consultarMaestroPorColumnaIdentificacionRecursoMaestro(); } } } } } protected RowKey getRowRecurso(String clave, Object valor) { track("getRow", clave + "=" + valor); RowKey rowKey = null; try { if (getPaginaActualizacion().getRecursoDataProvider().isRecursoConsultable()) { // FiltroBusqueda filtroBusqueda = new FiltroBusqueda(getRecursoDataProviderDataSourceName()); FiltroBusqueda filtroBusqueda = new FiltroBusqueda(); filtroBusqueda.addCriterio(clave, valor); // long funcion = getPaginaActualizacion().getFuncionConsultarRecurso(); // getPaginaActualizacion().getRecursoDataProvider().setFuncionSelect(funcion); getRecursoConsultableDataProvider().ejecutarFuncionSelect(filtroBusqueda); if (getPaginaActualizacion().getRecursoDataProvider().cursorFirst()) { rowKey = getPaginaActualizacion().getRecursoDataProvider().getCursorRow(); } } } catch (ExcepcionAplicacion | DataProviderException ex) { rowKey = null; } return getPaginaActualizacion().getRecursoDataProvider().isRowAvailable(rowKey) ? rowKey : null; } protected void consultarMaestroPorIdentificacionRecursoMaestro() { track("consultarMaestroPorIdentificacionRecursoMaestro"); if (isPaginaConsultaConMaestro()) { Long valor = getPaginaActualizacion().getContextoPeticion().getIdentificacionRecursoMaestro(); String clave = null; if (valor == null) { } else if (getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().isRecursoIdentificable()) { clave = getRecursoMaestroIdentificableDataProvider().getColumnaIdentificacionRecurso(); } else if (getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().isRecursoEnumerable()) { clave = getRecursoMaestroEnumerableDataProvider().getColumnaNumeroRecurso(); } if (StringUtils.isNotBlank(clave)) { getRowMaestro(clave, valor); } } } protected void consultarMaestroPorColumnaIdentificacionRecursoMaestro() { track("consultarMaestroPorColumnaIdentificacionRecursoMaestro"); if (isPaginaConsultaConMaestro()) { String columna = getPaginaConsultaConMaestro().getColumnaIdentificacionRecursoMaestro(); Object valor = StringUtils.isBlank(columna) ? null : getPaginaActualizacion().getRecursoDataProvider().getValue(columna); String clave = null; if (valor == null) { } else if (getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().isRecursoIdentificable()) { clave = getRecursoMaestroIdentificableDataProvider().getColumnaIdentificacionRecurso(); } else if (getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().isRecursoEnumerable()) { clave = getRecursoMaestroEnumerableDataProvider().getColumnaNumeroRecurso(); } if (StringUtils.isNotBlank(clave)) { getRowMaestro(clave, valor); } } } protected RowKey getRowMaestro(String clave, Object valor) { track("getRowMaestro", clave + "=" + valor); RowKey rowKey = null; if (isPaginaConsultaConMaestro()) { try { if (getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().isRecursoConsultable()) { // FiltroBusqueda filtroBusqueda = new FiltroBusqueda(getRecursoMaestroDataProviderDataSourceName()); FiltroBusqueda filtroBusqueda = new FiltroBusqueda(); filtroBusqueda.addCriterio(clave, valor); // long funcion = getRecursoMaestroConsultableDataProvider().getFuncionConsultarRecurso(); // getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().setFuncionSelect(funcion); getRecursoMaestroConsultableDataProvider().ejecutarFuncionSelect(filtroBusqueda); if (getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().cursorFirst()) { rowKey = getPaginaActualizacion().getRecursoDataProvider().getCursorRow(); } } } catch (ExcepcionAplicacion | DataProviderException ex) { rowKey = null; } } return getPaginaConsultaConMaestro().getRecursoMaestroDataProvider().isRowAvailable(rowKey) ? rowKey : null; } protected void setVersionComandoSelectPagina() { long version = getPaginaActualizacion().getRecursoDataProvider().getVersionComandoSelect(); getPaginaActualizacion().getContextoSesion().setVersionComandoSelectPagina(version); } protected void setMaestroPagina() { String c = isPaginaConsultaConMaestro() ? getColumnaIdentificacionRecursoMaestro() : null; Long irm = isPaginaConsultaConMaestro() ? getIdentificacionRecursoMaestro() : null; getPaginaActualizacion().getContextoSesion().setColumnaIdentificacionRecursoMaestroPagina(c); getPaginaActualizacion().getContextoSesion().setIdentificacionRecursoMaestroPagina(irm); } protected boolean release() { track("release"); setConsultaPendiente(false); boolean ok = false; try { getPaginaActualizacion().getRecursoDataProvider().release(); ok = true; } catch (SQLException ex) { handle(ex); } finally { return ok; } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para posicionar/reposicionar"> public boolean reposicionar() { RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); return posicionar(rowKey); } public boolean posicionar( Long identificacion) { /* posiciona el cursor utilizando la identificacion del recurso */ track("posicionar", "identificacion=" + identificacion); RowKey rowKey = null; if (getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable()) { String clave = getRecursoIdentificableDataProvider().getColumnaIdentificacionRecurso(); Long valor = identificacion; // trace(clave + "=" + valor); if (valor != null && getPaginaActualizacion().getRecursoDataProvider().isLoteConFilas()) { rowKey = getPaginaActualizacion().getRecursoDataProvider().findFirst(clave, valor); } } return posicionar(rowKey); } public boolean posicionar(String codigo) { /* posiciona el cursor utilizando el codigo del recurso */ track("posicionar", "codigo=" + codigo); RowKey rowKey = null; if (getPaginaActualizacion().getRecursoDataProvider().isRecursoCodificable()) { String clave = getRecursoCodificableDataProvider().getColumnaCodigoRecurso(); String valor = codigo; // trace(clave + "=" + valor); if (valor != null && getPaginaActualizacion().getRecursoDataProvider().isLoteConFilas()) { rowKey = getPaginaActualizacion().getRecursoDataProvider().findFirst(clave, valor); } } return posicionar(rowKey); } protected boolean posicionar(RowKey rowKey) { track("posicionar", "RowKey=" + rowKey); setReposicionPendiente(false); boolean ok = false; try { if (getPaginaActualizacion().getRecursoDataProvider().isRowAvailable(rowKey)) { getPaginaActualizacion().getRecursoDataProvider().setCursorRow(rowKey); getPaginaActualizacion().getRecursoDataProvider().setFilaEscogida(rowKey); ok = true; } } catch (Exception ex) { handle(ex); } finally { return ok; } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para obtener el filtro de busqueda"> public FiltroBusqueda getFiltroBusquedaFuncionSelect() { Long filtro = getPaginaActualizacion().getRecursoDataProvider().getFiltroFuncionSelect(); return getFiltroBusqueda(filtro, null, null, null); } public FiltroBusqueda getFiltroBusqueda(Long filtro) { return getFiltroBusqueda(filtro, null, null, null); } public FiltroBusqueda getFiltroBusqueda(Long filtro, String codigo, String nombre) { return getFiltroBusqueda(filtro, codigo, nombre, null); } public FiltroBusqueda getFiltroBusqueda(Long filtro, Long segmento) { return getFiltroBusqueda(filtro, null, null, segmento); } public FiltroBusqueda getFiltroBusqueda(Long filtro, String codigo, String nombre, Long segmento) { track("getFiltroBusqueda", "filtro=" + filtro, "codigo=" + codigo, "nombre=" + nombre, "segmento=" + segmento); getPaginaActualizacion().getRecursoDataProvider().setFiltroFuncionSelect(null); getPaginaActualizacion().getRecursoDataProvider().setCodigoFuncionSelect(null); getPaginaActualizacion().getRecursoDataProvider().setNombreFuncionSelect(null); getPaginaActualizacion().getRecursoDataProvider().setSegmentoFuncionSelect(null); FiltroBusqueda filtroBusqueda; if (filtro == null) { // filtroBusqueda = new FiltroBusqueda(getRecursoDataProviderDataSourceName()); filtroBusqueda = new FiltroBusqueda(); } else { // filtroBusqueda = new FiltroBusqueda(getRecursoDataProviderDataSourceName(), filtro); filtroBusqueda = new FiltroBusqueda(filtro); } if (StringUtils.isNotBlank(codigo) && getPaginaActualizacion().getRecursoDataProvider().isRecursoCodificable()) { filtroBusqueda.addCriterio(getRecursoCodificableDataProvider().getColumnaCodigoRecurso(), getOperadorCom(codigo), getValorComparacion(codigo)); } if (StringUtils.isNotBlank(nombre) && getPaginaActualizacion().getRecursoDataProvider().isRecursoNombrable()) { filtroBusqueda.addCriterio(getRecursoNombrableDataProvider().getColumnaNombreRecurso(), getOperadorCom(nombre), getValorComparacion(nombre)); } if (segmento != null && getPaginaActualizacion().getRecursoDataProvider().isRecursoSegmentable()) { filtroBusqueda.addCriterio(getRecursoSegmentableDataProvider().getColumnaSegmentoRecurso(), OperadorComEnumeration.ES_IGUAL, segmento); } Map<String, CampoBusqueda> camposBusqueda = getPaginaActualizacion().getRecursoDataProvider() .getCamposBusqueda(); for (CampoBusqueda campoBusqueda : camposBusqueda.values()) { filtroBusqueda.addCriterio(campoBusqueda.toCriterioBusqueda()); } String columna; Long maestro; if (isPaginaConsultaConMaestro()) { columna = getColumnaIdentificacionRecursoMaestro(); maestro = getIdentificacionRecursoMaestro(); } else { columna = null; maestro = null; } if (StringUtils.isNotBlank(columna)) { if (maestro == null) { filtroBusqueda.addCriterio(columna, true); /* OJO: rowset de filas SIN maestro? */ } else { filtroBusqueda.addCriterio(columna, OperadorComEnumeration.ES_IGUAL, maestro); } } getPaginaActualizacion().getRecursoDataProvider().setFiltroFuncionSelect(filtro); getPaginaActualizacion().getRecursoDataProvider().setCodigoFuncionSelect(codigo); getPaginaActualizacion().getRecursoDataProvider().setNombreFuncionSelect(nombre); getPaginaActualizacion().getRecursoDataProvider().setSegmentoFuncionSelect(segmento); getPaginaActualizacion().getRecursoDataProvider().setColumnaMaestro(columna); getPaginaActualizacion().getRecursoDataProvider().setIdentificacionMaestro(maestro); return filtroBusqueda; } private OperadorComEnumeration getOperadorCom(String string) { String not = "-"; String any = TLC.getInterpreteSql().getLikeString(); return StringUtils.isBlank(string) ? OperadorComEnumeration.ES_NULO : string.startsWith(not + any) && string.endsWith(any) ? OperadorComEnumeration.NO_CONTIENE : string.startsWith(not + any) ? OperadorComEnumeration.NO_TERMINA_EN : string.startsWith(not) && string.endsWith(any) ? OperadorComEnumeration.NO_COMIENZA_POR : string.startsWith(not) ? OperadorComEnumeration.NO_ES_IGUAL : string.startsWith(any) && string.endsWith(any) ? OperadorComEnumeration.CONTIENE : string.startsWith(any) ? OperadorComEnumeration.TERMINA_EN : string.endsWith(any) ? OperadorComEnumeration.COMIENZA_POR : OperadorComEnumeration.ES_IGUAL; } private String getValorComparacion(String string) { String not = "-"; String any = TLC.getInterpreteSql().getLikeString(); String valor = StringUtils.trimToNull(string); int endIndex = valor == null ? 0 : valor.length() - 1; valor = valor == null ? null // ES_NULO : valor.startsWith(not + any) && valor.endsWith(any) ? valor.substring(2, endIndex) // NO_CONTIENE : valor.startsWith(not + any) ? valor.substring(2) // NO_TERMINA_EN : valor.startsWith(not) && valor.endsWith(any) ? valor.substring(1, endIndex) // NO_COMIENZA_POR : valor.startsWith(not) ? valor.substring(1) // NO_ES_IGUAL : valor.startsWith(any) && valor.endsWith(any) ? valor.substring(1, endIndex) // CONTIENE : valor.startsWith(any) ? valor.substring(1) // TERMINA_EN : valor.endsWith(any) ? valor.substring(0, endIndex) // COMIENZA_POR : valor; // ES_IGUAL /* * */ valor = StringUtils.trimToNull(valor); return valor == null ? null : valor.replace('/' + not + '/', not).replace('/' + any + '/', any); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para agregar"> protected boolean appendRow(long funcion) throws ExcepcionAplicacion { track("appendRow", "funcion=" + funcion); if (getPaginaActualizacion().getRecursoDataProvider().isFuncionInsertEjecutada()) { } else { descartarFormulariosVirtuales(); } setPeticionInsert(true); try { getPaginaActualizacion().getRecursoDataProvider().setFuncionInsert(funcion); RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().appendRow(); getPaginaActualizacion().getRecursoDataProvider().setCursorRow(rowKey); getPaginaActualizacion().getRecursoDataProvider().setFilaEscogida(rowKey); setNuevaPosicionCursor(true); if (isPaginaConsultaConMaestro()) { setMaestro(); } else { getPaginaActualizacion().getRecursoDataProvider().setMaestro(rowKey); } getPaginaActualizacion().getRecursoDataProvider().setIndicadorInactivo(rowKey); getPaginaActualizacion().getRecursoDataProvider().setPropietario(rowKey); // getPaginaActualizacion().getRecursoDataProvider().setSegmento(rowKey); boolean legal = esFilaLegal(rowKey, funcion); if (!legal) { getPaginaActualizacion().getRecursoDataProvider().removeRow(rowKey); } return legal; } catch (ExcepcionAplicacion | DataProviderException ex) { throw ex instanceof ExcepcionAplicacion ? (ExcepcionAplicacion) ex : new ExcepcionAplicacion(ex); } } private void setMaestro() { Bitacora.trace(getClass(), "setMaestro"); String columna = getColumnaIdentificacionRecursoMaestro(); Long maestro = getIdentificacionRecursoMaestro(); if (StringUtils.isNotBlank(columna) && maestro != null) { getPaginaActualizacion().getRecursoDataProvider().setValue(columna, maestro); } } private boolean esFilaLegal(RowKey rowKey, long funcion) { // fila Disponible, Activa y Autorizada // la autorizacion podria fallar si el maestro tambien es propietario y/o segmento Bitacora.trace(getClass(), "esFilaLegal", rowKey, funcion); return getPaginaActualizacion().getRecursoDataProvider().isRowAvailable(rowKey) && getPaginaActualizacion().getRecursoDataProvider().esFilaRecursoAutorizado(rowKey, funcion); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para el manejo de la tabla (inicializarFunciones...)"> public void inicializarFunciones() { inicializarFunciones(false); } public void inicializarFunciones(boolean nohandle) { track("inicializarFunciones", "nohandle=" + nohandle); EnumSeveridadMensaje severidad = TLC.getBitacora().getSeveridadMinima(); if (nohandle) { TLC.getBitacora().setSeveridadMinima(EnumSeveridadMensaje.FATAL); } try { if (getPaginaActualizacion().getRecursoDataProvider().getFuncionInsert() < 0 && getPaginaActualizacion().getFuncionCrearRecurso() > 0) { getPaginaActualizacion().getRecursoDataProvider() .setFuncionInsert(getPaginaActualizacion().getFuncionCrearRecurso()); } } catch (ExcepcionAplicacion ex) { if (!nohandle) { handle(ex); } } try { if (getPaginaActualizacion().getRecursoDataProvider().getFuncionUpdate() < 0 && getPaginaActualizacion().getFuncionModificarRecurso() > 0) { getPaginaActualizacion().getRecursoDataProvider() .setFuncionUpdate(getPaginaActualizacion().getFuncionModificarRecurso()); } } catch (ExcepcionAplicacion ex) { if (!nohandle) { handle(ex); } } try { if (getPaginaActualizacion().getRecursoDataProvider().getFuncionDelete() < 0 && getPaginaActualizacion().getFuncionEliminarRecurso() > 0) { getPaginaActualizacion().getRecursoDataProvider() .setFuncionDelete(getPaginaActualizacion().getFuncionEliminarRecurso()); } } catch (ExcepcionAplicacion ex) { if (!nohandle) { handle(ex); } } TLC.getBitacora().setSeveridadMinima(severidad); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para ejecutar las acciones de la pagina de actualizacion"> public boolean irAlPrimero() { track("irAlPrimero"); return cursorSet(1); /* OJO con la constante: cursorFirst */ } public boolean irAlAnterior() { track("irAlAnterior"); return cursorSet(2); /* OJO con la constante: cursorPrevious */ } public boolean irAlSiguiente() { track("irAlSiguiente"); return cursorSet(3); /* OJO con la constante: cursorNext */ } public boolean irAlUltimo() { track("irAlUltimo"); return cursorSet(4); /* OJO con la constante: cursorLast */ } public boolean refrescar() { track("refrescar"); return refresh(); } public boolean reconsultar() { track("reconsultar"); return requery(); } public boolean agregar() { return agregar(getPaginaActualizacion().getFuncionCrearRecurso()); } public boolean agregar(long funcion) { track("agregar", "funcion=" + funcion); try { return appendRow(funcion); } catch (Exception ex) { handle(ex); } return false; } public boolean editar() { return editar(getFuncionEdicionSeleccionada()); } public boolean editar(long funcion) { track("editar", "funcion=" + funcion); try { if (isFilaEscogidaDisponible()) { RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); getPaginaActualizacion().getRecursoDataProvider().setFuncionUpdate(funcion); getPaginaActualizacion().getRecursoDataProvider().editRow(rowKey); descartarFormulariosVirtuales(); return true; } TLC.getBitacora().warn(CBM.UPDATE_NONE); } catch (Exception ex) { handle(ex); } return false; } public boolean eliminar() { return eliminar(getPaginaActualizacion().getFuncionEliminarRecurso()); } public boolean eliminar(long funcion) { track("eliminar", "funcion=" + funcion); try { if (isFilaEscogidaDisponible()) { RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); getPaginaActualizacion().getRecursoDataProvider().setFuncionDelete(funcion); getPaginaActualizacion().getRecursoDataProvider().removeRow(rowKey); descartarFormulariosVirtuales(); return true; } TLC.getBitacora().warn(CBM.DELETE_NONE); } catch (ExcepcionAplicacion | DataProviderException ex) { handle(ex); } return false; } public boolean aplicar() { track("aplicar"); if (getPaginaActualizacion().getRecursoDataProvider().getFilasProcesadas().isEmpty()) { return true; } try { return getPaginaActualizacion().getRecursoDataProvider().esLoteValido(); } catch (ExcepcionAplicacion ex) { return false; } } public boolean deshacer() { track("deshacer"); try { if (isFilaEscogidaDisponible()) { RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); getPaginaActualizacion().getRecursoDataProvider().undoRow(rowKey); descartarFormulariosVirtuales(); cursorSet(0); /* OJO con la constante: reposicionar [+ cursorNext [+ cursorFirst]] */ return true; } TLC.getBitacora().warn(CBM.UNDO_CHANGES_NONE); } catch (Exception ex) { handle(ex); } return false; } public boolean confirmar() { track("confirmar"); try { getPaginaActualizacion().getRecursoDataProvider().commitChanges(); refresh(); TLC.getBitacora().info(CBM.COMMIT_CHANGES_OK); return true; } catch (Exception ex) { handle(ex); } return false; } public boolean descartar() { track("descartar"); try { getPaginaActualizacion().getRecursoDataProvider().revertChanges(); refresh(); TLC.getBitacora().info(CBM.REVERT_CHANGES_OK); return true; } catch (Exception ex) { handle(ex); } return false; } public boolean procesar() { return procesar(getFuncionAccionSeleccionada()); } public boolean procesar(long funcion) { track("procesar", "funcion=" + funcion); try { if (isFilaEscogidaDisponible()) { RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); getPaginaActualizacion().getRecursoDataProvider().setFuncionBusinessProcess(funcion); getPaginaActualizacion().getRecursoDataProvider().processRow(rowKey, funcion); refresh(); /* descartarFormulariosVirtuales(); */ return true; } TLC.getBitacora().warn(CBM.PROCESS_NONE); } catch (Exception ex) { handle(ex); } return false; } public boolean procesar(RowProcessor processor) { track("procesar", processor); try { if (isFilaEscogidaDisponible()) { RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); TLC.getBitacora().hint(CBM.CHECK_CHANGES_1, getPaginaActualizacion().getRecursoDataProvider().getEtiquetaRecurso(rowKey)); processor.processRow(rowKey); // TLC.getBitacora().info(CBM.PROCESS_EXECUTION_END, ""); refresh(); /* descartarFormulariosVirtuales(); */ return true; } TLC.getBitacora().warn(CBM.PROCESS_NONE); } catch (Exception ex) { handle(ex); } return false; } public boolean procesar(String metodo) { track("procesar", metodo); try { if (isFilaEscogidaDisponible()) { Object object = getPaginaActualizacion(); Method method = getPaginaActualizacion().getClass().getMethod(metodo, new Class[] { RowKey.class }); RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); TLC.getBitacora().hint(CBM.CHECK_CHANGES_1, getPaginaActualizacion().getRecursoDataProvider().getEtiquetaRecurso(rowKey)); method.invoke(object, rowKey); TLC.getBitacora().info(CBM.PROCESS_EXECUTION_END, metodo); refresh(); /* descartarFormulariosVirtuales(); */ return true; } TLC.getBitacora().warn(CBM.PROCESS_NONE); } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException ex) { handle(ex); } return false; } public boolean retornar() { // track("retornar"); // HttpServletRequest request = (HttpServletRequest) getPaginaActualizacion().getFacesContext().getExternalContext().getRequest(); // HttpSession session = request.getSession(false); // session.invalidate(); return true; } public String getNombreClaseRecursoMaestroPagina(String nombrePorOmision) { String nombreClaseRecurso = getPaginaActualizacion().getContextoPeticion().getNombreClaseRecursoMaestro(); if (StringUtils.isNotBlank(nombreClaseRecurso)) { getPaginaActualizacion().getContextoSesion().setClaseRecursoMaestroPagina(nombreClaseRecurso); return nombreClaseRecurso; } nombreClaseRecurso = getPaginaActualizacion().getContextoSesion().getClaseRecursoMaestroPagina(); return StringUtils.defaultIfBlank(nombreClaseRecurso, StringUtils.trimToEmpty(nombrePorOmision)); } public boolean vincular() { String nombreClaseRecurso = getPaginaActualizacion().getRecursoDataProvider().getNombreClaseRecurso(); getPaginaActualizacion().getContextoPeticion().setNombreClaseRecursoMaestro(nombreClaseRecurso); return vincular(2); /* OJO con la constante: valida que el lote no tenga cambios */ } public boolean vincular(int validacion) { return vincular(validacion, false); } // public boolean vincular(boolean remover) { // return vincular(2, remover); /* OJO con la constante: valida que el lote no tenga cambios */ // } // public boolean vincular(int validacion, boolean remover) { return vincular(validacion, remover, 0); /* OJO con la constante: usa la fila actual */ } protected boolean vincular(int validacion, boolean remover, int origen) { track("vincular", "validacion=" + validacion, "remover=" + remover, "origen=" + origen); descartarFormulariosVirtuales(); // boolean ok = setIdentificacionRecursoPagina(validacion, origen); boolean ok; boolean filaDisponible = setIdentificacionRecursoPagina(origen); switch (validacion) { case 1: /* OJO con la constante /* valida que la fila no tenga cambios */ ok = filaDisponible ? isFilaSinCambios() : false; break; case 2: /* OJO con la constante /* valida que el lote no tenga cambios */ ok = isLoteSinCambios(); break; case 3: /* OJO con la constante /* valida que el lote no tenga cambios */ filaDisponible = true; /* no importa si no hay fila disponible */ ok = isLoteSinCambios(); /* con tal que el lote no tenga cambios */ break; default: /* solo valida que la fila este disponible */ ok = filaDisponible; break; } if (filaDisponible) { if (ok) { removerHipervinculo(remover); } else { TLC.getBitacora().error(CBM.HYPERLINK_EXCEPTION_1); } } else { TLC.getBitacora().error(CBM.PROCESS_NONE); } return filaDisponible && ok; } protected String accionVincular(String vinculo, int validacion, boolean remover, int origen) { return StringUtils.isNotBlank(vinculo) && vincular(validacion, remover, origen) ? vinculo : null; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para obtener el script de los botones de la pagina de actualizacion"> public String getScriptIrAlPrimero() { // track("getScriptIrAlPrimero"); return null; } public String getScriptIrAlAnterior() { // track("getScriptIrAlAnterior"); return null; } public String getScriptIrAlSiguiente() { // track("getScriptIrAlSiguiente"); return null; } public String getScriptIrAlUltimo() { // track("getScriptIrAlUltimo"); return null; } public String getScriptRepaginar() { // track("getScriptRepaginar"); return null; } public String getScriptRefrescar() { // track("getScriptRefrescar"); return null; } public String getScriptReconsultar() { // track("getScriptReconsultar"); return null; } public String getScriptAgregar() { // track("getScriptAgregar"); return null; } public String getScriptEditar() { track("getScriptEditar"); String table = null; String message1 = null; String message2 = null; String script = JS.getConfirmDialogJavaScript(table, message1, message2); return script; } public String getScriptEliminar() { track("getScriptEliminar"); String table = null; String message1 = null; // String message2 = Bitacora.getTextoMensaje(CBM.DELETE_CONFIRM_MESSAGE); String message2 = null; String script = JS.getConfirmDialogJavaScript(table, message1, message2); return script; } public String getScriptAplicar() { // track("getScriptAplicar"); return null; } public String getScriptDeshacer() { track("getScriptDeshacer"); String table = null; String message1 = null; String message2 = null; String script = JS.getConfirmDialogJavaScript(table, message1, message2); return script; } public String getScriptConfirmar() { track("getScriptConfirmar"); String message1 = null; /* getMensajeCambiosPorConfirmar(); */ String script = JS.getConfirmDialogJavaScript(message1, true); return script; } public String getScriptDescartar() { track("getScriptDescartar"); String message1 = getMensajeCambiosPorDescartar(); String script = JS.getConfirmDialogJavaScript(message1, true); return script; } public String getScriptProcesar() { track("getScriptProcesar"); String message1 = Bitacora.getTextoMensaje(CBM.PROCESS_CONFIRM_MESSAGE); String script = JS.getConfirmDialogJavaScript(message1, true); return script; } public String getScriptRetornar() { if (designing) { return null; } track("getScriptRetornar"); String campo = getPaginaActualizacion().getContextoSesion().getCampoAccionRetorno(); String valor = null; /* getSessionCookie(); */ String boton = getPaginaActualizacion().getContextoSesion().getBotonAccionRetorno(); String script = JS.getCloseWindowJavaScript(campo, valor, boton); //Bitacora.trace(script); return script; } public String getScriptRetornarRecursoActual() { if (designing || isFuncionReturnInhabilitada()) { return null; } track("getScriptRetornarRecursoActual"); String campo = getPaginaActualizacion().getContextoSesion().getCampoAccionRetorno(); String valor = campo == null ? null : getValorRetornoRecursoActual(); String boton = getPaginaActualizacion().getContextoSesion().getBotonAccionRetorno(); String script = JS.getCloseWindowJavaScript(campo, valor, boton); //Bitacora.trace(script); return script; } public String getScriptRetornarRecursoEscogido() { if (designing || isFuncionReturnInhabilitada() || isFuncionReturnFilaEscogidaInhabilitada()) { return null; } track("getScriptRetornarRecursoEscogido"); String campo = getPaginaActualizacion().getContextoSesion().getCampoAccionRetorno(); String valor = campo == null ? null : getValorRetornoRecursoEscogido(); String boton = getPaginaActualizacion().getContextoSesion().getBotonAccionRetorno(); String script = JS.getCloseWindowJavaScript(campo, valor, boton); //Bitacora.trace(script); return script; } public String getScriptAbrirVentana(String urx) { return getScriptAbrirVentana(urx, 0); /* OJO con la constante: usa la fila actual */ } public String getScriptAbrirVentana(String urx, int origen) { Long recurso; switch (origen) { case 1: /* OJO con la constante: usa la fila escogida */ recurso = getIdentificacionRecursoEscogido(); break; default: /* usa la fila actual */ recurso = getIdentificacionRecursoActual(); break; } return recurso == null ? null : getScriptAbrirVentana(urx, recurso); } public String getScriptAbrirVentanaVerDetalle(String urx) { return getScriptAbrirVentanaVerDetalle(urx, 0); /* OJO con la constante: usa la fila actual */ } public String getScriptAbrirVentanaVerDetalle(String urx, int origen) { Long recurso; switch (origen) { case 1: /* OJO con la constante: usa la fila escogida */ recurso = getIdentificacionRecursoEscogido(); break; default: /* usa la fila actual */ recurso = getIdentificacionRecursoActual(); break; } return recurso == null ? null : getScriptAbrirVentanaVerDetalle(urx, recurso); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para obtener el url de la imagen los botones de la pagina de actualizacion"> public String getUrlImagenIrAlPrimero() { return "/resources/pagination_first.gif"; } public String getUrlImagenIrAlAnterior() { return "/resources/pagination_prev.gif"; } public String getUrlImagenIrAlSiguiente() { return "/resources/pagination_next.gif"; } public String getUrlImagenIrAlUltimo() { return "/resources/pagination_last.gif"; } public String getUrlImagenRepaginar() { return "/resources/repaginate24.gif"; } public String getUrlImagenRefrescar() { return isBotonesAccionSinImagen() ? null : "/resources/refresh24.gif"; } public String getUrlImagenAgregar() { return isBotonesAccionSinImagen() ? null : "/resources/add24.gif"; } public String getUrlImagenEditar() { return isBotonesAccionSinImagen() ? null : "/resources/edit24.gif"; } public String getUrlImagenDeshacer() { return isBotonesAccionSinImagen() ? null : "/resources/undo24.gif"; } public String getUrlImagenEliminar() { return isBotonesAccionSinImagen() ? null : "/resources/delete24.gif"; } public String getUrlImagenAplicar() { return isBotonesAccionSinImagen() ? null : "/resources/apply24.gif"; } public String getUrlImagenConfirmar() { return isBotonesAccionSinImagen() ? null : "/resources/save24.gif"; } public String getUrlImagenDescartar() { return isBotonesAccionSinImagen() ? null : "/resources/discard24.gif"; } public String getUrlImagenRetornar() { // return isBotonesAccionSinImagen() ? null : "/resources/return24.gif"; return "/resources/return.gif"; } public String getUrlImagenDetallar() { return "/resources/detail.gif"; } public String getUrlImagenProcesar() { return "/resources/run.gif"; } public String getUrlImagenEscoger() { return "/resources/pick.gif"; } @Override public String getUrlImagenAbrirVinculo() { if (designing) { return "/resources/open_link_enabled.gif"; } if (isFuncionOpenLinkInhabilitada()) { return "/resources/open_link_disabled.gif"; } else { return "/resources/open_link_enabled.gif"; } } public String getUrlImagenAbrirVentanaVerDetalles() { return "/resources/detail.gif"; } public String getUrlImagenFilaProcesada() { if (designing) { return "/resources/ok_small.gif"; } if (getPaginaActualizacion().getRecursoDataProvider().esFilaProcesada(getCurrentRowKey())) { if (getPaginaActualizacion().getRecursoDataProvider().esFilaConflictiva(getCurrentRowKey())) { return getUrlImagenFilaConflictiva(); } else { return "/resources/ok_small.gif"; } } return "/resources/ok_dimmed.gif"; } protected String getUrlImagenFilaConflictiva() { if (designing) { return "/resources/failed_small.gif"; } String clave = getCurrentRowKey().getRowId(); String valor = (String) getPaginaActualizacion().getRecursoDataProvider().getFilasConflictivas().get(clave); if (valor != null) { int severidad = Integer.parseInt(valor.substring(0, 1)); if (severidad == 0) { return "/resources/unknown_small.gif"; } // switch (severidad) { // case 0: /* OJO con la constante: 0 -> fila "ignorada" (no se sabe si tiene o no errores) */ // return "/resources/unknown_small.gif"; // case 1: /* OJO con la constante: 1 -> fila con un error desconocido */ // break; // case 2: /* OJO con la constante: 2 -> fila con un error conocido */ // break; // case 3: /* OJO con la constante: 3 -> fila con uno o mas errores, todos conocidos */ // break; // default: // break; // } } return "/resources/failed_small.gif"; } public String getUrlImagenMaestroFilaProcesada() { if (designing) { return "/resources/ok_small.gif"; } return getPaginaActualizacion().getRecursoDataProvider().esFilaProcesada(getCurrentRowKey()) ? "/resources/ok_small.gif" : "/resources/ok_dimmed.gif"; } public String getUrlImagenSeveridadMensajeFilaNoDisponible() { return "/resources/info_medium.gif"; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para obtener el toolTip de los botones de la pagina de actualizacion"> public String getToolTipImagenFilaProcesada() { if (designing) { return null; } if (getPaginaActualizacion().getRecursoDataProvider().esFilaProcesada(getCurrentRowKey())) { if (getPaginaActualizacion().getRecursoDataProvider().esFilaConflictiva(getCurrentRowKey())) { return getToolTipImagenFilaConflictiva(); } else { return BundleWebui.getString("imagenFilaProcesada.toolTip"); } } return getToolTipImagenFilaNoProcesada(); } protected String getToolTipImagenFilaNoProcesada() { return null; } protected String getToolTipImagenFilaConflictiva() { if (designing) { return null; } String clave = getCurrentRowKey().getRowId(); String valor = (String) getPaginaActualizacion().getRecursoDataProvider().getFilasConflictivas().get(clave); return valor == null ? null : valor.substring(1); } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estndar para establecer la identificacion del recurso (comentados)"> // protected boolean setIdentificacionRecursoPagina() { // return setIdentificacionRecursoPagina(0); /* OJO con la constante: no valida nada */ // } // protected boolean setIdentificacionRecursoPagina(int validacion) { // return setIdentificacionRecursoPagina(validacion, 0); /* OJO con la constante: usa la fila actual */ // } // protected boolean setIdentificacionRecursoPagina(int validacion, int origen) { // track("setIdentificacionRecursoPagina", "validacion=" + validacion, "origen=" + origen); // RowKey rowKey = null; // switch (origen) { // case 1: /* OJO con la constante: usa la fila escogida */ // rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); // break; // default: /* usa la fila actual */ // rowKey = getCurrentRowKey(); // break; // } // return setIdentificacionRecursoPagina(validacion, rowKey); // } // protected boolean setIdentificacionRecursoPagina(int validacion, RowKey rowKey) { // boolean ok = false; // Long valor = null; // try { // if (rowKey != null) { // if (getPaginaActualizacion().getRecursoDataProvider().isRowAvailable(rowKey)) { // getPaginaActualizacion().getRecursoDataProvider().setCursorRow(rowKey); // if (getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable()) { // valor = getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey); // } // switch (validacion) { // case 1: /* OJO con la constante: valida que la fila no tenga cambios */ // ok = isFilaSinCambios(); // break; // case 2: /* OJO con la constante: valida que el lote no tenga cambios */ // ok = isLoteSinCambios(); // break; // default: /* no valida nada! */ // ok = true; // break; // } // } else { // rowKey = null; // } // } // } catch (Exception ex) { // rowKey = null; // valor = null; // handle(ex); // } // getPaginaActualizacion().getRecursoDataProvider().setFilaEscogida(rowKey); // getPaginaActualizacion().getContextoPeticion().setIdentificacionRecurso(valor); // return ok; // } // </editor-fold> // // <editor-fold defaultstate="collapsed" desc="metodos estandar para establecer la identificacion del recurso"> protected boolean setIdentificacionRecursoPagina() { return setIdentificacionRecursoPagina(0); /* OJO con la constante: usa la fila actual */ } protected boolean setIdentificacionRecursoPagina(int origen) { track("setIdentificacionRecursoPagina", "origen=" + origen); RowKey rowKey; switch (origen) { case 1: /* OJO con la constante: usa la fila escogida */ rowKey = getPaginaActualizacion().getRecursoDataProvider().getFilaEscogida(); break; default: /* usa la fila actual */ rowKey = getCurrentRowKey(); break; } return setIdentificacionRecursoPagina(rowKey); } protected boolean setIdentificacionRecursoPagina(RowKey rowKey) { Long valor = null; if (rowKey != null) { try { if (getPaginaActualizacion().getRecursoDataProvider().isRowAvailable(rowKey)) { getPaginaActualizacion().getRecursoDataProvider().setCursorRow(rowKey); if (getPaginaActualizacion().getRecursoDataProvider().isRecursoIdentificable()) { valor = getRecursoIdentificableDataProvider().getIdentificacionRecurso(rowKey); } } else { rowKey = null; } } catch (Exception ex) { rowKey = null; valor = null; handle(ex); } } getPaginaActualizacion().getRecursoDataProvider().setFilaEscogida(rowKey); getPaginaActualizacion().getContextoPeticion().setIdentificacionRecurso(valor); return rowKey != null; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para establecer la posicion del cursor"> protected boolean cursorSet(int posicion) { return cursorSet(posicion, false); } protected boolean cursorSet(int posicion, boolean circular) { track("cursorSet", "posicion=" + posicion, "circular=" + circular); boolean ok = false; boolean reposicion = false; try { switch (posicion) { case 1: ok = getPaginaActualizacion().getRecursoDataProvider().cursorFirst(); break; case 2: ok = getPaginaActualizacion().getRecursoDataProvider().cursorPrevious(); if (!ok && circular) { ok = getPaginaActualizacion().getRecursoDataProvider().cursorLast(); } break; case 3: ok = getPaginaActualizacion().getRecursoDataProvider().cursorNext(); if (!ok && circular) { ok = getPaginaActualizacion().getRecursoDataProvider().cursorFirst(); } break; case 4: ok = getPaginaActualizacion().getRecursoDataProvider().cursorLast(); break; default: ok = reposicionar(); reposicion = ok; if (!ok) { ok = getPaginaActualizacion().getRecursoDataProvider().cursorNext(); } if (!ok) { ok = getPaginaActualizacion().getRecursoDataProvider().cursorFirst(); } break; } if (ok && !reposicion) { RowKey rowKey = getPaginaActualizacion().getRecursoDataProvider().getCursorRow(); getPaginaActualizacion().getRecursoDataProvider().setFilaEscogida(rowKey); } } catch (Exception ex) { handle(ex); } finally { if (!reposicion) { setNuevaPosicionCursor(ok); } return ok; } } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para el refresh de la pagina de actualizacion"> protected boolean refresh() { track("refresh"); if (isReadOnlyProcessing()) { return true; } boolean ok = false; try { getPaginaActualizacion().getRecursoDataProvider().refresh(); getPaginaActualizacion().posrefrescar(); descartarFormulariosVirtuales(); ok = getPaginaActualizacion().getRecursoDataProvider().isFilaEscogidaDisponible(); // OJO: cursorSet(1) no es necesario si es PaginaConsultaConArbol PaginaConsultaConTabla, pero no hace dao ok = ok || cursorSet(1); /* OJO con la constante: cursorFirst */ } catch (Exception ex) { handle(ex); } setNuevaPosicionCursor(ok); return ok; } protected boolean requery() { track("requery"); // if (isReadOnlyProcessing()) { // return true; // } boolean ok = false; try { getPaginaActualizacion().getRecursoDataProvider().restoreQuery(); getPaginaActualizacion().posconsultar(); descartarFormulariosVirtuales(); ok = getPaginaActualizacion().getRecursoDataProvider().isFilaEscogidaDisponible(); // OJO: cursorSet(1) no es necesario si es PaginaConsultaConArbol PaginaConsultaConTabla, pero no hace dao ok = ok || cursorSet(1); /* OJO con la constante: cursorFirst */ setVersionComandoSelectPagina(); setMaestroPagina(); } catch (Exception ex) { handle(ex); } setNuevaPosicionCursor(ok); return ok; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para el manejo de multiples funciones de accion"> public boolean isAccionMultiFuncion() { if (designing) { return true; } if (isPaginaActualizacionConAccionMultiple()) { Option[] items = getPaginaActualizacionConAccionMultiple().getOpcionesListaFuncionAccion(); return items != null && items.length > 1; } return false; } public boolean isAccionMultiFuncionHabilitada() { if (designing) { return true; } return isAccionMultiFuncion() && isFilaDisponible() && isLoteSinCambios(); } public boolean isAccionMultiFuncionInhabilitada() { if (designing) { return true; } return !isAccionMultiFuncionHabilitada(); } public Long getFuncionAccionSeleccionada() { if (designing) { return null; } return getPaginaActualizacion().getRecursoDataProvider().getFuncionBusinessProcess(); } public void setFuncionAccionSeleccionada(Long funcionAccionSeleccionada) { Long funcionProcesarRecurso = getFuncionProcesarRecurso(funcionAccionSeleccionada); long funcion = funcionProcesarRecurso == null ? -1L : funcionProcesarRecurso; try { getPaginaActualizacion().getRecursoDataProvider().setFuncionBusinessProcess(funcion); } catch (ExcepcionAplicacion ex) { handle(ex); } } public String getEtiquetaOpcionSeleccionadaListaFuncionAccion() { if (designing) { return null; } String label = isAccionMultiFuncion() ? STP.getToken(getEtiquetaOpcionSeleccionada( getPaginaActualizacionConAccionMultiple().getListaFuncionAccion1())) : null; /* BundleWebui.getString("botonProcesar.text") */ /**/ return StringUtils.defaultIfBlank(label, getI18n().getEtiquetaSeleccioneUnaOpcionListaFuncionAccion()); } private Long getFuncionProcesarRecurso(Long funcion) { Option opcion = null; if (isAccionMultiFuncion()) { opcion = getOpcionListaDesplegable(funcion, getPaginaActualizacionConAccionMultiple().getListaFuncionAccion1()); } // return opcion == null ? getPaginaActualizacion().getFuncionModificarRecurso() : funcion; return opcion == null ? null : funcion; } // </editor-fold> // <editor-fold defaultstate="collapsed" desc="metodos estandar para el manejo de multiples funciones de edicion"> public boolean isEdicionMultiFuncion() { if (designing) { return true; } if (isPaginaActualizacionConEdicionMultiple()) { Option[] items = getPaginaActualizacionConEdicionMultiple().getOpcionesListaFuncionEdicion(); return items != null && items.length > 1; } return false; } public boolean isEdicionMultiFuncionHabilitada() { if (designing) { return true; } return isEdicionMultiFuncion() && isFilaDisponible() && isLoteSinCambios(); } public boolean isEdicionMultiFuncionInhabilitada() { if (designing) { return true; } return !isEdicionMultiFuncionHabilitada(); } private Long funcionEdicionSeleccionada = null; public Long getFuncionEdicionSeleccionada() { if (designing) { return null; } if (getPaginaActualizacion().getRecursoDataProvider().isFuncionUpdateEjecutada()) { return getPaginaActualizacion().getRecursoDataProvider().getFuncionUpdate(); } if (isEdicionMultiFuncion()) { return funcionEdicionSeleccionada; } // return getPaginaActualizacion().getRecursoDataProvider().getFuncionUpdate(); return getPaginaActualizacion().getRecursoDataProvider().isFuncionUpdateAutorizada() ? getPaginaActualizacion().getRecursoDataProvider().getFuncionUpdate() : getPaginaActualizacion().getFuncionModificarRecurso(); } public void setFuncionEdicionSeleccionada(Long funcion) { Long funcionEditarRecurso = getFuncionEditarRecurso(funcion); if (funcionEditarRecurso != null) { funcionEdicionSeleccionada = funcionEditarRecurso; editar(funcionEditarRecurso); } } public String getEtiquetaOpcionSeleccionadaListaFuncionEdicion() { if (designing) { return null; } String label = isEdicionMultiFuncion() ? STP.getToken(getEtiquetaOpcionSeleccionada( getPaginaActualizacionConEdicionMultiple().getListaFuncionEdicion1())) : BundleWebui.getString("botonEditar.text"); /**/ return StringUtils.defaultIfBlank(label, getI18n().getEtiquetaSeleccioneUnaOpcionListaFuncionEdicion()); } private Long getFuncionEditarRecurso(Long funcion) { Option opcion = null; if (isEdicionMultiFuncion()) { opcion = getOpcionListaDesplegable(funcion, getPaginaActualizacionConEdicionMultiple().getListaFuncionEdicion1()); } // return opcion == null ? getPaginaActualizacion().getFuncionModificarRecurso() : funcion; return opcion == null ? null : funcion; } // </editor-fold> }