View Javadoc
1   /**
2    * This file Copyright (c) 2008-2016 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   * @see AggregateFilter
45   * @see com.sun.syndication.feed.synd.SyndFeed
46   * @see AggregateFeed
47   */
48  public class FilterPredicate {
49  
50      /**
51       * Conditions to aggregate predicates.
52       */
53      enum Condition {
54          AND, OR, NOT
55      }
56  
57      private final Condition condition;
58      private final String property;
59      private final String regularExpression;
60  
61      /**
62       * Create a new FilterPredicate for the given <code>condition</code>, <code>property</code> and
63       * <code>regularExpression</code>.
64       *
65       * @param condition the {@link Condition condition} for this predicate
66       * @param property the property of the feed this predicate applies to (eg. 'author')
67       * @param regularExpression the regular expression the value of the property should or should not match
68       */
69      public FilterPredicate(Condition condition, String property, String regularExpression) {
70          Assert.notNull(condition, "'condition' must not be null");
71          Assert.notBlank(property, "'property' must not be empty");
72          Assert.notBlank(regularExpression, "'regularExpression' must not be empty");
73          this.condition = condition;
74          this.property = property;
75          this.regularExpression = regularExpression;
76      }
77  
78      /**
79       * Return the condition for this predicate.
80       *
81       * @return the condition for this predicate
82       */
83      public Condition getCondition() {
84          return condition;
85      }
86  
87      /**
88       * Return the property of the feed this predicate applies to.
89       *
90       * @return the property of the feed this predicate applies to
91       */
92      public String getProperty() {
93          return property;
94      }
95  
96      /**
97       * Return the regular expression for this predicate.
98       *
99       * @return the regular expression for this predicate
100      */
101     public String getRegularExpression() {
102         return regularExpression;
103     }
104 
105 }