/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License * at: * * http://opensource.org/licenses/ecl2.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package org.opencastproject.index.service.resources.list.query; import org.opencastproject.index.service.resources.list.api.ResourceListFilter; import org.opencastproject.index.service.resources.list.api.ResourceListQuery; import org.opencastproject.util.data.Option; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class ResourceListQueryImpl implements ResourceListQuery { protected final List<ResourceListFilter<?>> availableFilters = new ArrayList<ResourceListFilter<?>>(); private final Map<String, ResourceListFilter<?>> filters = new HashMap<String, ResourceListFilter<?>>(); private Option<Integer> limit; private Option<Integer> offset; protected Option<String> sortBy; public ResourceListQueryImpl() { limit = Option.none(); offset = Option.none(); sortBy = Option.none(); } public void addFilter(ResourceListFilter<?> filter) { this.filters.put(filter.getName(), filter); } public void removeFilter(ResourceListFilter<?> filter) { this.filters.remove(filter.getName()); } public void setLimit(Integer limit) { this.limit = Option.<Integer> option(limit); } public void setOffset(Integer offset) { this.offset = Option.<Integer> option(offset); } @Override public List<ResourceListFilter<?>> getFilters() { return new ArrayList<ResourceListFilter<?>>(filters.values()); } @Override public ResourceListFilter<?> getFilter(String name) { return filters.get(name); } @Override public Option<Integer> getLimit() { return limit; } @Override public Option<Integer> getOffset() { return offset; } @Override public Option<String> getSortBy() { return sortBy; } @Override public Boolean hasFilter(String name) { return filters.containsKey(name); } @Override public List<ResourceListFilter<?>> getAvailableFilters() { return availableFilters; } /** * Returns the filter value wrapped in an {@link Option} or none if the filter is not existing or has no value. * * @param name * the filter name * @return an {@link Option} wrapping the value or none. */ public <A> Option<A> getFilterValue(String name) { if (this.hasFilter(name)) { return (Option<A>) this.getFilter(name).getValue(); } return Option.<A> none(); } }