/****************************************************************************** * 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.db.DbIterator; import nxt.util.Convert; import java.util.HashMap; import java.util.Map; @SuppressWarnings("unused") public class Tester { private final String secretPhrase; private final byte[] privateKey; private final byte[] publicKey; private final String publicKeyStr; private final long id; private final String strId; private final String rsAccount; private final long initialBalance; private final long initialUnconfirmedBalance; private final long initialEffectiveBalance; private final Map<Long, Long> initialAssetQuantity = new HashMap<>(); private final Map<Long, Long> initialUnconfirmedAssetQuantity = new HashMap<>(); private final Map<Long, Long> initialCurrencyUnits = new HashMap<>(); private final Map<Long, Long> initialUnconfirmedCurrencyUnits = new HashMap<>(); public Tester(String secretPhrase) { this.secretPhrase = secretPhrase; this.privateKey = Crypto.getPrivateKey(secretPhrase); this.publicKey = Crypto.getPublicKey(secretPhrase); this.publicKeyStr = Convert.toHexString(publicKey); this.id = Account.getId(publicKey); this.strId = Long.toUnsignedString(id); this.rsAccount = Convert.rsAccount(id); Account account = Account.getAccount(publicKey); if (account != null) { this.initialBalance = account.getBalanceNQT(); this.initialUnconfirmedBalance = account.getUnconfirmedBalanceNQT(); this.initialEffectiveBalance = account.getEffectiveBalanceNXT(); DbIterator<Account.AccountAsset> assets = account.getAssets(0, -1); for (Account.AccountAsset accountAsset : assets) { initialAssetQuantity.put(accountAsset.getAssetId(), accountAsset.getQuantityQNT()); initialUnconfirmedAssetQuantity.put(accountAsset.getAssetId(), accountAsset.getUnconfirmedQuantityQNT()); } DbIterator<Account.AccountCurrency> currencies = account.getCurrencies(0, -1); for (Account.AccountCurrency accountCurrency : currencies) { initialCurrencyUnits.put(accountCurrency.getCurrencyId(), accountCurrency.getUnits()); initialUnconfirmedCurrencyUnits.put(accountCurrency.getCurrencyId(), accountCurrency.getUnconfirmedUnits()); } } else { initialBalance = 0; initialUnconfirmedBalance = 0; initialEffectiveBalance = 0; } } public String getSecretPhrase() { return secretPhrase; } public byte[] getPrivateKey() { return privateKey; } public byte[] getPublicKey() { return publicKey; } public String getPublicKeyStr() { return publicKeyStr; } public Account getAccount() { return Account.getAccount(publicKey); } public long getId() { return id; } public String getStrId() { return strId; } public String getRsAccount() { return rsAccount; } public long getBalanceDiff() { return Account.getAccount(id).getBalanceNQT() - initialBalance; } public long getUnconfirmedBalanceDiff() { return Account.getAccount(id).getUnconfirmedBalanceNQT() - initialUnconfirmedBalance; } public long getInitialBalance() { return initialBalance; } public long getBalance() { return getAccount().getBalanceNQT(); } public long getAssetQuantityDiff(long assetId) { return Account.getAccount(id).getAssetBalanceQNT(assetId) - getInitialAssetQuantity(assetId); } public long getUnconfirmedAssetQuantityDiff(long assetId) { return Account.getAccount(id).getUnconfirmedAssetBalanceQNT(assetId) - getInitialAssetQuantity(assetId); } public long getCurrencyUnitsDiff(long currencyId) { return Account.getAccount(id).getCurrencyUnits(currencyId) - getInitialCurrencyUnits(currencyId); } public long getUnconfirmedCurrencyUnitsDiff(long currencyId) { return Account.getAccount(id).getUnconfirmedCurrencyUnits(currencyId) - getInitialUnconfirmedCurrencyUnits(currencyId); } public long getInitialUnconfirmedBalance() { return initialUnconfirmedBalance; } public long getInitialEffectiveBalance() { return initialEffectiveBalance; } public long getInitialAssetQuantity(long assetId) { return Convert.nullToZero(initialAssetQuantity.get(assetId)); } public long getInitialUnconfirmedAssetQuantity(long assetId) { return Convert.nullToZero(initialUnconfirmedAssetQuantity.get(assetId)); } public long getInitialCurrencyUnits(long currencyId) { return Convert.nullToZero(initialCurrencyUnits.get(currencyId)); } public long getCurrencyUnits(long currencyId) { return getAccount().getCurrencyUnits(currencyId); } public long getInitialUnconfirmedCurrencyUnits(long currencyId) { return Convert.nullToZero(initialUnconfirmedCurrencyUnits.get(currencyId)); } }