package apps.makarov.com.whereismycurrency.mappers.json;
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import apps.makarov.com.whereismycurrency.DateUtils;
import apps.makarov.com.whereismycurrency.mappers.Mapper;
import apps.makarov.com.whereismycurrency.models.Bank;
import apps.makarov.com.whereismycurrency.models.CurrencyPair;
import apps.makarov.com.whereismycurrency.models.Rate;
/**
* Created by makarov on 29/06/15.
*/
/*
Interpreter for json to fixer.io rates
*/
public class HistoryRateJsonMapper implements Mapper<List<Rate>, JSONObject> {
public static final String TAG = HistoryRateJsonMapper.class.getSimpleName();
@Override
public List<Rate> modelToData(JSONObject mJsonObject) {
List<Rate> ratesList = new ArrayList<>();
try {
String baseCurrency = mJsonObject.getString("base");
String dateStr = mJsonObject.getString("date");
Date date = parseFixerDate(dateStr);
JSONObject ratesJsonArray = mJsonObject.getJSONObject("rates");
Iterator<String> iter = ratesJsonArray.keys();
while (iter.hasNext()) {
String compareCurrency = iter.next();
double value = ratesJsonArray.getDouble(compareCurrency);
Rate rate = new Rate();
rate.setValue(value);
rate.setChangeRate(date);
rate.setBank(Bank.DEFAULT);
CurrencyPair pair = CurrencyPair.createPair(baseCurrency, compareCurrency);
rate.setCurrencyPair(pair);
ratesList.add(rate);
}
} catch (JSONException e) {
e.printStackTrace();
}
return ratesList;
}
@Override
public JSONObject dataToModel(List<Rate> obj) {
return null;
}
private Date parseFixerDate(String dateStr) {
try {
SimpleDateFormat dt = DateUtils.getFixerIoDareFormat();
return dt.parse(dateStr);
} catch (ParseException e) {
Log.e(TAG, "ParseException", e);
return new Date();
}
}
}