package co.smartreceipts.android.persistence.database.tables.keys;
import android.support.annotation.NonNull;
import com.google.common.base.Preconditions;
/**
* A special {@link PrimaryKey} implementation to be used in conjunction with "INTEGER PRIMARY KEY AUTOINCREMENT"
* database tables, since we won't know the key until after the insert completes...
*
* @param <ModelType> the model object with an AutoIncrement Integer Primary Key
*/
public final class AutoIncrementIdPrimaryKey<ModelType> implements PrimaryKey<ModelType, Integer> {
private final PrimaryKey<ModelType, Integer> mPrimaryKey;
private final Integer mId;
public AutoIncrementIdPrimaryKey(@NonNull PrimaryKey<ModelType, Integer> primaryKey, @NonNull Integer id) {
mPrimaryKey = Preconditions.checkNotNull(primaryKey);
mId = Preconditions.checkNotNull(id);
}
@NonNull
@Override
public String getPrimaryKeyColumn() {
return mPrimaryKey.getPrimaryKeyColumn();
}
@NonNull
@Override
public Class<Integer> getPrimaryKeyClass() {
return Integer.class;
}
@NonNull
@Override
public Integer getPrimaryKeyValue(@NonNull ModelType modelType) {
return mId;
}
}