package com.dgex.offspring.wallet; import org.json.simple.JSONObject; public class NXTAccount implements INXTWalletAccount { public final static String KEY_LABEL = "label"; public final static String KEY_ACCOUNT = "account"; public final static String KEY_KEY = "key"; public final static String KEY_BALANCE = "balance"; public final static String KEY_TYPE = "type"; private final String label; private final String account; private final String privateKey; private final Object balance; public NXTAccount(String label, String account, String privateKey, Object balance) { if (label == null || label.isEmpty()) throw new IllegalArgumentException("illegal label"); if (account == null || account.isEmpty()) throw new IllegalArgumentException("illegal account"); // if (privateKey == null) // throw new IllegalArgumentException("illegal privateKey"); this.label = label; this.account = account; this.privateKey = privateKey; this.balance = balance; } @Override public boolean equals(Object obj) { if (obj instanceof NXTAccount) { if (label.equals(((NXTAccount) obj).label)) { if (account.equals(((NXTAccount) obj).account)) { if (privateKey == null) { return ((NXTAccount) obj).privateKey == null; } else { return privateKey.equals(((NXTAccount) obj).privateKey); } } } } return false; } public static INXTWalletAccount create(JSONObject obj) { Object key = obj.get(KEY_KEY); return new NXTAccount((String) obj.get(KEY_LABEL), (String) obj.get(KEY_ACCOUNT), key == null ? null : (String) key, obj.get(KEY_BALANCE)); } public static INXTWalletAccount create(String label, String account, String privateKey, Object balance) { return new NXTAccount(label, account, privateKey, balance); } @SuppressWarnings("unchecked") @Override public JSONObject toJSONObject() { JSONObject obj = new JSONObject(); obj.put(KEY_LABEL, label); obj.put(KEY_ACCOUNT, account); if (privateKey != null) { obj.put(KEY_KEY, privateKey); } obj.put(KEY_BALANCE, balance); obj.put(KEY_TYPE, "nxt"); return obj; } @Override public String getLabel() { return label; } @Override public String getPrivateKey() { return privateKey; } @Override public String getAccountNumber() { return account; } @Override public long getBalance() { if (balance instanceof Double) return ((Double) balance).longValue(); else if (balance instanceof Long) return (Long) balance; return 0; } }