/*
* Copyright (c) 2012 Denis Solonenko.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v2.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*/
package ru.orangesoftware.financisto2.rates;
import android.content.ContentValues;
import android.database.Cursor;
import ru.orangesoftware.financisto2.db.DatabaseHelper;
/**
* Created by IntelliJ IDEA.
* User: denis.solonenko
* Date: 1/17/12 11:25 PM
*/
public class ExchangeRate implements Comparable<ExchangeRate> {
public static final ExchangeRate ONE = new ExchangeRate();
public static final ExchangeRate NA = new ExchangeRate();
static {
ONE.rate = 1.0d;
NA.error = "N/A";
}
public static ExchangeRate fromCursor(Cursor c) {
ExchangeRate r = new ExchangeRate();
r.fromCurrencyId = c.getLong(DatabaseHelper.ExchangeRateColumns.from_currency_id.ordinal());
r.toCurrencyId = c.getLong(DatabaseHelper.ExchangeRateColumns.to_currency_id.ordinal());
r.date = c.getLong(DatabaseHelper.ExchangeRateColumns.rate_date.ordinal());
r.rate = c.getFloat(DatabaseHelper.ExchangeRateColumns.rate.ordinal());
return r;
}
public ContentValues toValues() {
ContentValues values = new ContentValues();
values.put(DatabaseHelper.ExchangeRateColumns.from_currency_id.name(), fromCurrencyId);
values.put(DatabaseHelper.ExchangeRateColumns.to_currency_id.name(), toCurrencyId);
values.put(DatabaseHelper.ExchangeRateColumns.rate_date.name(), date);
values.put(DatabaseHelper.ExchangeRateColumns.rate.name(), rate);
return values;
}
public long fromCurrencyId;
public long toCurrencyId;
public long date;
public double rate;
public String error;
public ExchangeRate flip() {
ExchangeRate r = new ExchangeRate();
r.fromCurrencyId = toCurrencyId;
r.toCurrencyId = fromCurrencyId;
r.date = date;
r.rate = rate == 0 ? 0 : 1.0d/rate;
return r;
}
@Override
public int compareTo(ExchangeRate that) {
long d0 = this.date;
long d1 = that.date;
return d0 > d1 ? -1 : (d0 < d1 ? 1 : 0);
}
public boolean isOk() {
return error == null;
}
public String getErrorMessage() {
return error != null ? error : "";
}
}