package co.smartreceipts.android.persistence.database.controllers.results; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.google.common.base.Preconditions; import co.smartreceipts.android.persistence.database.operations.DatabaseOperationMetadata; public class UpdateResult<ModelType> { private final ModelType oldModel; private final ModelType newModel; private final Throwable throwable; private final DatabaseOperationMetadata databaseOperationMetadata; public UpdateResult(@NonNull ModelType oldModel, @NonNull ModelType newModel, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { this(oldModel, newModel, null, databaseOperationMetadata); } public UpdateResult(@NonNull ModelType oldModel, @NonNull Throwable throwable, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { this(oldModel, null, throwable, databaseOperationMetadata); } public UpdateResult(@NonNull ModelType oldModel, @Nullable ModelType newModel, @Nullable Throwable throwable, @NonNull DatabaseOperationMetadata databaseOperationMetadata) { this.oldModel = Preconditions.checkNotNull(oldModel); this.newModel = newModel; this.throwable = throwable; this.databaseOperationMetadata = Preconditions.checkNotNull(databaseOperationMetadata); } @NonNull public ModelType getOld() { return oldModel; } @Nullable public ModelType getNew() { return newModel; } @Nullable public Throwable getThrowable() { return throwable; } @NonNull public DatabaseOperationMetadata getDatabaseOperationMetadata() { return databaseOperationMetadata; } }