View Javadoc

1   /*
2    Copyright (C) 2006 Grid Systems, S.A.
3   
4    This library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8   
9    This library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13  
14   You should have received a copy of the GNU Lesser General Public
15   License along with this library; if not, write to the Free Software
16   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
17  */
18  package nextgrid.api.pom;
19  
20  import java.io.Serializable;
21  import java.util.ArrayList;
22  import java.util.Collections;
23  import java.util.Iterator;
24  import java.util.List;
25  
26  /**
27   * Collection of queries for a single process.
28   *
29   * @author Rodrigo Ruiz
30   */
31  public class QueryProfile implements Serializable {
32  
33    /**
34     * <code>serialVersionUID</code> attribute.
35     */
36    private static final long serialVersionUID = 4230594414399444504L;
37  
38    /**
39     * The list of constraints in this profile.
40     */
41    private final List<Query> constraints;
42  
43    /**
44     * Creates a new instance.
45     */
46    public QueryProfile() {
47      this.constraints = new ArrayList<Query>();
48    }
49  
50    /**
51     * Creates a new instance.
52     *
53     * @param constraints A list of queries defining the constraints
54     */
55    public QueryProfile(List<Query> constraints) {
56      this.constraints = constraints;
57    }
58  
59    /**
60     * Gets the constraints defined in this profile as a list of queries.
61     *
62     * @return A list of queries
63     */
64    public final List<Query> getConstraints() {
65      return Collections.unmodifiableList(this.constraints);
66    }
67  
68    /**
69     * Adds a query to the list.
70     *
71     * @param query The query instance to add
72     */
73    public final void addConstraint(Query query) {
74      if (query != null) {
75        constraints.add(query);
76      }
77    }
78  
79    /**
80     * Adds a query to the list.
81     *
82     * @param lang The query language
83     * @param text The query text
84     */
85    public final void addConstraint(String lang, String text) {
86      if (lang != null && text != null) {
87        constraints.add(new Query(lang, text));
88      }
89    }
90  
91    /**
92     * Removes a query from the list.
93     *
94     * @param lang The query language to remove
95     */
96    public final void removeConstraint(String lang) {
97      if (lang != null) {
98        for (Iterator<Query> it = constraints.iterator(); it.hasNext();) {
99          Query q = it.next();
100         if (q.getLang().equals(lang)) {
101           it.remove();
102           return;
103         }
104       }
105     }
106   }
107 
108   /**
109    * Removes a query from the list.
110    *
111    * @param index Position of the query to remove
112    */
113   public final void removeConstraint(int index) {
114     constraints.remove(index);
115   }
116 
117   /**
118    * Removes a query from the list.
119    *
120    * @param q The query to remove
121    */
122   public final void removeConstraint(Query q) {
123     if (q != null) {
124       constraints.remove(q);
125     }
126   }
127 }