private void addGroupBy(
     List<String> groupBy,
     String alias,
     TipoAgregacionEnumeration tipo,
     VistaFuncionColBase grupo) {
   if (TipoAgregacionEnumeration.GRUPO.equals(tipo) || (tipo == null && grupo != null)) {
     groupBy.add(alias);
   }
 }
 private void addGrafico(
     List<String> grafico,
     String alias,
     TipoAgregacionEnumeration tipo,
     VistaFuncionColBase grupo,
     boolean visible) {
   if (grupo != null && grupo != _ultimo) {
     if (tipo == null || TipoAgregacionEnumeration.GRUPO.equals(tipo)) {
       grafico.add(pdq(alias, visible));
     }
   }
 }
 private void init() throws ExcepcionAplicacion {
   _vista = EJBL.getVistaFuncionFacade().find(_id, true);
   if (_vista == null) {
     throw new ExcepcionAplicacion(Bitacora.getTextoMensaje(CBM.VISTA_NO_DISPONIBLE, _nombre));
   }
   _nombre = _vista.getNombre();
   _from = from(_select);
   if (StringUtils.isBlank(_from)) {
     // vista "{0}" no tiene origen
     throw new ExcepcionAplicacion(
         Bitacora.getTextoMensaje(CBM.ERROR_COMANDO_SELECT_VISTA_1, _nombre));
   }
   _where = where(_select);
   _columnas = new ArrayList<>(_vista.getVistaFuncionColByVistaCollection());
   _columnasOcultas = new ArrayList<>();
   _grupos = new ArrayList<>();
   _agregaciones = new ArrayList<>();
   VistaFuncionColPorSecuencia c1 = new VistaFuncionColPorSecuencia();
   VistaFuncionColPorId c2 = new VistaFuncionColPorId();
   Comparator<VistaFuncionColBase> comparator =
       (Comparator<VistaFuncionColBase>) ComparatorUtils.chainedComparator(c1, c2);
   Collections.sort((List<VistaFuncionColBase>) _columnas, comparator);
   boolean parametrosRestringidos =
       TLC.getControlador().esFuncionConParametrosRestringidos(_vista.getFuncion().getIdFuncion());
   String codigoDominio = _vista.getFuncion().getIdDominio().getCodigoDominio();
   TipoAgregacionBase agregacion;
   TipoAgregacionEnumeration tipoAgregacion;
   VistaFuncionColBase grupo;
   String alias;
   String propertyColumn;
   Long propertySelect;
   boolean parametroAutorizado;
   for (VistaFuncionColBase vistaFuncionCol : _columnas) {
     agregacion = vistaFuncionCol.getAgregacion();
     tipoAgregacion =
         agregacion == null ? null : TipoAgregacionEnumeration.valueOf(agregacion.getNumero());
     grupo = vistaFuncionCol.getGrupo();
     alias = vistaFuncionCol.getAlias();
     if (parametrosRestringidos) {
       propertyColumn = BaseBundle.getPropertyColumn(codigoDominio, alias);
       propertySelect = BaseBundle.getPropertySelect(codigoDominio, alias);
       parametroAutorizado =
           propertyColumn == null
               || propertySelect == null
               || TLC.getControlador().esParametroAutorizado(propertyColumn, propertySelect);
     } else {
       parametroAutorizado = true;
     }
     if (parametroAutorizado) {
       if (tipoAgregacion != null) {
         if (TipoAgregacionEnumeration.GRUPO.equals(tipoAgregacion)) {
           if (grupo != null && vistaFuncionCol.getId().equals(grupo.getId())) {
             _grupos.add(vistaFuncionCol);
             _ultimo = vistaFuncionCol;
           }
         } else {
           _agregaciones.add(vistaFuncionCol);
         }
       }
       _orden |= BitUtils.valueOf(vistaFuncionCol.getOrden());
     } else {
       _columnasOcultas.add(vistaFuncionCol);
     }
   }
   if (_columnasOcultas.isEmpty()) {
     if (_columnas.isEmpty()) {
       // vista "{0}" no tiene columnas
       throw new ExcepcionAplicacion(
           Bitacora.getTextoMensaje(CBM.ERROR_COMANDO_SELECT_VISTA_2, _nombre));
     }
     switch (_tipo) {
       case DETALLE:
         if (_grupos.isEmpty()) {
         } else if (_agregaciones.isEmpty()) {
           // vista "{0}" no tiene agregaciones
           throw new ExcepcionAplicacion(
               Bitacora.getTextoMensaje(CBM.ERROR_COMANDO_SELECT_VISTA_4, _nombre));
         }
         break;
       case GRAFICO:
         if (_grupos.isEmpty()) {
           // vista "{0}" no tiene grupos
           throw new ExcepcionAplicacion(
               Bitacora.getTextoMensaje(CBM.ERROR_COMANDO_SELECT_VISTA_3, _nombre));
         }
         if (_agregaciones.isEmpty()) {
           // vista "{0}" no tiene agregaciones
           throw new ExcepcionAplicacion(
               Bitacora.getTextoMensaje(CBM.ERROR_COMANDO_SELECT_VISTA_4, _nombre));
         }
         agregacion = null;
         for (VistaFuncionColBase vistaFuncionCol : _agregaciones) {
           if (BitUtils.valueOf(vistaFuncionCol.getGraficable())) {
             continue;
           }
           agregacion = vistaFuncionCol.getAgregacion();
           tipoAgregacion = TipoAgregacionEnumeration.valueOf(agregacion.getNumero());
           TLC.getBitacora()
               .error(
                   CBM.COLUMNA_NO_GRAFICABLE,
                   vistaFuncionCol.getNombre(),
                   tipoAgregacion.getLabel());
         }
         if (agregacion != null) {
           throw new ExcepcionAplicacion(
               Bitacora.getTextoMensaje(CBM.VISTA_NO_GRAFICABLE, _nombre));
         }
         break;
       case RESUMEN:
         if (_agregaciones.isEmpty()) {
           // vista "{0}" no tiene agregaciones
           throw new ExcepcionAplicacion(
               Bitacora.getTextoMensaje(CBM.ERROR_COMANDO_SELECT_VISTA_4, _nombre));
         }
         break;
     }
   } else {
     for (VistaFuncionColBase vistaFuncionCol : _columnasOcultas) {
       TLC.getBitacora().error(CBM.COLUMNA_NO_AUTORIZADA, vistaFuncionCol.getNombre());
     }
     throw new ExcepcionAplicacion(Bitacora.getTextoMensaje(CBM.VISTA_NO_AUTORIZADA, _nombre));
   }
   if (_orden) {
   } else {
     // vista "{0}" no tiene orden
     TLC.getBitacora().warn(CBM.ERROR_COMANDO_SELECT_VISTA_5, _nombre);
   }
   _vistaValida = true;
 }