/*******************************************************************************
* Copyleft 2013 Massimiliano Leone - massimiliano.leone@iubris.net .
*
* Sieve.java is part of 'Ulysses'.
*
* 'Ulysses' is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* 'Ulysses' is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with 'Ulysses'; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
******************************************************************************/
package net.iubris.ulysses.ui.icons.sieve;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.iubris.ulysses.model.Place;
import net.iubris.ulysses.ui.icons.filter.Filter;
import roboguice.util.Ln;
import android.graphics.Bitmap;
//@Singleton
public class Sieve {
private final List<Filter> filters = new ArrayList<Filter>();
private final Bitmap defaultBitmap;
public Sieve(/*@DefaultBitmap*/ Bitmap defaultBitmap) {
this.defaultBitmap = defaultBitmap;
}
/**
* filters order is important: first result is first match !
*/
public Sieve(Bitmap defaultBitmap, Filter... filters) {
this(defaultBitmap);
this.filters.addAll( Arrays.asList(filters) );
}
/**
* order is important: first result is first match !
*/
public Sieve addFilter(Filter filter) {
filters.add(filter);
return this;
}
/**
* order is important: first result is first match !
*/
public Sieve addFilters(List<Filter> filters) {
filters.addAll(filters);
return this;
}
public Bitmap find(Place place) {
for (Filter filter: filters) {
if (filter.matchOn(place))
return filter.getBitmap();
}
Ln.d("no specific bitmap by type/name found for place '"+place.getPlaceName()+"', using defaultBitmap");
return defaultBitmap;
}
}