2

Hello I'm starting a new Android project using Firebase real time database. My problem is when I create a new message, I put created_at = ServerValue.TIMESTAMP and it's a Map<String,String>. When I fetch a message I got error parsing telling me that created_at is a long and I put it in my model a Map. My code below :

@IgnoreExtraProperties
public class Message implements Serializable 
{
@SerializedName("message_id")
@Expose
private String message_id;
@SerializedName("value")
@Expose
private String value;
@SerializedName("sender")
@Expose
private User sender;
@SerializedName("destination")
@Expose
private User destination;
@SerializedName("chatRoom")
@Expose
private ChatRoom chatRoom;
@SerializedName("created_at")
@Expose
private Map<String,String> created_at;
}

And my code to add new message :

String idM = databaseReference.push().getKey();                  
Message m = new Message(idM, message, sender, receiver, chatRoom, ServerValue.TIMESSTAMP);
databaseReference.child(idM).setValue(m);

Now I would like to set a default value to created_at like MySql : enter image description here

Any idea?

Grimthorr
  • 6,856
  • 5
  • 41
  • 53
Rockers23
  • 775
  • 1
  • 12
  • 24

1 Answers1

1

I resolved it with Lucky help's. So the solution is :

@IgnoreExtraProperties
public class Message implements Serializable {
@SerializedName("message_id")
@Expose
private String message_id;
@SerializedName("value")
@Expose
private String value;
@SerializedName("sender")
@Expose
private User sender;
@SerializedName("destination")
@Expose
private User destination;
@SerializedName("chatRoom")
@Expose
private ChatRoom chatRoom;
@SerializedName("created_at")
@Expose
private HashMap<String, Object> created_at;

public Message() {
}

public Message(String message_id, String value, User sender, User destination, ChatRoom chatRoom) {
    this.message_id = message_id;
    this.value = value;
    this.sender = sender;
    this.destination = destination;
    this.chatRoom = chatRoom;
    this.created_at = new HashMap<>();
    this.created_at.put("date", ServerValue.TIMESTAMP);
}

public String getMessage_id() {
    return message_id;
}

public void setMessage_id(String message_id) {
    this.message_id = message_id;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

public User getSender() {
    return sender;
}

public void setSender(User sender) {
    this.sender = sender;
}

public User getDestination() {
    return destination;
}

public void setDestination(User destination) {
    this.destination = destination;
}

public ChatRoom getChatRoom() {
    return chatRoom;
}

public void setChatRoom(ChatRoom chatRoom) {
    this.chatRoom = chatRoom;
}

public HashMap<String, Object> getCreated_at() {
    if (created_at != null) {
        return created_at;
    }
    //Otherwise make a new object set to ServerValue.TIMESTAMP
    HashMap<String, Object> dateCreatedObj = new HashMap<String, Object>();
    dateCreatedObj.put("date", ServerValue.TIMESTAMP);
    return dateCreatedObj;

}
@Exclude
public long getDateCreatedLong() {
    return (long)created_at.get("date");
}
public void setCreated_at(HashMap<String, Object> created_at) {
    this.created_at = created_at;
}
}
Rockers23
  • 775
  • 1
  • 12
  • 24