Added 'isLifetime' property to UserAccount class

This commit is contained in:
Nelson R. Perez 2018-06-01 21:45:07 -05:00
parent d04c8bb648
commit 7abf7343a1
3 changed files with 125 additions and 1 deletions

View file

@ -47,6 +47,7 @@ public class UserAccount extends GrapheneObject implements ByteSerializable, Jso
public static final String KEY_OWNER_SPECIAL_AUTHORITY = "owner_special_authority";
public static final String KEY_ACTIVE_SPECIAL_AUTHORITY = "active_special_authority";
public static final String KEY_N_CONTROL_FLAGS = "top_n_control_flags";
public static final String LIFETIME_EXPIRATION_DATE = "1969-12-31T23:59:59";
@Expose
private String name;
@ -84,6 +85,7 @@ public class UserAccount extends GrapheneObject implements ByteSerializable, Jso
@Expose
private long referrerRewardsPercentage;
private boolean isLifeTime;
/**
@ -248,6 +250,14 @@ public class UserAccount extends GrapheneObject implements ByteSerializable, Jso
this.statistics = statistics;
}
public boolean isLifeTime() {
return isLifeTime;
}
public void setLifeTime(boolean lifeTime) {
isLifeTime = lifeTime;
}
/**
* Deserializer used to build a UserAccount instance from the full JSON-formatted response obtained
* by the 'get_objects' API call.
@ -274,8 +284,10 @@ public class UserAccount extends GrapheneObject implements ByteSerializable, Jso
// Handling the deserialization and assignation of the membership date, which internally
// is stored as a long POSIX time value
try{
Date date = dateFormat.parse(jsonAccount.get(KEY_MEMBERSHIP_EXPIRATION_DATE).getAsString());
String expirationDate = jsonAccount.get(KEY_MEMBERSHIP_EXPIRATION_DATE).getAsString();
Date date = dateFormat.parse(expirationDate);
userAccount.setMembershipExpirationDate(date.getTime());
userAccount.setLifeTime(expirationDate.equals(LIFETIME_EXPIRATION_DATE));
} catch (ParseException e) {
System.out.println("ParseException. Msg: "+e.getMessage());
}

View file

@ -0,0 +1,67 @@
package cy.agorise.graphenej.api;
import com.neovisionaries.ws.client.WebSocketException;
import junit.framework.Assert;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import cy.agorise.graphenej.UserAccount;
import cy.agorise.graphenej.interfaces.WitnessResponseListener;
import cy.agorise.graphenej.models.AccountProperties;
import cy.agorise.graphenej.models.BaseResponse;
import cy.agorise.graphenej.models.WitnessResponse;
public class GetAccountsTest extends BaseApiTest {
private UserAccount ltmAccount = new UserAccount("1.2.99700");
private UserAccount nonLtmAccount = new UserAccount("1.2.140994");
@Test
public void testGetAccount(){
ArrayList<UserAccount> userAccounts = new ArrayList<>();
userAccounts.add(ltmAccount);
userAccounts.add(nonLtmAccount);
mWebSocket.addListener(new GetAccounts(userAccounts, true, new WitnessResponseListener(){
@Override
public void onSuccess(WitnessResponse response) {
System.out.println("onSuccess.");
List<AccountProperties> accounts = (List<AccountProperties>) response.result;
System.out.println(String.format("Got %d accounts", accounts.size()));
for(AccountProperties accountProperties : accounts){
System.out.println("account name....: "+accountProperties.name);
System.out.println("expiration date.: "+accountProperties.membership_expiration_date);
}
AccountProperties ltmAccountProperties = accounts.get(0);
AccountProperties nonLtmAccountProperties = accounts.get(1);
Assert.assertEquals(ltmAccountProperties.membership_expiration_date, UserAccount.LIFETIME_EXPIRATION_DATE);
Assert.assertFalse(nonLtmAccountProperties.membership_expiration_date.equals(UserAccount.LIFETIME_EXPIRATION_DATE));
synchronized (GetAccountsTest.this){
GetAccountsTest.this.notifyAll();
}
}
@Override
public void onError(BaseResponse.Error error) {
System.out.println("onError. Msg: "+error.message);
synchronized (GetAccountsTest.this){
GetAccountsTest.this.notifyAll();
}
}
}));
try{
mWebSocket.connect();
synchronized (this){
wait();
}
}catch (WebSocketException e) {
System.out.println("WebSocketException. Msg: " + e.getMessage());
} catch (InterruptedException e) {
System.out.println("InterruptedException. Msg: "+e.getMessage());
}
}
}

View file

@ -27,6 +27,7 @@ public class GetObjectsTest extends BaseApiTest{
private final Asset asset = new Asset("1.3.0", "BTS", 5);
private final UserAccount account = new UserAccount("1.2.116354");
private final UserAccount bilthon_25 = new UserAccount("1.2.151069");
private UserAccount ltmAccount = new UserAccount("1.2.99700");
private final String[] bitAssetIds = new String[]{"2.4.21", "2.4.83"};
@Test
@ -109,6 +110,50 @@ public class GetObjectsTest extends BaseApiTest{
}
}
@Test
public void testGetLtmAccount(){
ArrayList<String> ids = new ArrayList<>();
ids.add(ltmAccount.getObjectId());
mWebSocket.addListener(new GetObjects(ids, new WitnessResponseListener() {
@Override
public void onSuccess(WitnessResponse response) {
System.out.println("onSuccess");
List<GrapheneObject> result = (List<GrapheneObject>) response.result;
UserAccount userAccount = (UserAccount) result.get(0);
System.out.println("Account name.....: "+userAccount.getName());
System.out.println("Is LTM...........: "+userAccount.isLifeTime());
System.out.println("json string......: "+userAccount.toJsonString());
System.out.println("owner............: "+userAccount.getOwner().getKeyAuthList().get(0).getAddress());
System.out.println("active key.......: "+userAccount.getActive().getKeyAuthList().get(0).getAddress());
System.out.println("memo: "+userAccount.getOptions().getMemoKey().getAddress());
Assert.assertEquals("We expect this account to be LTM",true, userAccount.isLifeTime());
synchronized (GetObjectsTest.this){
GetObjectsTest.this.notifyAll();
}
}
@Override
public void onError(BaseResponse.Error error) {
System.out.println("onError");
synchronized (GetObjectsTest.this){
GetObjectsTest.this.notifyAll();
}
}
}));
try {
mWebSocket.connect();
synchronized (this){
wait();
}
}catch (WebSocketException e) {
System.out.println("WebSocketException. Msg: " + e.getMessage());
} catch (InterruptedException e) {
System.out.println("InterruptedException. Msg: "+e.getMessage());
}
}
@Test
public void testBitAssetData(){
try{