View Javadoc

1   /**
2    * This file Copyright (c) 2008-2013 Magnolia International
3    * Ltd.  (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10   * This file is distributed in the hope that it will be
11   * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12   * implied warranty of MERCHANTABILITY or FITNESS FOR A
13   * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14   * Redistribution, except as permitted by whichever of the GPL
15   * or MNA you select, is prohibited.
16   *
17   * 1. For the GPL license (GPL), you can redistribute and/or
18   * modify this file under the terms of the GNU General
19   * Public License, Version 3, as published by the Free Software
20   * Foundation.  You should have received a copy of the GNU
21   * General Public License, Version 3 along with this program;
22   * if not, write to the Free Software Foundation, Inc., 51
23   * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24   *
25   * 2. For the Magnolia Network Agreement (MNA), this file
26   * and the accompanying materials are made available under the
27   * terms of the MNA which accompanies this distribution, and
28   * is available at http://www.magnolia-cms.com/mna.html
29   *
30   * Any modifications to this file must keep this entire header
31   * intact.
32   *
33   */
34  package info.magnolia.module.rssaggregator.importhandler;
35  
36  import info.magnolia.module.rssaggregator.util.Assert;
37  
38  /**
39   * A filter predicate that can be applied to a feed {@link com.sun.syndication.feed.synd.SyndFeed entry}.
40   * <p/>
41   * A filter predicate typically belongs to a {@link AggregateFilter} which in turn is defined for an {@link
42   * AggregateFeed}.
43   *
44   * @author Rob van der Linden Vooren
45   * @see AggregateFilter
46   * @see com.sun.syndication.feed.synd.SyndFeed
47   * @see AggregateFeed
48   */
49  public class FilterPredicate {
50  
51      /**
52       * Conditions to aggregate predicates.
53       */
54      enum Condition {
55          AND, OR, NOT
56      }
57  
58      private final Condition condition;
59      private final String property;
60      private final String regularExpression;
61  
62      /**
63       * Create a new FilterPredicate for the given <code>condition</code>, <code>property</code> and
64       * <code>regularExpression</code>.
65       *
66       * @param condition the {@link Condition condition} for this predicate
67       * @param property the property of the feed this predicate applies to (eg. 'author')
68       * @param regularExpression the regular expression the value of the property should or should not match
69       */
70      public FilterPredicate(Condition condition, String property, String regularExpression) {
71          Assert.notNull(condition, "'condition' must not be null");
72          Assert.notBlank(property, "'property' must not be empty");
73          Assert.notBlank(regularExpression, "'regularExpression' must not be empty");
74          this.condition = condition;
75          this.property = property;
76          this.regularExpression = regularExpression;
77      }
78  
79      /**
80       * Return the condition for this predicate.
81       *
82       * @return the condition for this predicate
83       */
84      public Condition getCondition() {
85          return condition;
86      }
87  
88      /**
89       * Return the property of the feed this predicate applies to.
90       *
91       * @return the property of the feed this predicate applies to
92       */
93      public String getProperty() {
94          return property;
95      }
96  
97      /**
98       * Return the regular expression for this predicate.
99       *
100      * @return the regular expression for this predicate
101      */
102     public String getRegularExpression() {
103         return regularExpression;
104     }
105 
106 }