/******************************************************************************
* Copyright © 2013-2016 The Nxt Core Developers. *
* *
* See the AUTHORS.txt, DEVELOPER-AGREEMENT.txt and LICENSE.txt files at *
* the top-level directory of this distribution for the individual copyright *
* holder information and the developer policies on copyright and licensing. *
* *
* Unless otherwise agreed in a custom licensing agreement, no part of the *
* Nxt software, including this file, may be copied, modified, propagated, *
* or distributed except according to the terms contained in the LICENSE.txt *
* file. *
* *
* Removal or modification of this copyright notice is prohibited. *
* *
******************************************************************************/
package nxt;
import nxt.crypto.Crypto;
import nxt.util.Convert;
public class AccountCurrencyBalance {
long accountId;
long currencyId;
long unconfirmedBalance;
long balance;
long unconfirmedCurrencyUnits;
long currencyUnits;
public AccountCurrencyBalance(long unconfirmedBalance, long balance, long unconfirmedCurrencyUnits, long currencyUnits) {
this.unconfirmedBalance = unconfirmedBalance;
this.balance = balance;
this.unconfirmedCurrencyUnits = unconfirmedCurrencyUnits;
this.currencyUnits = currencyUnits;
}
public AccountCurrencyBalance(String secretPhrase, String currency) {
Account account = Account.getAccount(Crypto.getPublicKey(secretPhrase));
accountId = account.getId();
this.currencyId = Convert.parseUnsignedLong(currency);
this.unconfirmedBalance = account.getUnconfirmedBalanceNQT();
this.balance = account.getBalanceNQT();
this.unconfirmedCurrencyUnits = account.getUnconfirmedCurrencyUnits(currencyId);
this.currencyUnits = account.getCurrencyUnits(currencyId);
}
public long getAccountId() {
return accountId;
}
public long getCurrencyId() {
return currencyId;
}
public long getUnconfirmedBalance() {
return unconfirmedBalance;
}
public long getBalance() {
return balance;
}
public long getUnconfirmedCurrencyUnits() {
return unconfirmedCurrencyUnits;
}
public long getCurrencyUnits() {
return currencyUnits;
}
public AccountCurrencyBalance diff(AccountCurrencyBalance other) {
return new AccountCurrencyBalance(unconfirmedBalance - other.unconfirmedBalance,
balance - other.balance,
unconfirmedCurrencyUnits - other.unconfirmedCurrencyUnits,
currencyUnits - other.currencyUnits);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
AccountCurrencyBalance that = (AccountCurrencyBalance) o;
if (balance != that.balance) return false;
if (currencyUnits != that.currencyUnits) return false;
if (unconfirmedBalance != that.unconfirmedBalance) return false;
//noinspection RedundantIfStatement
if (unconfirmedCurrencyUnits != that.unconfirmedCurrencyUnits) return false;
return true;
}
@Override
public int hashCode() {
int result = (int) (unconfirmedBalance ^ (unconfirmedBalance >>> 32));
result = 31 * result + (int) (balance ^ (balance >>> 32));
result = 31 * result + (int) (unconfirmedCurrencyUnits ^ (unconfirmedCurrencyUnits >>> 32));
result = 31 * result + (int) (currencyUnits ^ (currencyUnits >>> 32));
return result;
}
@Override
public String toString() {
return "AccountCurrencyBalance{" +
"unconfirmedBalance=" + unconfirmedBalance +
", balance=" + balance +
", unconfirmedCurrencyUnits=" + unconfirmedCurrencyUnits +
", currencyUnits=" + currencyUnits +
'}';
}
}