/*
* $Id: FilterSelectionImpl.java,v 1.2 2006/09/25 08:52:36 acaproni Exp $
*
* $Date: 2006/09/25 08:52:36 $
* $Revision: 1.2 $
* $Author: acaproni $
*
* Copyright CERN, All Rights Reserved.
*/
package cern.laser.client.impl.services.selection;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import cern.laser.client.services.selection.Filter;
import cern.laser.client.services.selection.FilterSelection;
public class FilterSelectionImpl implements FilterSelection, Serializable {
private Set filterSet = null;
public FilterSelectionImpl() {
filterSet = new HashSet();
}
public boolean add(Filter filter) {
if (filter == null) { throw new IllegalArgumentException("parameter can not be null"); }
return filterSet.add(filter);
}
public boolean addAll(Collection filters) {
if (filters == null) { throw new IllegalArgumentException("parameter can not be null"); }
return filterSet.addAll(filters);
}
public boolean remove(Filter filter) {
if (filter == null) { throw new IllegalArgumentException("parameter can not be null"); }
return filterSet.remove(filter);
}
public boolean contains(Filter filter) {
if (filter == null) { throw new IllegalArgumentException("parameter can not be null"); }
return filterSet.contains(filter);
}
public Filter[] list() {
return (Filter[]) filterSet.toArray(new Filter[filterSet.size()]);
}
public String toSQLString() {
if ((filterSet == null) || (filterSet.size() == 0)) { return null; }
StringBuffer str = new StringBuffer();
Iterator iterator = filterSet.iterator();
while (iterator.hasNext()) {
FilterImpl filter = (FilterImpl) iterator.next();
str.append(filter.getProperty());
str.append(" ");
str.append(filter.getOperator());
str.append(" ");
if (filter.isString()) {
str.append("'");
str.append(filter.getValue());
str.append("'");
} else {
str.append(filter.getValue());
}
if (iterator.hasNext()) {
str.append(" AND ");
}
}
return str.toString();
}
public String toString() {
StringBuffer str_buf = new StringBuffer();
str_buf.append("\nSELECTED FILTERS : ");
Object[] fs = filterSet.toArray();
for (int i = 0; i < fs.length; str_buf.append(fs[i++] + " "))
;
return str_buf.toString();
}
}