package co.smartreceipts.android.filters; import org.json.JSONException; import org.json.JSONObject; import java.util.List; import co.smartreceipts.android.R; import co.smartreceipts.android.model.Trip; public class TripMinimumPriceFilter implements Filter<Trip>{ private final static String MIN_PRICE = "minprice"; private final static String CURRENCY_CODE = "currencycode"; private final float mMinPrice; private final String mCurrencyCode; public TripMinimumPriceFilter(float minPrice, String currencyCode) { if (currencyCode == null) throw new IllegalArgumentException( "ReceiptMinPriceFilter requires non-null currencyCode"); mMinPrice = minPrice; mCurrencyCode = currencyCode; } public TripMinimumPriceFilter(JSONObject json) throws JSONException { this.mMinPrice = (float) json.getDouble(MIN_PRICE); this.mCurrencyCode = json.getString(CURRENCY_CODE); } @Override public boolean accept(Trip t) { return t.getPrice().getPriceAsFloat() >= mMinPrice && t.getPrice().getCurrencyCode().equalsIgnoreCase(mCurrencyCode); } @Override public JSONObject getJsonRepresentation() throws JSONException { final JSONObject json = new JSONObject(); json.put(FilterFactory.CLASS_NAME, this.getClass().getName()); json.put(MIN_PRICE, mMinPrice); json.put(CURRENCY_CODE, mCurrencyCode); return json; } @Override public List<Filter<Trip>> getChildren() { return null; } @Override public int getNameResource() { return R.string.filter_name_trip_min_price; } @Override public FilterType getType() { return FilterType.Float; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((mCurrencyCode == null) ? 0 : mCurrencyCode.hashCode()) + (int) (mMinPrice * 100); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null || getClass() != obj.getClass()) return false; TripMinimumPriceFilter other = (TripMinimumPriceFilter) obj; return (mMinPrice == other.mMinPrice && mCurrencyCode.equals(other.mCurrencyCode)); } }