package com.kth.baasio.response; import com.kth.baasio.entity.BaasioBaseEntity; import com.kth.baasio.entity.entity.BaasioEntity; import com.kth.baasio.entity.user.BaasioUser; import com.kth.baasio.utils.JsonUtils; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.annotate.JsonAnyGetter; import org.codehaus.jackson.annotate.JsonAnySetter; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.annotate.JsonProperty; import org.codehaus.jackson.map.annotate.JsonSerialize; import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; public class BaasioResponse { private String accessToken; private String path; private String uri; private String status; private long timestamp; private UUID application; private List<BaasioBaseEntity> entities; private UUID next; private String cursor; private String action; private List<Object> list; private Object data; private Map<String, UUID> applications; private Map<String, JsonNode> metadata; private Map<String, List<String>> params; private List<AggregateCounterSet> counters; private ClientCredentialsInfo credentials; private List<QueueInfo> queues; private UUID last; private UUID queue; private UUID consumer; private BaasioUser user; private final Map<String, JsonNode> properties = new HashMap<String, JsonNode>(); public BaasioResponse() { } @JsonAnyGetter public Map<String, JsonNode> getProperties() { return properties; } @JsonAnySetter public void setProperty(String key, JsonNode value) { properties.put(key, value); } @JsonProperty("access_token") @JsonSerialize(include = Inclusion.NON_NULL) public String getAccessToken() { return accessToken; } @JsonProperty("access_token") public void setAccessToken(String accessToken) { this.accessToken = accessToken; } @JsonSerialize(include = Inclusion.NON_NULL) public String getPath() { return path; } public void setPath(String path) { this.path = path; } @JsonSerialize(include = Inclusion.NON_NULL) public String getUri() { return uri; } public void setUri(String uri) { this.uri = uri; } @JsonSerialize(include = Inclusion.NON_NULL) public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public long getTimestamp() { return timestamp; } public void setTimestamp(long timestamp) { this.timestamp = timestamp; } @JsonSerialize(include = Inclusion.NON_NULL) public UUID getApplication() { return application; } public void setApplication(UUID application) { this.application = application; } @JsonSerialize(include = Inclusion.NON_NULL) public List<BaasioBaseEntity> getEntities() { return entities; } public void setEntities(List<BaasioBaseEntity> entities) { this.entities = entities; } public int getEntityCount() { if (entities == null) { return 0; } return entities.size(); } public BaasioBaseEntity getFirstEntity() { if ((entities != null) && (entities.size() > 0)) { return entities.get(0); } return null; } public <T extends BaasioEntity> T getFirstEntity(Class<T> t) { return BaasioEntity.toType(getFirstEntity(), t); } public BaasioBaseEntity getLastEntity() { if ((entities != null) && (entities.size() > 0)) { return entities.get(entities.size() - 1); } return null; } public <T extends BaasioBaseEntity> T getLastEntity(Class<T> t) { return BaasioEntity.toType(getLastEntity(), t); } public <T extends BaasioBaseEntity> List<T> getEntities(Class<T> t) { return BaasioBaseEntity.toType(entities, t); } @JsonSerialize(include = Inclusion.NON_NULL) public UUID getNext() { return next; } public void setNext(UUID next) { this.next = next; } @JsonSerialize(include = Inclusion.NON_NULL) public String getCursor() { return cursor; } public void setCursor(String cursor) { this.cursor = cursor; } @JsonSerialize(include = Inclusion.NON_NULL) public String getAction() { return action; } public void setAction(String action) { this.action = action; } @JsonSerialize(include = Inclusion.NON_NULL) public List<Object> getList() { return list; } public void setList(List<Object> list) { this.list = list; } @JsonSerialize(include = Inclusion.NON_NULL) public Object getData() { return data; } public void setData(Object data) { this.data = data; } @JsonSerialize(include = Inclusion.NON_NULL) public Map<String, UUID> getApplications() { return applications; } public void setApplications(Map<String, UUID> applications) { this.applications = applications; } @JsonSerialize(include = Inclusion.NON_NULL) public Map<String, JsonNode> getMetadata() { return metadata; } public void setMetadata(Map<String, JsonNode> metadata) { this.metadata = metadata; } @JsonSerialize(include = Inclusion.NON_NULL) public Map<String, List<String>> getParams() { return params; } public void setParams(Map<String, List<String>> params) { this.params = params; } @JsonSerialize(include = Inclusion.NON_NULL) public List<AggregateCounterSet> getCounters() { return counters; } public void setCounters(List<AggregateCounterSet> counters) { this.counters = counters; } @JsonSerialize(include = Inclusion.NON_NULL) public ClientCredentialsInfo getCredentials() { return credentials; } public void setCredentials(ClientCredentialsInfo credentials) { this.credentials = credentials; } @JsonSerialize(include = Inclusion.NON_NULL) public BaasioUser getUser() { return user; } public void setUser(BaasioUser user) { this.user = user; } @Override public String toString() { return JsonUtils.toJsonString(this); } @JsonSerialize(include = Inclusion.NON_NULL) public UUID getLast() { return last; } public void setLast(UUID last) { this.last = last; } @JsonSerialize(include = Inclusion.NON_NULL) public List<QueueInfo> getQueues() { return queues; } public void setQueues(List<QueueInfo> queues) { this.queues = queues; } @JsonIgnore public QueueInfo getFirstQueue() { if ((queues != null) && (queues.size() > 0)) { return queues.get(0); } return null; } @JsonIgnore public QueueInfo getLastQueue() { if ((queues != null) && (queues.size() > 0)) { return queues.get(queues.size() - 1); } return null; } @JsonIgnore public UUID getLastQueueId() { QueueInfo q = getLastQueue(); if (q != null) { return q.getQueue(); } return null; } @JsonSerialize(include = Inclusion.NON_NULL) public UUID getQueue() { return queue; } public void setQueue(UUID queue) { this.queue = queue; } @JsonSerialize(include = Inclusion.NON_NULL) public UUID getConsumer() { return consumer; } public void setConsumer(UUID consumer) { this.consumer = consumer; } }