174 lines
4.7 KiB
Java
174 lines
4.7 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.Ignore;
|
|
import androidx.room.Index;
|
|
import androidx.room.PrimaryKey;
|
|
import androidx.room.TypeConverters;
|
|
|
|
import org.mercury_im.messenger.persistence.model.ContactModel;
|
|
import org.mercury_im.messenger.persistence.model.EntityModel;
|
|
import org.mercury_im.messenger.persistence.room.type_converter.DirectionConverter;
|
|
|
|
import static androidx.room.ForeignKey.CASCADE;
|
|
import static androidx.room.ForeignKey.RESTRICT;
|
|
import static org.mercury_im.messenger.persistence.room.model.RoomContactModel.KEY_ACCOUNT_ID;
|
|
import static org.mercury_im.messenger.persistence.room.model.RoomContactModel.KEY_ID;
|
|
import static org.mercury_im.messenger.persistence.room.model.RoomContactModel.KEY_ENTITY_ID;
|
|
import static org.mercury_im.messenger.persistence.room.model.RoomContactModel.TABLE;
|
|
|
|
@Entity(tableName = TABLE,
|
|
indices = {
|
|
@Index(value = KEY_ID),
|
|
@Index(value = KEY_ACCOUNT_ID),
|
|
@Index(value = KEY_ENTITY_ID, unique = true),
|
|
@Index(value = {KEY_ID, KEY_ENTITY_ID}, unique = true)
|
|
},
|
|
foreignKeys = {
|
|
@ForeignKey(entity = RoomAccountModel.class,
|
|
parentColumns = RoomAccountModel.KEY_ID,
|
|
childColumns = KEY_ACCOUNT_ID,
|
|
onDelete = CASCADE),
|
|
@ForeignKey(entity = RoomEntityModel.class,
|
|
parentColumns = RoomEntityModel.KEY_ID,
|
|
childColumns = KEY_ENTITY_ID,
|
|
onDelete = RESTRICT)})
|
|
public class RoomContactModel implements ContactModel {
|
|
|
|
public static final String TABLE = "contacts";
|
|
public static final String KEY_ID = "pk_contact_id";
|
|
public static final String KEY_ACCOUNT_ID = "fk_account_id";
|
|
public static final String KEY_ENTITY_ID = "fk_entity_id";
|
|
public static final String KEY_ROSTER_NAME = "rostername";
|
|
public static final String KEY_NICKNAME = "nickname";
|
|
public static final String KEY_DIRECTION = "direction";
|
|
public static final String KEY_SUB_PENDING = "sub_pending";
|
|
public static final String KEY_APPROVED = "approved";
|
|
|
|
@PrimaryKey(autoGenerate = true)
|
|
@ColumnInfo(name = KEY_ID)
|
|
private long id;
|
|
|
|
@ColumnInfo(name = KEY_ACCOUNT_ID)
|
|
private long accountId;
|
|
|
|
@ColumnInfo(name = KEY_ENTITY_ID)
|
|
private long entityId;
|
|
|
|
@ColumnInfo(name = KEY_ROSTER_NAME)
|
|
private String rosterName;
|
|
|
|
@ColumnInfo(name = KEY_NICKNAME)
|
|
private String nickname;
|
|
|
|
@ColumnInfo(name = KEY_DIRECTION)
|
|
@TypeConverters(DirectionConverter.class)
|
|
private DIRECTION direction;
|
|
|
|
@ColumnInfo(name = KEY_SUB_PENDING)
|
|
private boolean subscriptionPending;
|
|
|
|
@ColumnInfo(name = KEY_APPROVED)
|
|
private boolean approved;
|
|
|
|
/**
|
|
* This field is ignored by room and must instead be populated manually by calling
|
|
* {@link #setEntity(EntityModel)}.
|
|
*/
|
|
@Ignore
|
|
private EntityModel entityModel;
|
|
|
|
@Override
|
|
public long getId() {
|
|
return id;
|
|
}
|
|
|
|
@Override
|
|
public void setId(long id) {
|
|
this.id = id;
|
|
}
|
|
|
|
@Override
|
|
public long getAccountId() {
|
|
return accountId;
|
|
}
|
|
|
|
@Override
|
|
public void setAccountId(long accountId) {
|
|
this.accountId = accountId;
|
|
}
|
|
|
|
@Override
|
|
public long getEntityId() {
|
|
return entityId;
|
|
}
|
|
|
|
@Override
|
|
public void setEntityId(long id) {
|
|
this.entityId = id;
|
|
}
|
|
|
|
@Override
|
|
public String getRosterName() {
|
|
return rosterName;
|
|
}
|
|
|
|
@Override
|
|
public void setRosterName(String rosterName) {
|
|
this.rosterName = rosterName;
|
|
}
|
|
|
|
@Override
|
|
public String getNickname() {
|
|
return nickname;
|
|
}
|
|
|
|
@Override
|
|
public void setNickname(String nickname) {
|
|
this.nickname = nickname;
|
|
}
|
|
|
|
@Override
|
|
public DIRECTION getDirection() {
|
|
return direction;
|
|
}
|
|
|
|
@Override
|
|
public void setDirection(DIRECTION direction) {
|
|
this.direction = direction;
|
|
}
|
|
|
|
@Override
|
|
public boolean isSubscriptionPending() {
|
|
return subscriptionPending;
|
|
}
|
|
|
|
@Override
|
|
public void setSubscriptionPending(boolean pending) {
|
|
this.subscriptionPending = pending;
|
|
}
|
|
|
|
@Override
|
|
public boolean isApproved() {
|
|
return approved;
|
|
}
|
|
|
|
@Override
|
|
public void setApproved(boolean approved) {
|
|
this.approved = approved;
|
|
}
|
|
|
|
@Override
|
|
public EntityModel getEntity() {
|
|
return entityModel;
|
|
}
|
|
|
|
@Override
|
|
public void setEntity(EntityModel entity) {
|
|
this.entityModel = entity;
|
|
}
|
|
}
|