Mercury-IM/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomMessageModel.java

142 lines
3.5 KiB
Java

package org.mercury_im.messenger.persistence.room.model;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Index;
import androidx.room.PrimaryKey;
import androidx.room.TypeConverters;
import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.model.MessageModel;
import org.mercury_im.messenger.persistence.room.type_converter.DateConverter;
import org.mercury_im.messenger.persistence.room.type_converter.EntityBareJidConverter;
import java.util.Date;
import static androidx.room.ForeignKey.CASCADE;
import static org.mercury_im.messenger.persistence.room.model.RoomMessageModel.KEY_ACCOUNT_ID;
import static org.mercury_im.messenger.persistence.room.model.RoomMessageModel.KEY_ID;
import static org.mercury_im.messenger.persistence.room.model.RoomMessageModel.TABLE;
@Entity(tableName = TABLE,
foreignKeys = {
@ForeignKey(entity = RoomAccountModel.class,
parentColumns = RoomAccountModel.KEY_ID,
childColumns = KEY_ACCOUNT_ID,
onDelete = CASCADE)},
indices = {
@Index(KEY_ID),
@Index(KEY_ACCOUNT_ID)
})
public class RoomMessageModel implements MessageModel {
public static final String TABLE = "messages";
public static final String KEY_ID = "pk_message_id";
public static final String KEY_ACCOUNT_ID = "fk_account_id";
public static final String KEY_BODY = "body";
public static final String KEY_SEND_DATE = "send_date";
public static final String KEY_FROM = "from";
public static final String KEY_TO = "to";
public static final String KEY_INCOMING = "incoming";
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = KEY_ID)
private long id;
@ColumnInfo(name = KEY_ACCOUNT_ID)
private long accountId;
@ColumnInfo(name = KEY_BODY)
private String body;
@TypeConverters(DateConverter.class)
@ColumnInfo(name = KEY_SEND_DATE)
private Date sendDate;
@TypeConverters(EntityBareJidConverter.class)
@ColumnInfo(name = KEY_FROM)
private EntityBareJid from;
@TypeConverters(EntityBareJidConverter.class)
@ColumnInfo(name = KEY_TO)
private EntityBareJid to;
@ColumnInfo(name = KEY_INCOMING)
private boolean incoming;
public RoomMessageModel() {
}
@Override
public long getId() {
return id;
}
@Override
public void setId(long val) {
this.id = val;
}
@Override
public long getAccountId() {
return accountId;
}
@Override
public void setAccountId(long accountId) {
this.accountId = accountId;
}
@Override
public String getBody() {
return body;
}
@Override
public void setBody(String body) {
this.body = body;
}
@Override
public Date getSendDate() {
return sendDate;
}
@Override
public void setSendDate(Date date) {
this.sendDate = date;
}
@Override
public EntityBareJid getFrom() {
return from;
}
@Override
public void setFrom(EntityBareJid sender) {
this.from = sender;
}
@Override
public EntityBareJid getTo() {
return to;
}
@Override
public void setTo(EntityBareJid recipient) {
this.to = recipient;
}
@Override
public boolean isIncoming() {
return incoming;
}
@Override
public void setIncoming(boolean isIncoming) {
this.incoming = isIncoming;
}
}