// Path: RxDbFlow-Rx2/src/main/java/au/com/roadhouse/rxdbflow/rx2/sql/language/NullValue.java
// public class NullValue {
// }


import android.database.sqlite.SQLiteException;
import android.support.annotation.NonNull;
import com.raizlabs.android.dbflow.config.FlowManager;
import com.raizlabs.android.dbflow.structure.Model;
import com.raizlabs.android.dbflow.structure.database.DatabaseWrapper;
import java.util.ArrayList;
import java.util.List;
import au.com.roadhouse.rxdbflow.rx2.sql.language.NullValue;
import io.reactivex.Observable;
import io.reactivex.Observer;
            mDatabaseWrapper = databaseWrapper;
        }

        /**
         * Creates a new builder, using a Model class to derive the target database. The class passed
         * to the parameter does not restrict the tables on which the database operations are performed.
         * As long as the operations run on a single database.
         * @param clazz The model class used to derive the target database.
         */
        public Builder(@NonNull Class<? extends Model> clazz){
            mTransactionProcessList = new ArrayList<>();
            mDatabaseWrapper = FlowManager.getDatabaseForTable(clazz).getWritableDatabase();
        }

        /**
         * Adds a new transaction operation to be performed within a transaction block.
         * @param operation The operation to perform
         * @return An instance of the current builder object.
         */
        public Builder addOperation(@NonNull TransactionOperation operation){
            mTransactionProcessList.add(operation);
            return this;
        }

        /**
         * Builds a new GenericTransactionBlock observable which will run all database operations within
         * a single transaction once it's subscribed to.
         * @return A new GenericTransactionBlock containing all database operations
         */
        public RxGenericTransactionBlock build(){
// Path: RxDbFlow-Rx2/src/main/java/au/com/roadhouse/rxdbflow/rx2/sql/language/NullValue.java
// public class NullValue {
// }


// Path: RxDbFlow-Rx2/src/main/java/au/com/roadhouse/rxdbflow/rx2/sql/transaction/RxGenericTransactionBlock.java
import android.database.sqlite.SQLiteException;
import android.support.annotation.NonNull;
import com.raizlabs.android.dbflow.config.FlowManager;
import com.raizlabs.android.dbflow.structure.Model;
import com.raizlabs.android.dbflow.structure.database.DatabaseWrapper;
import java.util.ArrayList;
import java.util.List;
import au.com.roadhouse.rxdbflow.rx2.sql.language.NullValue;
import io.reactivex.Observable;
import io.reactivex.Observer;

            mDatabaseWrapper = databaseWrapper;
        }

        /**
         * Creates a new builder, using a Model class to derive the target database. The class passed
         * to the parameter does not restrict the tables on which the database operations are performed.
         * As long as the operations run on a single database.
         * @param clazz The model class used to derive the target database.
         */
        public Builder(@NonNull Class<? extends Model> clazz){
            mTransactionProcessList = new ArrayList<>();
            mDatabaseWrapper = FlowManager.getDatabaseForTable(clazz).getWritableDatabase();
        }

        /**
         * Adds a new transaction operation to be performed within a transaction block.
         * @param operation The operation to perform
         * @return An instance of the current builder object.
         */
        public Builder addOperation(@NonNull TransactionOperation operation){
            mTransactionProcessList.add(operation);
            return this;
        }

        /**
         * Builds a new GenericTransactionBlock observable which will run all database operations within
         * a single transaction once it's subscribed to.
         * @return A new GenericTransactionBlock containing all database operations
         */
        public RxGenericTransactionBlock build(){
            return new RxGenericTransactionBlock(this);