// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/data/mappers/IEntityMapper.java
// public interface IEntityMapper<T extends Entity> {
//     /**
//      * Maps {@link Cursor} data to an {@link Entity} object.
//      * @param c {@link Cursor}
//      * @return {@link Entity} object
//      */
//     T map(Cursor c);
// 
//     /**
//      * Maps an {@link Entity} object to {@link ContentValues} to store in SQLite database.
//      * @param entity {@link Entity} object
//      * @return {@link ContentValues}
//      */
//     ContentValues map(T entity);
// }
// 
// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/data/models/Entity.java
// public abstract class Entity {
//     private Object id;
// 
// 
//     @Override
//     public boolean equals(Object obj) {
//         return (this == obj) || (obj instanceof Entity && ((Entity)obj).id.equals(id));
//     }
// 
//     @Override
//     public String toString() {
//         return "Entity {'" + id + "'}";
//     }
// 
//     public Object getId() {
//         return id;
//     }
// 
//     public void setId(Object id) {
//         this.id = id;
//     }
// }


import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.tylersuehr.cleanarchitecture.data.mappers.IEntityMapper;
import com.tylersuehr.cleanarchitecture.data.models.Entity;
import java.util.ArrayList;
import java.util.List;
package com.tylersuehr.cleanarchitecture.data.repositories;

/**
 * Copyright 2017 Tyler Suehr
 *
 * Utility to help with querying the local SQLite database.
 *
 * @author Tyler Suehr
 * @version 1.0
 */
public final class SQLQuery {
    /**
     * Queries the SQLite database for a single object.
     * @param db {@link SQLiteDatabase}
     * @param mapper {@link IEntityMapper}
     * @param table Table name
     * @param where Where clause
     * @param callback {@link Callbacks.ISingle}
     */
    public static <T extends Entity> void query(
            SQLiteDatabase db,
// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/data/mappers/IEntityMapper.java
// public interface IEntityMapper<T extends Entity> {
//     /**
//      * Maps {@link Cursor} data to an {@link Entity} object.
//      * @param c {@link Cursor}
//      * @return {@link Entity} object
//      */
//     T map(Cursor c);
// 
//     /**
//      * Maps an {@link Entity} object to {@link ContentValues} to store in SQLite database.
//      * @param entity {@link Entity} object
//      * @return {@link ContentValues}
//      */
//     ContentValues map(T entity);
// }
// 
// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/data/models/Entity.java
// public abstract class Entity {
//     private Object id;
// 
// 
//     @Override
//     public boolean equals(Object obj) {
//         return (this == obj) || (obj instanceof Entity && ((Entity)obj).id.equals(id));
//     }
// 
//     @Override
//     public String toString() {
//         return "Entity {'" + id + "'}";
//     }
// 
//     public Object getId() {
//         return id;
//     }
// 
//     public void setId(Object id) {
//         this.id = id;
//     }
// }


// Path: app/src/main/java/com/tylersuehr/cleanarchitecture/data/repositories/SQLQuery.java
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.tylersuehr.cleanarchitecture.data.mappers.IEntityMapper;
import com.tylersuehr.cleanarchitecture.data.models.Entity;
import java.util.ArrayList;
import java.util.List;

package com.tylersuehr.cleanarchitecture.data.repositories;

/**
 * Copyright 2017 Tyler Suehr
 *
 * Utility to help with querying the local SQLite database.
 *
 * @author Tyler Suehr
 * @version 1.0
 */
public final class SQLQuery {
    /**
     * Queries the SQLite database for a single object.
     * @param db {@link SQLiteDatabase}
     * @param mapper {@link IEntityMapper}
     * @param table Table name
     * @param where Where clause
     * @param callback {@link Callbacks.ISingle}
     */
    public static <T extends Entity> void query(
            SQLiteDatabase db,
            IEntityMapper<T> mapper,