View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  
22  package org.opencastproject.themes.list;
23  
24  import org.opencastproject.list.api.DefaultResourceListQuery;
25  import org.opencastproject.list.api.ResourceListFilter;
26  import org.opencastproject.list.api.ResourceListFilter.SourceType;
27  import org.opencastproject.list.common.provider.UsersListProvider;
28  import org.opencastproject.list.util.FiltersUtils;
29  
30  import java.util.Optional;
31  
32  /**
33   * Query for the themes list.
34   *
35   * The following filters can be used:
36   * <ul>
37   * <li>creator</li>
38   * </ul>
39   */
40  public class ThemesListQuery extends DefaultResourceListQuery {
41  
42    public static final String FILTER_CREATOR_NAME = "Creator";
43    private static final String FILTER_CREATOR_LABEL = "FILTERS.THEMES.CREATOR.LABEL";
44  
45    public static final String FILTER_TEXT_NAME = "textFilter";
46  
47    public ThemesListQuery() {
48      super();
49    }
50  
51    /**
52     * Add a {@link ResourceListFilter} filter to the query with the given creator
53     *
54     * @param creator
55     *          the creator to filter for
56     */
57    public void withCreator(String creator) {
58      this.addFilter(createCreatorFilter(Optional.ofNullable(creator)));
59    }
60  
61    /**
62     * Returns an {@link Optional} containing the creator used to filter if set
63     *
64     * @return an {@link Optional} containing the creator or none.
65     */
66    public Optional<String> getCreator() {
67      return getFilterValue(FILTER_CREATOR_NAME);
68    }
69  
70    /**
71     * Create a new {@link ResourceListFilter} based on a creator
72     *
73     * @param creator
74     *          the creator to filter on wrapped in an {@link Optional} or {@link Optional#empty()}
75     * @return a new {@link ResourceListFilter} for a creator based query
76     */
77    public static ResourceListFilter<String> createCreatorFilter(Optional<String> creator) {
78      return FiltersUtils.generateFilter(creator, FILTER_CREATOR_NAME, FILTER_CREATOR_LABEL, SourceType.SELECT,
79              Optional.of(UsersListProvider.NAME_ONLY));
80    }
81  
82  }