95 lines
2.7 KiB
Java
95 lines
2.7 KiB
Java
package org.mercury_im.messenger.persistence.room.model;
|
|
|
|
import androidx.annotation.NonNull;
|
|
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.EntityModel;
|
|
import org.mercury_im.messenger.persistence.room.type_converter.EntityBareJidConverter;
|
|
import org.mercury_im.messenger.persistence.room.type_converter.FileConverter;
|
|
|
|
import java.io.File;
|
|
|
|
import static androidx.room.ForeignKey.CASCADE;
|
|
import static org.mercury_im.messenger.persistence.room.model.RoomEntityModel.KEY_ACCOUNT_ID;
|
|
import static org.mercury_im.messenger.persistence.room.model.RoomEntityModel.KEY_ID;
|
|
import static org.mercury_im.messenger.persistence.room.model.RoomEntityModel.KEY_JID;
|
|
import static org.mercury_im.messenger.persistence.room.model.RoomEntityModel.TABLE;
|
|
|
|
@Entity(tableName = TABLE,
|
|
indices = {
|
|
@Index(value = KEY_ID),
|
|
@Index(value = {KEY_ACCOUNT_ID, KEY_JID}, unique = true)
|
|
},
|
|
foreignKeys = {
|
|
@ForeignKey(entity = RoomAccountModel.class,
|
|
parentColumns = RoomAccountModel.KEY_ID,
|
|
childColumns = KEY_ACCOUNT_ID,
|
|
onDelete = CASCADE)
|
|
})
|
|
public class RoomEntityModel implements EntityModel {
|
|
|
|
public static final String TABLE = "entities";
|
|
public static final String KEY_ID = "pk_entity_id";
|
|
public static final String KEY_ACCOUNT_ID = "fk_account_id";
|
|
public static final String KEY_JID = "jid";
|
|
|
|
@PrimaryKey(autoGenerate = true)
|
|
@ColumnInfo(name = KEY_ID)
|
|
protected long id;
|
|
|
|
@ColumnInfo(name = KEY_ACCOUNT_ID)
|
|
protected long accountId;
|
|
|
|
@NonNull
|
|
@TypeConverters(EntityBareJidConverter.class)
|
|
@ColumnInfo(name = KEY_JID)
|
|
protected EntityBareJid jid;
|
|
|
|
@Override
|
|
public long getId() {
|
|
return id;
|
|
}
|
|
|
|
@Override
|
|
public void setId(long id) {
|
|
this.id = id;
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public EntityBareJid getJid() {
|
|
return jid;
|
|
}
|
|
|
|
@Override
|
|
public void setJid(@NonNull EntityBareJid jid) {
|
|
this.jid = jid;
|
|
}
|
|
|
|
@Override
|
|
public long getAccountId() {
|
|
return accountId;
|
|
}
|
|
|
|
@Override
|
|
public void setAccountId(long accountId) {
|
|
this.accountId = accountId;
|
|
}
|
|
|
|
@Override
|
|
@NonNull
|
|
public String toString() {
|
|
return "EntityModel[" +
|
|
KEY_ID + ": " + getId() + ", " +
|
|
KEY_ACCOUNT_ID + ": " + getAccountId() + ", " +
|
|
KEY_JID + ": " + getJid().toString() +
|
|
"]";
|
|
}
|
|
}
|