package uk.ac.cam.echo.client.data;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonProperty;
import uk.ac.cam.echo.client.ClientApi;
import uk.ac.cam.echo.client.ProxyResource;
import uk.ac.cam.echo.data.Conversation;
import uk.ac.cam.echo.data.Message;
import uk.ac.cam.echo.data.User;
import uk.ac.cam.echo.data.resources.ConversationResource;
import uk.ac.cam.echo.data.resources.UserResource;
public class MessageData extends BaseData implements Message {
private String contents;
private long timeStamp;
private String senderName;
private ProxyResource<User, UserResource> senderProxy = new ProxyResource<User, UserResource>();
private ProxyResource<Conversation, ConversationResource> conversationProxy =
new ProxyResource<Conversation, ConversationResource>();
@Override
public void setApi(ClientApi api) {
super.setApi(api);
senderProxy.setResource(api.userResource);
conversationProxy.setResource(api.conversationResource);
}
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
public long getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(long timeStamp) {
this.timeStamp = timeStamp;
}
@Override
@JsonIgnore
public User getSender() {
return senderProxy.getData();
}
@Override
public String getSenderName() {
if (senderName != null) return senderName;
return getApi().userResource.get(getSenderId()).getUsername();
}
@Override
public void setSenderName(String senderName) {
this.senderName = senderName;
}
public Long getSenderId() {
return senderProxy.getId();
}
@JsonProperty
public void setSenderId(long id) {
senderProxy.setId(id);
}
@JsonProperty
public void setSender(User u) {
senderProxy.setData(u);
}
@Override
@JsonIgnore
public Conversation getConversation() {
return conversationProxy.getData();
}
public Long getConversationId() {
return conversationProxy.getId();
}
@JsonProperty
public void setConversationId(long id) {
conversationProxy.setId(id);
}
@JsonProperty
public void setConversation(Conversation conv) {
conversationProxy.setData(conv);
}
@Override
protected void configureResource() {
setResource(getApi().conversationResource.getMessageResource(conversationProxy.getId()));
}
}