예제 #1
0
 private void applyFilters(SelectQuery query) {
   if (this.filters != null && this.filters.length > 0) {
     ComboCondition comboCondition = new ComboCondition(ComboCondition.Op.AND);
     if (filters.length > 0) {
       for (int i = 0; i < filters.length; i++) {
         Filter filter = filters[i];
         FilterType filterType = filter.getFilterType();
         DbColumn filterColumn = new DbColumn(dbTable, filter.getField(), "", null, null);
         if (filterType.equals(FilterType.EQ)) {
           comboCondition.addCondition(BinaryCondition.equalTo(filterColumn, filter.getValue()));
         } else if (filterType.equals(FilterType.GT)) {
           comboCondition.addCondition(
               BinaryCondition.greaterThan(filterColumn, filter.getValue(), false));
         } else if (filterType.equals(FilterType.LT)) {
           comboCondition.addCondition(
               BinaryCondition.lessThan(filterColumn, filter.getValue(), false));
         } else if (filterType.equals(FilterType.GTE)) {
           comboCondition.addCondition(
               BinaryCondition.greaterThan(filterColumn, filter.getValue(), true));
         } else if (filterType.equals(FilterType.LTE)) {
           comboCondition.addCondition(
               BinaryCondition.lessThan(filterColumn, filter.getValue(), true));
         } else if (filterType.equals(FilterType.NEQ)) {
           comboCondition.addCondition(
               BinaryCondition.notEqualTo(filterColumn, filter.getValue()));
         } else if (filterType.equals(FilterType.IN)) {
           ComboCondition comboConditionOR = new ComboCondition(ComboCondition.Op.OR);
           String[] condicion = filter.getValue().toString().split(",");
           for (int z = 0; z < condicion.length; z++) {
             comboConditionOR.addCondition(BinaryCondition.equalTo(filterColumn, condicion[z]));
           }
           comboCondition.addCondition(comboConditionOR);
         } else {
           throw new UnsupportedOperationException(
               "Currently, the filter operation " + filterType + " is not supported");
         }
       }
     }
     query.addCondition(comboCondition);
   }
 }