/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br>
* University of Zurich, Switzerland.
* <hr>
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* This file has been modified by the OpenOLAT community. Changes are licensed
* under the Apache 2.0 license as the original file.
*/
package org.olat.portfolio.model;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
/**
* Description:<br>
* Object to hold settings for the artefact filter
*
* if a new filter is added, make sure to add it to filterList and to check for emptiness in isFilterEmpty().
* <P>
* Initial Date: 21.07.2010 <br>
* @author Roman Haag, roman.haag@frentix.com, http://www.frentix.com
*/
public class EPFilterSettings {
private List<String> tagFilter = new ArrayList<String>();
private List<String> typeFilter = new ArrayList<String>();
private String textFilter = "";
private List<Date> dateFilter = new ArrayList<Date>();
private List<Object> filterList = new ArrayList<Object>();
private String filterName;
private String filterId = "";
private boolean noTagFilterSet = false;
/**
* @return Returns the filterName.
*/
public String getFilterName() {
return filterName;
}
/**
* @param filterName The filterName to set.
*/
public void setFilterName(String filterName) {
this.filterName = filterName;
}
/**
*
*/
public EPFilterSettings() {
filterList.add(tagFilter);
filterList.add(typeFilter);
filterList.add(textFilter);
filterList.add(dateFilter);
setFilterIdToUniqueId();
}
/**
* @return Returns the internal filterId.
*/
public String getFilterId() {
return filterId;
}
/**
* set or reset the filterID automatically to a unique id
*/
public void setFilterIdToUniqueId(){
filterId = UUID.randomUUID().toString();
}
/**
* @return Returns the filterList.
*/
public List<Object> getFilterList() {
return filterList;
}
/**
* @return Returns the tagFilter.
*/
public List<String> getTagFilter() {
return tagFilter;
}
/**
* @param tagFilter The tagFilter to set.
*/
public void setTagFilter(List<String> tagFilter) {
this.tagFilter = tagFilter;
noTagFilterSet = false;
}
// use this to set tag filter to "none" to filter resources without a tag!
public void setNoTagFilter() {
this.tagFilter = new ArrayList<String>();
noTagFilterSet = true;
}
public boolean isNoTagFilterSet() {
return tagFilter.isEmpty() && noTagFilterSet;
}
/**
* @return Returns the typeFilter.
*/
public List<String> getTypeFilter() {
return typeFilter;
}
/**
* @param typeFilter The typeFilter to set.
*/
public void setTypeFilter(List<String> typeFilter) {
this.typeFilter = typeFilter;
}
/**
* @return Returns the textFilter.
*/
public String getTextFilter() {
return textFilter;
}
/**
* @param textFilter The textFilter to set.
*/
public void setTextFilter(String textFilter) {
this.textFilter = textFilter;
}
/**
* @return Returns the dateFilter.
*/
public List<Date> getDateFilter() {
return dateFilter;
}
/**
* @param dateFilter must be two dates (from, to), where the first is before second.
*/
public void setDateFilter(List<Date> dateFilter) {
this.dateFilter = dateFilter;
}
/**
* returns true if no filter is set.
* @return
*/
public boolean isFilterEmpty() {
if (getTagFilter().isEmpty() && getTypeFilter().isEmpty() &&
getTextFilter().equals("") && getDateFilter().isEmpty() && !noTagFilterSet) {
return true;
}
return false;
}
public EPFilterSettings cloneAfterFullText() {
EPFilterSettings clone = new EPFilterSettings();
if(tagFilter != null) {
clone.tagFilter = new ArrayList<String>(tagFilter);
}
if(typeFilter != null) {
clone.typeFilter = new ArrayList<String>(typeFilter);
}
if(dateFilter != null) {
clone.dateFilter = new ArrayList<Date>(dateFilter);
}
clone.filterName = filterName;
clone.filterId = filterId;
return clone;
}
}