package de.tum.in.tumcampusapp.models.tumcabe;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import de.tum.in.tumcampusapp.R;
import de.tum.in.tumcampusapp.auxiliary.Utils;
public class ChatMessage {
public static final int STATUS_SENDING = 1;
public static final int STATUS_SENT = 0;
public static final int STATUS_SENDING_FAILED = -1;
private int id;
private String text;
private ChatMember member;
private String timestamp;
private String signature;
private int sendingStatus;
private int previous;
private int room;
private boolean read;
public int internalID;
/**
* Default constructor: called by gson when parsing an element
*/
public ChatMessage(){
this.sendingStatus=STATUS_SENT;
}
public ChatMessage(String text) {
super();
this.text = text;
}
/**
* Called when creating a new chat message
* @param text Chat message text
* @param member Member who sent the message
*/
public ChatMessage(String text, ChatMember member) {
super();
this.text = text;
this.member = member;
this.sendingStatus = STATUS_SENDING;
this.previous = 0;
this.setNow();
}
public int getRoom() {
return room;
}
public void setRoom(int room) {
this.room = room;
}
public int getStatus() {
return sendingStatus;
}
public void setStatus(int status) {
sendingStatus = status;
}
public ChatMessage(int id, String text, ChatMember member, String timestamp, int previous) {
super();
this.id = id;
this.text = text;
this.member = member;
this.timestamp = timestamp;
this.sendingStatus = STATUS_SENT;
this.previous = previous;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPrevious() {
return previous;
}
public void setPrevious(int previous) {
this.previous = previous;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public ChatMember getMember() {
return member;
}
public void setMember(ChatMember member) {
this.member = member;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public Date getTimestampDate(){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH);
Date time = new Date();
try {
time = formatter.parse(this.getTimestamp());
} catch (ParseException e) {
Utils.log(e);
}
return time;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
private static boolean isToday(Date date) {
Calendar passedDate = Calendar.getInstance();
passedDate.setTime(date); // your date
Calendar today = Calendar.getInstance(); // today
return today.get(Calendar.YEAR) == passedDate.get(Calendar.YEAR) && today.get(Calendar.DAY_OF_YEAR) == passedDate.get(Calendar.DAY_OF_YEAR);
}
private static boolean isYesterday(Date date) {
Calendar passedDate = Calendar.getInstance();
passedDate.setTime(date);
Calendar yesterday = Calendar.getInstance(); // today
yesterday.add(Calendar.DAY_OF_YEAR, -1); // yesterday
return yesterday.get(Calendar.YEAR) == passedDate.get(Calendar.YEAR) && yesterday.get(Calendar.DAY_OF_YEAR) == passedDate.get(Calendar.DAY_OF_YEAR);
}
public int getStatusStringRes() {
if (sendingStatus==STATUS_SENT) {
return R.string.status_sent;
} else if (sendingStatus==STATUS_SENDING) {
return R.string.status_sending;
} else {
return R.string.status_sending_failed;
}
}
public final void setNow() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH); // 2014-06-30T16:31:57.878Z
timestamp = formatter.format(new Date());
}
public void setRead(boolean read) {
this.read = read;
}
public boolean isRead() {
return read;
}
public boolean getRead() {
return read;
}
}