package org.ripple.power.txns; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import org.json.JSONArray; import org.json.JSONObject; import org.json.JSONTokener; import org.ripple.power.ui.UIRes; import com.google.common.base.Strings; public class Currencies { private static ArrayList<Item> _items = new ArrayList<Item>(100); private static Comparator<Item> itmeComparator = new Comparator<Currencies.Item>() { @Override public int compare(Item o1, Item o2) { return o2.order - o1.order; } }; public static class Item { // {"value": "XRP", "name": "Ripple", "standard_precision": 4, "order": // 5} public String value; public String name; public int standard_precision; public int order; public boolean display; public String toString() { return value; } } public static ArrayList<String> values() { ArrayList<Item> items = load(); int size = items.size(); ArrayList<String> list = new ArrayList<String>(size); for (Item item : items) { list.add(item.value); } return list; } public static ArrayList<String> keys() { ArrayList<Item> items = load(); int size = items.size(); ArrayList<String> list = new ArrayList<String>(size); for (Item item : items) { list.add(item.name); } return list; } public static String name(String name) { if (Strings.isNullOrEmpty(name)) { return null; } ArrayList<Item> items = load(); for (Item item : items) { if (name.equalsIgnoreCase(item.value)) { return item.name; } } return null; } public static ArrayList<Item> get() { return new ArrayList<Item>(load()); } private static ArrayList<Item> load() { if (_items.size() == 0) { JSONTokener tokener = null; try { tokener = new JSONTokener( UIRes.getStream("config/currencies.json")); } catch (Exception e) { e.printStackTrace(); } JSONArray arrays = new JSONArray(tokener); for (int i = 0; i < arrays.length(); i++) { JSONObject obj = arrays.getJSONObject(i); Item item = new Item(); item.name = obj.getString("name"); item.value = obj.getString("value"); item.order = obj.getInt("order"); item.standard_precision = obj.getInt("standard_precision"); if (obj.has("display")) { item.display = obj.getBoolean("display"); } _items.add(item); } Collections.sort(_items, itmeComparator); } return _items; } }