コード例 #1
0
 public ArrayList applyFilter(ArrayList list, boolean clone) {
   synchronized (list) {
     if (clone) {
       list = Util.cloneList(list);
     }
     if (filters != null && list != null && !filters.isEmpty() && !list.isEmpty()) {
       Iterator<NewsArticle> it = list.iterator();
       elements:
       while (it.hasNext()) {
         NewsArticle item = it.next();
         for (FilterVO filter : filters) {
           if (filter.getAttribute().equals(Constants.ARTICLE_SCORE)
               || filter.getAttribute().equals(Constants.ARTICLE_RAW_SCORE_MAP)) {
             double value = Double.valueOf(filter.getValue());
             double attribute = (Double) convertAttribute(filter.getAttribute(), item);
             if (filter.getOperator().equals(Constants.FILTER_EQUALS_TO) && attribute != value) {
               it.remove();
               continue elements;
             } else if (filter.getOperator().equals(Constants.FILTER_HIGHER_THAN)
                 && attribute <= value) {
               it.remove();
               continue elements;
             } else if (filter.getOperator().equals(Constants.FILTER_LOWER_THAN)
                 && attribute >= value) {
               it.remove();
               continue elements;
             }
           } else if (filter.getAttribute().equals(Constants.ARTICLE_INDEX)) {
             int value = Integer.valueOf(filter.getValue());
             int attribute = (Integer) convertAttribute(filter.getAttribute(), item);
             if (filter.getOperator().equals(Constants.FILTER_EQUALS_TO) && attribute != value) {
               it.remove();
               continue elements;
             } else if (filter.getOperator().equals(Constants.FILTER_HIGHER_THAN)
                 && attribute <= value) {
               it.remove();
               continue elements;
             } else if (filter.getOperator().equals(Constants.FILTER_LOWER_THAN)
                 && attribute >= value) {
               it.remove();
               continue elements;
             }
           } else {
             String attribute = (String) convertAttribute(filter.getAttribute(), item);
             if (filter.getOperator().equals(Constants.FILTER_EQUALS_TO)
                 && attribute.equalsIgnoreCase(filter.getValue()) == false) {
               it.remove();
               continue elements;
             } else if (filter.getOperator().equals(Constants.FILTER_CONTAINS_STRING)
                 && attribute.contains(filter.getValue()) == false) {
               it.remove();
               continue elements;
             }
           }
         }
       }
     }
     isApplyFilter = false;
     return list;
   }
 }