import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.Index;
+import androidx.room.PrimaryKey;
-@Entity(tableName = "transaction_accounts", primaryKeys = {"profile", "transaction_id", "order_no"},
- foreignKeys = {@ForeignKey(entity = Transaction.class, parentColumns = {"profile", "id"},
- childColumns = {"profile", "transaction_id"},
- onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.RESTRICT),
- @ForeignKey(entity = Account.class, parentColumns = {"profile", "name"},
- childColumns = {"profile", "account_name"},
- onDelete = ForeignKey.CASCADE, onUpdate = ForeignKey.RESTRICT)
- }, indices = {@Index(name = "fk_tran_acc_prof_acc", value = {"profile", "account_name"})})
+import net.ktnx.mobileledger.utils.Misc;
+
+@Entity(tableName = "transaction_accounts", foreignKeys = {
+ @ForeignKey(entity = Transaction.class, parentColumns = {"id"},
+ childColumns = {"transaction_id"}, onDelete = ForeignKey.CASCADE,
+ onUpdate = ForeignKey.RESTRICT)
+}, indices = {@Index(name = "fk_trans_acc_trans", value = {"transaction_id"}),
+ @Index(name = "un_transaction_accounts", unique = true,
+ value = {"transaction_id", "order_no"})
+})
public class TransactionAccount {
@ColumnInfo
- @NonNull
- private String profile;
+ @PrimaryKey(autoGenerate = true)
+ private long id;
@ColumnInfo(name = "transaction_id")
- private int transactionId;
+ private long transactionId;
@ColumnInfo(name = "order_no")
private int orderNo;
@ColumnInfo(name = "account_name")
@ColumnInfo
private String comment;
@ColumnInfo(defaultValue = "0")
- private int generation = 0;
- @NonNull
- public String getProfile() {
- return profile;
+ private long generation = 0;
+ public long getId() {
+ return id;
}
- public void setProfile(@NonNull String profile) {
- this.profile = profile;
+ public void setId(long id) {
+ this.id = id;
}
- public int getTransactionId() {
+ @NonNull
+ public long getTransactionId() {
return transactionId;
}
- public void setTransactionId(int transactionId) {
+ public void setTransactionId(long transactionId) {
this.transactionId = transactionId;
}
public int getOrderNo() {
public void setComment(String comment) {
this.comment = comment;
}
- public int getGeneration() {
+ public long getGeneration() {
return generation;
}
- public void setGeneration(int generation) {
+ public void setGeneration(long generation) {
this.generation = generation;
}
+
+ public void copyDataFrom(TransactionAccount o) {
+ // id = o.id
+ transactionId = o.transactionId;
+ orderNo = o.orderNo;
+ accountName = o.accountName;
+ currency = Misc.nullIsEmpty(o.currency);
+ amount = o.amount;
+ comment = o.comment;
+ generation = o.generation;
+ }
}