Make the grapheneapi multi account compatible
This commit is contained in:
parent
3b66b91807
commit
594bd4b816
1 changed files with 280 additions and 278 deletions
|
@ -79,36 +79,36 @@ public abstract class GrapheneApiGenerator {
|
||||||
/**
|
/**
|
||||||
* This is used for manager each listener in the subscription thread
|
* This is used for manager each listener in the subscription thread
|
||||||
*/
|
*/
|
||||||
private static HashMap<Long,SubscriptionListener> currentBitsharesListener = new HashMap<>();
|
private static HashMap<Long, SubscriptionListener> currentBitsharesListener = new HashMap<>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the data of an account searching by it's id
|
* Retrieves the data of an account searching by it's id
|
||||||
*
|
*
|
||||||
* @param accountId The accountId to retrieve
|
* @param accountId The accountId to retrieve
|
||||||
* @param request The Api request object, to answer this petition
|
* @param request The Api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAccountById(String accountId, final ApiRequest request){
|
public static void getAccountById(String accountId, final ApiRequest request) {
|
||||||
WebSocketThread thread = new WebSocketThread(new GetAccounts(accountId,
|
WebSocketThread thread = new WebSocketThread(new GetAccounts(accountId,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
if (response.result.getClass() == ArrayList.class) {
|
if (response.result.getClass() == ArrayList.class) {
|
||||||
List list = (List) response.result;
|
List list = (List) response.result;
|
||||||
if (list.size() > 0) {
|
if (list.size() > 0) {
|
||||||
if (list.get(0).getClass() == AccountProperties.class) {
|
if (list.get(0).getClass() == AccountProperties.class) {
|
||||||
request.getListener().success(list.get(0),request.getId());
|
request.getListener().success(list.get(0), request.getId());
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
request.getListener().fail(request.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,79 +118,55 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param address The address to retrieve
|
* @param address The address to retrieve
|
||||||
* @param request The Api request object, to answer this petition
|
* @param request The Api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAccountByOwnerOrActiveAddress(Address address, final ApiRequest request){
|
public static void getAccountByOwnerOrActiveAddress(Address address, final ApiRequest request) {
|
||||||
WebSocketThread thread = new WebSocketThread(new GetKeyReferences(address, true,
|
WebSocketThread thread = new WebSocketThread(new GetKeyReferences(address, true,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
final List<List<UserAccount>> resp = (List<List<UserAccount>>) response.result;
|
final List<List<UserAccount>> resp = (List<List<UserAccount>>) response.result;
|
||||||
if(resp.size() > 0){
|
if (resp.size() > 0) {
|
||||||
List<UserAccount> accounts = resp.get(0);
|
List<UserAccount> accounts = resp.get(0);
|
||||||
if(accounts.size() > 0){
|
if (accounts.size() > 0) {
|
||||||
for(UserAccount account : accounts) {
|
for (UserAccount account : accounts) {
|
||||||
request.getListener().success(account,request.getId());}}}
|
request.getListener().success(account, request.getId());
|
||||||
request.getListener().fail(request.getId());
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
request.getListener().fail(request.getId());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
|
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the Transaction for an Account
|
* Gets the Transaction for an Account
|
||||||
*
|
*
|
||||||
* @param accountGrapheneId The account id to search
|
* @param accountGrapheneId The account id to search
|
||||||
* @param start The start index of the transaction list
|
* @param start The start index of the transaction list
|
||||||
* @param stop The stop index of the transaction list
|
* @param stop The stop index of the transaction list
|
||||||
* @param limit the maximun transactions to retrieve
|
* @param limit the maximun transactions to retrieve
|
||||||
* @param request The Api request object, to answer this petition
|
* @param request The Api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAccountTransaction(String accountGrapheneId, int start, int stop,
|
public static void getAccountTransaction(String accountGrapheneId, int start, int stop,
|
||||||
int limit, final ApiRequest request){
|
int limit, final ApiRequest request) {
|
||||||
WebSocketThread thread = new WebSocketThread(new GetRelativeAccountHistory(new UserAccount(accountGrapheneId),
|
WebSocketThread thread = new WebSocketThread(new GetRelativeAccountHistory(new UserAccount(accountGrapheneId),
|
||||||
start, limit, stop, new WitnessResponseListener() {
|
start, limit, stop, new WitnessResponseListener() {
|
||||||
@Override
|
|
||||||
public void onSuccess(WitnessResponse response) {
|
|
||||||
request.getListener().success(response.result,request.getId());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onError(BaseResponse.Error error) {
|
|
||||||
request.getListener().fail(request.getId());
|
|
||||||
}
|
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
|
||||||
thread.start();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the account id by the name of the account
|
|
||||||
*
|
|
||||||
* @param accountName The account Name to find
|
|
||||||
* @param request The Api request object, to answer this petition
|
|
||||||
*/
|
|
||||||
public static void getAccountByName(String accountName, final ApiRequest request){
|
|
||||||
WebSocketThread thread = new WebSocketThread(new GetAccountByName(accountName,
|
|
||||||
new WitnessResponseListener() {
|
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
AccountProperties accountProperties = (AccountProperties)response.result;
|
request.getListener().success(response.result, request.getId());
|
||||||
if(accountProperties == null){
|
|
||||||
request.getListener().fail(request.getId());
|
|
||||||
}else{
|
|
||||||
request.getListener().success(accountProperties,request.getId());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,26 +174,53 @@ public abstract class GrapheneApiGenerator {
|
||||||
* Retrieves the account id by the name of the account
|
* Retrieves the account id by the name of the account
|
||||||
*
|
*
|
||||||
* @param accountName The account Name to find
|
* @param accountName The account Name to find
|
||||||
* @param request The Api request object, to answer this petition
|
* @param request The Api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAccountIdByName(String accountName, final ApiRequest request){
|
public static void getAccountByName(String accountName, final ApiRequest request) {
|
||||||
WebSocketThread thread = new WebSocketThread(new GetAccountByName(accountName,
|
WebSocketThread thread = new WebSocketThread(new GetAccountByName(accountName,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
AccountProperties accountProperties = (AccountProperties)response.result;
|
AccountProperties accountProperties = (AccountProperties) response.result;
|
||||||
if(accountProperties == null){
|
if (accountProperties == null) {
|
||||||
request.getListener().success(null,request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}else{
|
} else {
|
||||||
request.getListener().success(accountProperties.id,request.getId());
|
request.getListener().success(accountProperties, request.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
|
thread.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves the account id by the name of the account
|
||||||
|
*
|
||||||
|
* @param accountName The account Name to find
|
||||||
|
* @param request The Api request object, to answer this petition
|
||||||
|
*/
|
||||||
|
public static void getAccountIdByName(String accountName, final ApiRequest request) {
|
||||||
|
WebSocketThread thread = new WebSocketThread(new GetAccountByName(accountName,
|
||||||
|
new WitnessResponseListener() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(WitnessResponse response) {
|
||||||
|
AccountProperties accountProperties = (AccountProperties) response.result;
|
||||||
|
if (accountProperties == null) {
|
||||||
|
request.getListener().success(null, request.getId());
|
||||||
|
} else {
|
||||||
|
request.getListener().success(accountProperties.id, request.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(BaseResponse.Error error) {
|
||||||
|
request.getListener().fail(request.getId());
|
||||||
|
}
|
||||||
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,23 +228,23 @@ public abstract class GrapheneApiGenerator {
|
||||||
* Broadcast a transaction, this is use for sending funds
|
* Broadcast a transaction, this is use for sending funds
|
||||||
*
|
*
|
||||||
* @param transaction The graphene transaction
|
* @param transaction The graphene transaction
|
||||||
* @param feeAsset The feeAseet, this needs only the id of the asset
|
* @param feeAsset The feeAseet, this needs only the id of the asset
|
||||||
* @param request the api request object, to answer this petition
|
* @param request the api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void broadcastTransaction(Transaction transaction, Asset feeAsset,
|
public static void broadcastTransaction(Transaction transaction, Asset feeAsset,
|
||||||
final ApiRequest request){
|
final ApiRequest request) {
|
||||||
WebSocketThread thread = new WebSocketThread(new TransactionBroadcastSequence(transaction,
|
WebSocketThread thread = new WebSocketThread(new TransactionBroadcastSequence(transaction,
|
||||||
feeAsset, new WitnessResponseListener() {
|
feeAsset, new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
request.getListener().success(true,request.getId());
|
request.getListener().success(true, request.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,22 +252,22 @@ public abstract class GrapheneApiGenerator {
|
||||||
* This gets the asset information using only the asset name
|
* This gets the asset information using only the asset name
|
||||||
*
|
*
|
||||||
* @param assetNames The list of the names of the assets to be retrieve
|
* @param assetNames The list of the names of the assets to be retrieve
|
||||||
* @param request the api request object, to answer this petition
|
* @param request the api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAssetByName(ArrayList<String> assetNames, final ApiRequest request){
|
public static void getAssetByName(ArrayList<String> assetNames, final ApiRequest request) {
|
||||||
|
|
||||||
WebSocketThread thread = new WebSocketThread(new LookupAssetSymbols(assetNames,true,
|
WebSocketThread thread = new WebSocketThread(new LookupAssetSymbols(assetNames, true,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
List<Asset> assets = (List<Asset>) response.result;
|
List<Asset> assets = (List<Asset>) response.result;
|
||||||
if(assets.size() <= 0){
|
if (assets.size() <= 0) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}else{
|
} else {
|
||||||
ArrayList<BitsharesAsset> responseAssets = new ArrayList<>();
|
ArrayList<BitsharesAsset> responseAssets = new ArrayList<>();
|
||||||
for(Asset asset: assets){
|
for (Asset asset : assets) {
|
||||||
//TODO asset type
|
//TODO asset type
|
||||||
BitsharesAsset.Type assetType = BitsharesAsset.Type.UIA;
|
BitsharesAsset.Type assetType = BitsharesAsset.Type.UIA;
|
||||||
/*if(asset.getAssetType().equals(Asset.AssetType.CORE_ASSET)){
|
/*if(asset.getAssetType().equals(Asset.AssetType.CORE_ASSET)){
|
||||||
assetType = BitsharesAsset.Type.CORE;
|
assetType = BitsharesAsset.Type.CORE;
|
||||||
}else if(asset.getAssetType().equals(Asset.AssetType.SMART_COIN)){
|
}else if(asset.getAssetType().equals(Asset.AssetType.SMART_COIN)){
|
||||||
|
@ -274,43 +277,44 @@ public abstract class GrapheneApiGenerator {
|
||||||
}else if(asset.getAssetType().equals(Asset.AssetType.PREDICTION_MARKET)){
|
}else if(asset.getAssetType().equals(Asset.AssetType.PREDICTION_MARKET)){
|
||||||
assetType = BitsharesAsset.Type.PREDICTION_MARKET;
|
assetType = BitsharesAsset.Type.PREDICTION_MARKET;
|
||||||
}*/
|
}*/
|
||||||
BitsharesAsset responseAsset = new BitsharesAsset(asset.getSymbol(),
|
BitsharesAsset responseAsset = new BitsharesAsset(asset.getSymbol(),
|
||||||
asset.getPrecision(),asset.getObjectId(),assetType);
|
asset.getPrecision(), asset.getObjectId(), assetType);
|
||||||
responseAssets.add(responseAsset);
|
responseAssets.add(responseAsset);
|
||||||
|
}
|
||||||
|
request.getListener().success(responseAssets, request.getId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
request.getListener().success(responseAssets,request.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the asset ifnormation using the id of the net
|
* Gets the asset ifnormation using the id of the net
|
||||||
|
*
|
||||||
* @param assetIds The list of the ids to retrieve
|
* @param assetIds The list of the ids to retrieve
|
||||||
* @param request the api request object, to answer this petition
|
* @param request the api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAssetById(ArrayList<String> assetIds, final ApiRequest request){
|
public static void getAssetById(ArrayList<String> assetIds, final ApiRequest request) {
|
||||||
ArrayList<Asset> assets = new ArrayList<>();
|
ArrayList<Asset> assets = new ArrayList<>();
|
||||||
for(String assetId : assetIds){
|
for (String assetId : assetIds) {
|
||||||
Asset asset = new Asset(assetId);
|
Asset asset = new Asset(assetId);
|
||||||
assets.add(asset);
|
assets.add(asset);
|
||||||
}
|
}
|
||||||
|
|
||||||
WebSocketThread thread = new WebSocketThread(new LookupAssetSymbols(assets,true, new WitnessResponseListener() {
|
WebSocketThread thread = new WebSocketThread(new LookupAssetSymbols(assets, true, new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
List<Asset> assets = (List<Asset>) response.result;
|
List<Asset> assets = (List<Asset>) response.result;
|
||||||
if(assets.size() <= 0){
|
if (assets.size() <= 0) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}else{
|
} else {
|
||||||
ArrayList<BitsharesAsset> responseAssets = new ArrayList<>();
|
ArrayList<BitsharesAsset> responseAssets = new ArrayList<>();
|
||||||
for(Asset asset: assets){
|
for (Asset asset : assets) {
|
||||||
//TODO asset type
|
//TODO asset type
|
||||||
BitsharesAsset.Type assetType = BitsharesAsset.Type.UIA;
|
BitsharesAsset.Type assetType = BitsharesAsset.Type.UIA;
|
||||||
/*if(asset.getAssetType().equals(Asset.AssetType.CORE_ASSET)){
|
/*if(asset.getAssetType().equals(Asset.AssetType.CORE_ASSET)){
|
||||||
|
@ -323,10 +327,10 @@ public abstract class GrapheneApiGenerator {
|
||||||
assetType = BitsharesAsset.Type.PREDICTION_MARKET;
|
assetType = BitsharesAsset.Type.PREDICTION_MARKET;
|
||||||
}*/
|
}*/
|
||||||
BitsharesAsset responseAsset = new BitsharesAsset(asset.getSymbol(),
|
BitsharesAsset responseAsset = new BitsharesAsset(asset.getSymbol(),
|
||||||
asset.getPrecision(),asset.getObjectId(),assetType);
|
asset.getPrecision(), asset.getObjectId(), assetType);
|
||||||
responseAssets.add(responseAsset);
|
responseAssets.add(responseAsset);
|
||||||
}
|
}
|
||||||
request.getListener().success(responseAssets,request.getId());
|
request.getListener().success(responseAssets, request.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -334,140 +338,138 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subscribe a bitshares account to receive real time updates
|
* Subscribe a bitshares account to receive real time updates
|
||||||
*
|
*
|
||||||
* @param accountId The id opf the database of the account
|
* @param accountId The id opf the database of the account
|
||||||
* @param accountBitsharesId The bitshares id of the account
|
* @param accountBitsharesId The bitshares id of the account
|
||||||
* @param context The android context of this application
|
* @param context The android context of this application
|
||||||
*/
|
*/
|
||||||
public static void subscribeBitsharesAccount(final long accountId, final String accountBitsharesId,
|
public static void subscribeBitsharesAccount(final long accountId, final String accountBitsharesId,
|
||||||
final Context context){
|
final Context context) {
|
||||||
if(!currentBitsharesListener.containsKey(accountId)){
|
if (!currentBitsharesListener.containsKey(accountId)) {
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
||||||
final BitsharesAssetDao bitsharesAssetDao = db.bitsharesAssetDao();
|
final BitsharesAssetDao bitsharesAssetDao = db.bitsharesAssetDao();
|
||||||
final CryptoCurrencyDao cryptoCurrencyDao = db.cryptoCurrencyDao();
|
final CryptoCurrencyDao cryptoCurrencyDao = db.cryptoCurrencyDao();
|
||||||
SubscriptionListener balanceListener = new SubscriptionListener() {
|
SubscriptionListener balanceListener = new SubscriptionListener() {
|
||||||
@Override
|
@Override
|
||||||
public ObjectType getInterestObjectType() {
|
public ObjectType getInterestObjectType() {
|
||||||
return ObjectType.TRANSACTION_OBJECT;
|
return ObjectType.TRANSACTION_OBJECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSubscriptionUpdate(SubscriptionResponse response) {
|
public void onSubscriptionUpdate(SubscriptionResponse response) {
|
||||||
List<Serializable> updatedObjects = (List<Serializable>) response.params.get(1);
|
List<Serializable> updatedObjects = (List<Serializable>) response.params.get(1);
|
||||||
if(updatedObjects.size() > 0){
|
if (updatedObjects.size() > 0) {
|
||||||
for(Serializable update : updatedObjects){
|
for (Serializable update : updatedObjects) {
|
||||||
if(update instanceof BroadcastedTransaction){
|
if (update instanceof BroadcastedTransaction) {
|
||||||
BroadcastedTransaction transactionUpdate = (BroadcastedTransaction) update;
|
BroadcastedTransaction transactionUpdate = (BroadcastedTransaction) update;
|
||||||
for(BaseOperation operation : transactionUpdate.getTransaction().getOperations()){
|
for (BaseOperation operation : transactionUpdate.getTransaction().getOperations()) {
|
||||||
if(operation instanceof TransferOperation){
|
if (operation instanceof TransferOperation) {
|
||||||
final TransferOperation tOperation = (TransferOperation) operation;
|
final TransferOperation tOperation = (TransferOperation) operation;
|
||||||
if(tOperation.getFrom().getObjectId().equals(accountBitsharesId) || tOperation.getTo().getObjectId().equals(accountBitsharesId)){
|
if (tOperation.getFrom().getObjectId().equals(accountBitsharesId) || tOperation.getTo().getObjectId().equals(accountBitsharesId)) {
|
||||||
GrapheneApiGenerator.getAccountBalance(accountId,accountBitsharesId,context);
|
GrapheneApiGenerator.getAccountBalance(accountId, accountBitsharesId, context);
|
||||||
final CryptoCoinTransaction transaction = new CryptoCoinTransaction();
|
final CryptoCoinTransaction transaction = new CryptoCoinTransaction();
|
||||||
transaction.setAccountId(accountId);
|
transaction.setAccountId(accountId);
|
||||||
transaction.setAmount(tOperation.getAssetAmount().getAmount().longValue());
|
transaction.setAmount(tOperation.getAssetAmount().getAmount().longValue());
|
||||||
BitsharesAssetInfo info = bitsharesAssetDao.getBitsharesAssetInfoById(tOperation.getAssetAmount().getAsset().getObjectId());
|
BitsharesAssetInfo info = bitsharesAssetDao.getBitsharesAssetInfoById(tOperation.getAssetAmount().getAsset().getObjectId());
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
//The cryptoCurrency is not in the database, queringfor its data
|
//The cryptoCurrency is not in the database, queringfor its data
|
||||||
ApiRequest assetRequest = new ApiRequest(0, new ApiRequestListener() {
|
ApiRequest assetRequest = new ApiRequest(0, new ApiRequestListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success(Object answer, int idPetition) {
|
public void success(Object answer, int idPetition) {
|
||||||
ArrayList<BitsharesAsset> assets = (ArrayList<BitsharesAsset>) answer;
|
ArrayList<BitsharesAsset> assets = (ArrayList<BitsharesAsset>) answer;
|
||||||
for(BitsharesAsset asset : assets){
|
for (BitsharesAsset asset : assets) {
|
||||||
long idCryptoCurrency = cryptoCurrencyDao.insertCryptoCurrency(asset)[0];
|
long idCryptoCurrency = cryptoCurrencyDao.insertCryptoCurrency(asset)[0];
|
||||||
BitsharesAssetInfo info = new BitsharesAssetInfo(asset);
|
BitsharesAssetInfo info = new BitsharesAssetInfo(asset);
|
||||||
info.setCryptoCurrencyId(idCryptoCurrency);
|
info.setCryptoCurrencyId(idCryptoCurrency);
|
||||||
asset.setId((int)idCryptoCurrency);
|
asset.setId((int) idCryptoCurrency);
|
||||||
bitsharesAssetDao.insertBitsharesAssetInfo(info);
|
bitsharesAssetDao.insertBitsharesAssetInfo(info);
|
||||||
saveTransaction(transaction,cryptoCurrencyDao.getById(info.getCryptoCurrencyId()),accountBitsharesId,tOperation,context);
|
saveTransaction(transaction, cryptoCurrencyDao.getById(info.getCryptoCurrencyId()), accountBitsharesId, tOperation, context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fail(int idPetition) {
|
public void fail(int idPetition) {
|
||||||
//TODO error retrieving asset
|
//TODO error retrieving asset
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ArrayList<String> assets = new ArrayList<>();
|
ArrayList<String> assets = new ArrayList<>();
|
||||||
assets.add(tOperation.getAssetAmount().getAsset().getObjectId());
|
assets.add(tOperation.getAssetAmount().getAsset().getObjectId());
|
||||||
GrapheneApiGenerator.getAssetById(assets,assetRequest);
|
GrapheneApiGenerator.getAssetById(assets, assetRequest);
|
||||||
}else{
|
} else {
|
||||||
saveTransaction(transaction,cryptoCurrencyDao.getById(info.getCryptoCurrencyId()),accountBitsharesId,tOperation,context);
|
saveTransaction(transaction, cryptoCurrencyDao.getById(info.getCryptoCurrencyId()), accountBitsharesId, tOperation, context);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
};
|
|
||||||
|
|
||||||
currentBitsharesListener.put(accountId,balanceListener);
|
currentBitsharesListener.put(accountId, balanceListener);
|
||||||
bitsharesSubscriptionHub.addSubscriptionListener(balanceListener);
|
bitsharesSubscriptionHub.addSubscriptionListener(balanceListener);
|
||||||
|
|
||||||
if(!subscriptionThread.isConnected() && !subscriptionThread.isAlive()){
|
|
||||||
try {
|
try {
|
||||||
subscriptionThread.start();
|
if (!subscriptionThread.isConnected() && !subscriptionThread.isAlive()) {
|
||||||
}catch(Exception e){
|
|
||||||
|
subscriptionThread.start();
|
||||||
|
|
||||||
|
} else if (bitsharesSubscriptionHub != null && !bitsharesSubscriptionHub.isSubscribed()) {
|
||||||
|
bitsharesSubscriptionHub.resubscribe();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}else if(bitsharesSubscriptionHub!= null && !bitsharesSubscriptionHub.isSubscribed()){
|
|
||||||
try {
|
|
||||||
bitsharesSubscriptionHub.resubscribe();
|
|
||||||
}catch(Exception e){
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function to save a transaction retrieved from the update
|
* Function to save a transaction retrieved from the update
|
||||||
* @param transaction The transaction db object
|
*
|
||||||
* @param currency The currency of the transaccion
|
* @param transaction The transaction db object
|
||||||
|
* @param currency The currency of the transaccion
|
||||||
* @param accountBitsharesId The id of the account in the bitshares network
|
* @param accountBitsharesId The id of the account in the bitshares network
|
||||||
* @param tOperation The transfer operation fetched from the update
|
* @param tOperation The transfer operation fetched from the update
|
||||||
* @param context The context of this app
|
* @param context The context of this app
|
||||||
*/
|
*/
|
||||||
private static void saveTransaction(CryptoCoinTransaction transaction, CryptoCurrency currency,
|
private static void saveTransaction(CryptoCoinTransaction transaction, CryptoCurrency currency,
|
||||||
String accountBitsharesId, TransferOperation tOperation ,
|
String accountBitsharesId, TransferOperation tOperation,
|
||||||
Context context){
|
Context context) {
|
||||||
transaction.setIdCurrency((int)currency.getId());
|
transaction.setIdCurrency((int) currency.getId());
|
||||||
transaction.setConfirmed(true); //graphene transaction are always confirmed
|
transaction.setConfirmed(true); //graphene transaction are always confirmed
|
||||||
transaction.setFrom(tOperation.getFrom().getObjectId());
|
transaction.setFrom(tOperation.getFrom().getObjectId());
|
||||||
transaction.setInput(!tOperation.getFrom().getObjectId().equals(accountBitsharesId));
|
transaction.setInput(!tOperation.getFrom().getObjectId().equals(accountBitsharesId));
|
||||||
transaction.setTo(tOperation.getTo().getObjectId());
|
transaction.setTo(tOperation.getTo().getObjectId());
|
||||||
transaction.setDate(new Date());
|
transaction.setDate(new Date());
|
||||||
CrystalDatabase.getAppDatabase(context).transactionDao().insertTransaction(transaction);
|
CrystalDatabase.getAppDatabase(context).transactionDao().insertTransaction(transaction);
|
||||||
if(transaction.getInput()){
|
if (transaction.getInput()) {
|
||||||
CryptoNetEvents.getInstance().fireEvent(new ReceivedFundsCryptoNetEvent(transaction.getAccount(),currency,transaction.getAmount()));
|
CryptoNetEvents.getInstance().fireEvent(new ReceivedFundsCryptoNetEvent(transaction.getAccount(), currency, transaction.getAmount()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancels all bitshares account subscriptions
|
* Cancels all bitshares account subscriptions
|
||||||
*/
|
*/
|
||||||
public static void cancelBitsharesAccountSubscriptions(){
|
public static void cancelBitsharesAccountSubscriptions() {
|
||||||
bitsharesSubscriptionHub.cancelSubscriptions();
|
bitsharesSubscriptionHub.cancelSubscriptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve the account balance of an account
|
* Retrieve the account balance of an account
|
||||||
*
|
*
|
||||||
* @param accountId The dataabase id of the account
|
* @param accountId The dataabase id of the account
|
||||||
* @param accountGrapheneId The bitshares id of the account
|
* @param accountGrapheneId The bitshares id of the account
|
||||||
* @param context The android context of this application
|
* @param context The android context of this application
|
||||||
*/
|
*/
|
||||||
public static void getAccountBalance(final long accountId, final String accountGrapheneId,
|
public static void getAccountBalance(final long accountId, final String accountGrapheneId,
|
||||||
final Context context){
|
final Context context) {
|
||||||
|
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
||||||
final CryptoCoinBalanceDao balanceDao = db.cryptoCoinBalanceDao();
|
final CryptoCoinBalanceDao balanceDao = db.cryptoCoinBalanceDao();
|
||||||
|
@ -478,35 +480,35 @@ public abstract class GrapheneApiGenerator {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
List<AssetAmount> balances = (List<AssetAmount>) response.result;
|
List<AssetAmount> balances = (List<AssetAmount>) response.result;
|
||||||
for(final AssetAmount balance : balances){
|
for (final AssetAmount balance : balances) {
|
||||||
final CryptoCoinBalance ccBalance = new CryptoCoinBalance();
|
final CryptoCoinBalance ccBalance = new CryptoCoinBalance();
|
||||||
ccBalance.setAccountId(accountId);
|
ccBalance.setAccountId(accountId);
|
||||||
ccBalance.setBalance(balance.getAmount().longValue());
|
ccBalance.setBalance(balance.getAmount().longValue());
|
||||||
BitsharesAssetInfo assetInfo = bitsharesAssetDao.getBitsharesAssetInfoById(balance.getAsset().getObjectId());
|
BitsharesAssetInfo assetInfo = bitsharesAssetDao.getBitsharesAssetInfoById(balance.getAsset().getObjectId());
|
||||||
if(assetInfo == null ){
|
if (assetInfo == null) {
|
||||||
ArrayList<String> idAssets = new ArrayList<>();
|
ArrayList<String> idAssets = new ArrayList<>();
|
||||||
idAssets.add(balance.getAsset().getObjectId());
|
idAssets.add(balance.getAsset().getObjectId());
|
||||||
ApiRequest getAssetRequest = new ApiRequest(1, new ApiRequestListener() {
|
ApiRequest getAssetRequest = new ApiRequest(1, new ApiRequestListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success(Object answer, int idPetition) {
|
public void success(Object answer, int idPetition) {
|
||||||
List<BitsharesAsset> assets = (List<BitsharesAsset>) answer;
|
List<BitsharesAsset> assets = (List<BitsharesAsset>) answer;
|
||||||
for(BitsharesAsset asset : assets) {
|
for (BitsharesAsset asset : assets) {
|
||||||
BitsharesAssetInfo info = new BitsharesAssetInfo(asset);
|
BitsharesAssetInfo info = new BitsharesAssetInfo(asset);
|
||||||
long[] cryptoCurrencyId = cryptoCurrencyDao.insertCryptoCurrency((CryptoCurrency) asset);
|
long[] cryptoCurrencyId = cryptoCurrencyDao.insertCryptoCurrency((CryptoCurrency) asset);
|
||||||
info.setCryptoCurrencyId(cryptoCurrencyId[0]);
|
info.setCryptoCurrencyId(cryptoCurrencyId[0]);
|
||||||
bitsharesAssetDao.insertBitsharesAssetInfo(info);
|
bitsharesAssetDao.insertBitsharesAssetInfo(info);
|
||||||
ccBalance.setCryptoCurrencyId(cryptoCurrencyId[0]);
|
ccBalance.setCryptoCurrencyId(cryptoCurrencyId[0]);
|
||||||
balanceDao.insertCryptoCoinBalance(ccBalance);
|
balanceDao.insertCryptoCoinBalance(ccBalance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fail(int idPetition) {
|
public void fail(int idPetition) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
getAssetById(idAssets,getAssetRequest);
|
getAssetById(idAssets, getAssetRequest);
|
||||||
|
|
||||||
}else {
|
} else {
|
||||||
|
|
||||||
ccBalance.setCryptoCurrencyId(assetInfo.getCryptoCurrencyId());
|
ccBalance.setCryptoCurrencyId(assetInfo.getCryptoCurrencyId());
|
||||||
balanceDao.insertCryptoCoinBalance(ccBalance);
|
balanceDao.insertCryptoCoinBalance(ccBalance);
|
||||||
|
@ -518,7 +520,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
|
|
||||||
thread.start();
|
thread.start();
|
||||||
|
|
||||||
|
@ -528,15 +530,15 @@ public abstract class GrapheneApiGenerator {
|
||||||
* Gets the date time of a block header
|
* Gets the date time of a block header
|
||||||
*
|
*
|
||||||
* @param blockHeader The block header to retrieve the date time
|
* @param blockHeader The block header to retrieve the date time
|
||||||
* @param request the api request object, to answer this petition
|
* @param request the api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getBlockHeaderTime(long blockHeader, final ApiRequest request){
|
public static void getBlockHeaderTime(long blockHeader, final ApiRequest request) {
|
||||||
WebSocketThread thread = new WebSocketThread(new GetBlockHeader(blockHeader, new WitnessResponseListener() {
|
WebSocketThread thread = new WebSocketThread(new GetBlockHeader(blockHeader, new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
if(response == null){
|
if (response == null) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}else {
|
} else {
|
||||||
request.getListener().success(response.result, request.getId());
|
request.getListener().success(response.result, request.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -545,7 +547,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}), CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
||||||
thread.start();
|
thread.start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -553,78 +555,78 @@ public abstract class GrapheneApiGenerator {
|
||||||
/**
|
/**
|
||||||
* Gets a single equivalent value
|
* Gets a single equivalent value
|
||||||
*
|
*
|
||||||
* @param baseId The base asset bistshares id
|
* @param baseId The base asset bistshares id
|
||||||
* @param quoteId the quote asset bitshares id
|
* @param quoteId the quote asset bitshares id
|
||||||
* @param request the api request object, to answer this petition
|
* @param request the api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getEquivalentValue(final String baseId, String quoteId, final ApiRequest request){
|
public static void getEquivalentValue(final String baseId, String quoteId, final ApiRequest request) {
|
||||||
WebSocketThread thread = new WebSocketThread(new GetLimitOrders(baseId, quoteId, 10,
|
WebSocketThread thread = new WebSocketThread(new GetLimitOrders(baseId, quoteId, 10,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
List<LimitOrder> orders = (List<LimitOrder>) response.result;
|
List<LimitOrder> orders = (List<LimitOrder>) response.result;
|
||||||
if(orders.size()<= 0){
|
if (orders.size() <= 0) {
|
||||||
//TODO indirect equivalent value
|
//TODO indirect equivalent value
|
||||||
}
|
}
|
||||||
for(LimitOrder order : orders){
|
for (LimitOrder order : orders) {
|
||||||
if(order.getSellPrice().base.getAsset().getBitassetId().equals(baseId)) {
|
if (order.getSellPrice().base.getAsset().getBitassetId().equals(baseId)) {
|
||||||
Converter converter = new Converter();
|
Converter converter = new Converter();
|
||||||
double equiValue = converter.getConversionRate(order.getSellPrice(),
|
double equiValue = converter.getConversionRate(order.getSellPrice(),
|
||||||
Converter.BASE_TO_QUOTE);
|
Converter.BASE_TO_QUOTE);
|
||||||
request.getListener().success(equiValue, request.getId());
|
request.getListener().success(equiValue, request.getId());
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}), BitsharesConstant.EQUIVALENT_URL); //todo change equivalent url for current server url
|
}), BitsharesConstant.EQUIVALENT_URL); //todo change equivalent url for current server url
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets equivalent value and store it on the database
|
* Gets equivalent value and store it on the database
|
||||||
*
|
*
|
||||||
* @param baseAsset The baset asset as a bitshares asset, it needs the CryptoCurrency and thge BitsharesInfo
|
* @param baseAsset The baset asset as a bitshares asset, it needs the CryptoCurrency and thge BitsharesInfo
|
||||||
* @param quoteAssets The list of the qutoe assets as a full bitshares asset object
|
* @param quoteAssets The list of the qutoe assets as a full bitshares asset object
|
||||||
* @param context The android context of this application
|
* @param context The android context of this application
|
||||||
*/
|
*/
|
||||||
public static void getEquivalentValue(BitsharesAsset baseAsset,
|
public static void getEquivalentValue(BitsharesAsset baseAsset,
|
||||||
final List<BitsharesAsset> quoteAssets, final Context context){
|
final List<BitsharesAsset> quoteAssets, final Context context) {
|
||||||
for(BitsharesAsset quoteAsset : quoteAssets){
|
for (BitsharesAsset quoteAsset : quoteAssets) {
|
||||||
WebSocketThread thread = new WebSocketThread(new GetLimitOrders(baseAsset.getBitsharesId(),
|
WebSocketThread thread = new WebSocketThread(new GetLimitOrders(baseAsset.getBitsharesId(),
|
||||||
quoteAsset.getBitsharesId(), 10, new EquivalentValueListener(baseAsset,
|
quoteAsset.getBitsharesId(), 10, new EquivalentValueListener(baseAsset,
|
||||||
quoteAsset,context)), BitsharesConstant.EQUIVALENT_URL); //todo change equivalent url for current server url
|
quoteAsset, context)), BitsharesConstant.EQUIVALENT_URL); //todo change equivalent url for current server url
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the equivalent value from a list of assets to a base asset
|
* Retrieves the equivalent value from a list of assets to a base asset
|
||||||
*
|
*
|
||||||
* @param baseAssetName The base asset to use
|
* @param baseAssetName The base asset to use
|
||||||
* @param quoteAssets The list of quotes assets to query
|
* @param quoteAssets The list of quotes assets to query
|
||||||
* @param context The Context of this Application
|
* @param context The Context of this Application
|
||||||
*/
|
*/
|
||||||
public static void getEquivalentValue(String baseAssetName, final List<BitsharesAsset> quoteAssets, final Context context){
|
public static void getEquivalentValue(String baseAssetName, final List<BitsharesAsset> quoteAssets, final Context context) {
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
||||||
final CryptoCurrencyDao cryptoCurrencyDao = db.cryptoCurrencyDao();
|
final CryptoCurrencyDao cryptoCurrencyDao = db.cryptoCurrencyDao();
|
||||||
final BitsharesAssetDao bitsharesAssetDao = db.bitsharesAssetDao();
|
final BitsharesAssetDao bitsharesAssetDao = db.bitsharesAssetDao();
|
||||||
CryptoCurrency baseCurrency = cryptoCurrencyDao.getByName(baseAssetName);
|
CryptoCurrency baseCurrency = cryptoCurrencyDao.getByName(baseAssetName);
|
||||||
BitsharesAssetInfo info = null;
|
BitsharesAssetInfo info = null;
|
||||||
if(baseCurrency != null){
|
if (baseCurrency != null) {
|
||||||
info = db.bitsharesAssetDao().getBitsharesAssetInfo(baseCurrency.getId());
|
info = db.bitsharesAssetDao().getBitsharesAssetInfo(baseCurrency.getId());
|
||||||
}
|
}
|
||||||
if(baseCurrency == null || info == null){
|
if (baseCurrency == null || info == null) {
|
||||||
ApiRequest getAssetRequest = new ApiRequest(1, new ApiRequestListener() {
|
ApiRequest getAssetRequest = new ApiRequest(1, new ApiRequestListener() {
|
||||||
@Override
|
@Override
|
||||||
public void success(Object answer, int idPetition) {
|
public void success(Object answer, int idPetition) {
|
||||||
if(answer instanceof BitsharesAsset){
|
if (answer instanceof BitsharesAsset) {
|
||||||
BitsharesAssetInfo info = new BitsharesAssetInfo((BitsharesAsset) answer);
|
BitsharesAssetInfo info = new BitsharesAssetInfo((BitsharesAsset) answer);
|
||||||
long cryptoCurrencyId = cryptoCurrencyDao.insertCryptoCurrency((CryptoCurrency)answer )[0];
|
long cryptoCurrencyId = cryptoCurrencyDao.insertCryptoCurrency((CryptoCurrency) answer)[0];
|
||||||
info.setCryptoCurrencyId(cryptoCurrencyId);
|
info.setCryptoCurrencyId(cryptoCurrencyId);
|
||||||
bitsharesAssetDao.insertBitsharesAssetInfo(info);
|
bitsharesAssetDao.insertBitsharesAssetInfo(info);
|
||||||
GrapheneApiGenerator.getEquivalentValue((BitsharesAsset) answer, quoteAssets, context);
|
GrapheneApiGenerator.getEquivalentValue((BitsharesAsset) answer, quoteAssets, context);
|
||||||
|
@ -633,17 +635,17 @@ public abstract class GrapheneApiGenerator {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fail(int idPetition) {
|
public void fail(int idPetition) {
|
||||||
//TODO fail asset petition, the base asset is not an asset in bitshares, or there is no connection to the server
|
//TODO fail asset petition, the base asset is not an asset in bitshares, or there is no connection to the server
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ArrayList<String> names = new ArrayList<>();
|
ArrayList<String> names = new ArrayList<>();
|
||||||
names.add(baseAssetName);
|
names.add(baseAssetName);
|
||||||
GrapheneApiGenerator.getAssetByName(names,getAssetRequest);
|
GrapheneApiGenerator.getAssetByName(names, getAssetRequest);
|
||||||
|
|
||||||
}else {
|
} else {
|
||||||
BitsharesAsset baseAsset = new BitsharesAsset(baseCurrency);
|
BitsharesAsset baseAsset = new BitsharesAsset(baseCurrency);
|
||||||
baseAsset.loadInfo(info);
|
baseAsset.loadInfo(info);
|
||||||
getEquivalentValue(baseAsset,quoteAssets,context);
|
getEquivalentValue(baseAsset, quoteAssets, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -652,7 +654,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
/**
|
/**
|
||||||
* Listener of the equivalent value the answer is stored in the database, for use in conjuntion with LiveData
|
* Listener of the equivalent value the answer is stored in the database, for use in conjuntion with LiveData
|
||||||
*/
|
*/
|
||||||
private static class EquivalentValueListener implements WitnessResponseListener{
|
private static class EquivalentValueListener implements WitnessResponseListener {
|
||||||
/**
|
/**
|
||||||
* The base asset
|
* The base asset
|
||||||
*/
|
*/
|
||||||
|
@ -675,21 +677,21 @@ public abstract class GrapheneApiGenerator {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
List<LimitOrder> orders = (List<LimitOrder>) response.result;
|
List<LimitOrder> orders = (List<LimitOrder>) response.result;
|
||||||
if(orders.size()<= 0){
|
if (orders.size() <= 0) {
|
||||||
//TODO indirect equivalent value
|
//TODO indirect equivalent value
|
||||||
}
|
}
|
||||||
for(LimitOrder order : orders){
|
for (LimitOrder order : orders) {
|
||||||
try {
|
try {
|
||||||
//if (order.getSellPrice().base.getAsset().getBitassetId().equals(baseAsset.getBitsharesId())) {
|
//if (order.getSellPrice().base.getAsset().getBitassetId().equals(baseAsset.getBitsharesId())) {
|
||||||
Converter converter = new Converter();
|
Converter converter = new Converter();
|
||||||
order.getSellPrice().base.getAsset().setPrecision(baseAsset.getPrecision());
|
order.getSellPrice().base.getAsset().setPrecision(baseAsset.getPrecision());
|
||||||
order.getSellPrice().quote.getAsset().setPrecision(quoteAsset.getPrecision());
|
order.getSellPrice().quote.getAsset().setPrecision(quoteAsset.getPrecision());
|
||||||
double equiValue = converter.getConversionRate(order.getSellPrice(), Converter.BASE_TO_QUOTE);
|
double equiValue = converter.getConversionRate(order.getSellPrice(), Converter.BASE_TO_QUOTE);
|
||||||
CryptoCurrencyEquivalence equivalence = new CryptoCurrencyEquivalence(baseAsset.getId(), quoteAsset.getId(), (int) (Math.pow(10, baseAsset.getPrecision()) * equiValue), new Date());
|
CryptoCurrencyEquivalence equivalence = new CryptoCurrencyEquivalence(baseAsset.getId(), quoteAsset.getId(), (int) (Math.pow(10, baseAsset.getPrecision()) * equiValue), new Date());
|
||||||
CrystalDatabase.getAppDatabase(context).cryptoCurrencyEquivalenceDao().insertCryptoCurrencyEquivalence(equivalence);
|
CrystalDatabase.getAppDatabase(context).cryptoCurrencyEquivalenceDao().insertCryptoCurrencyEquivalence(equivalence);
|
||||||
break;
|
break;
|
||||||
//}
|
//}
|
||||||
}catch(Exception e){
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue