Example #1
0
 @SuppressWarnings("unchecked")
 public static List<Criterion> sortByTypeAndName(
         Collection<? extends Criterion> criterions) {
     List<Criterion> result = new ArrayList<Criterion>(criterions);
     Collections.sort(result,
             ComparatorUtils.chainedComparator(byType, byName));
     return result;
 }
  /**
   * Compares two objects (that implement ElementInterface) by name according to the rules for the
   * compare method.
   *
   * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
   */
  public int compare(Object o1, Object o2) {
    // Get a null comparator that is backed by a static "natural" comparator
    Comparator c = ComparatorUtils.nullLowComparator(null);

    // convert o1 and o2 into the string names when not null
    Object no1 = (o1 == null) ? null : ((ElementInterface) o1).getName();
    Object no2 = (o2 == null) ? null : ((ElementInterface) o2).getName();

    // let the null comparator handle possible null values, where null < non-null string
    return c.compare(no1, no2);
  }
Example #3
0
 @SuppressWarnings({"unchecked", "rawtypes"})
 public static void main(String[] args) {
   List<User> list = new ArrayList<User>();
   list.add(new User(2, "姚郁", 28));
   list.add(new User(1, "孟志昂", 25));
   list.add(new User(3, "矿宗义", 30));
   list.add(new User(4, "王仕强", 25));
   System.out.println("-----排序前-----");
   for (User u : list) {
     System.out.println(u.name + "/" + u.age);
   }
   System.out.println("-----满足:先按age升序排列,再按id降序排列-----");
   List sortFields = new ArrayList();
   Comparator mycmp = ComparableComparator.getInstance();
   mycmp = ComparatorUtils.reversedComparator(mycmp);
   sortFields.add(new BeanComparator("age"));
   sortFields.add(new BeanComparator("id", mycmp));
   ComparatorChain multiSort = new ComparatorChain(sortFields);
   Collections.sort(list, multiSort);
   for (User u : list) {
     System.out.println(u.id + "/" + u.name + "/" + u.age);
   }
 }
 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;
 }