// Path: DataAccessLayer/dal/src/main/java/com/erc/dal/upgrade/DBConfig.java
// public class DBConfig {
//     private String dataBaseName;
//     private int version;
//     private int currentVersionCache;
//     private long tableCountCache;
//     private String url;
//     private Context context;
//     private String packageFilter;
//     private UpgradeListener upgradeListener;
// 
//     public DBConfig(Context context, String dataBaseName, int version, String url) {
//         this.context = context;
//         this.dataBaseName = dataBaseName;
//         this.version = version;
//         setUrl(url);
//         if (Util.isNullOrEmpty(dataBaseName)) {
//             this.dataBaseName = SQLiteDatabaseManager.getDataBaseName(context);
//         }
//     }
// 
//     public UpgradeListener getUpgradeListener() {
//         return upgradeListener;
//     }
// 
//     public void setOnUpgradeListener(UpgradeListener upgradeListener) {
//         this.upgradeListener = upgradeListener;
//     }
// 
//     public Context getContext() {
//         return context;
//     }
// 
//     public void setContext(Context context) {
//         this.context = context;
//     }
// 
//     public String getDataBaseName() {
//         return dataBaseName;
//     }
// 
//     public void setDataBaseName(String dataBaseName) {
//         this.dataBaseName = dataBaseName;
//     }
// 
//     public int getVersion() {
//         return version;
//     }
// 
//     int getCurrentVersionCache() {
//         return currentVersionCache;
//     }
// 
//     void setCurrentVersionCache(int currentVersionCache) {
//         this.currentVersionCache = currentVersionCache;
//     }
// 
//     public long getTableCountCache() {
//         return tableCountCache;
//     }
// 
//     public void setTableCountCache(long tableCountCache) {
//         this.tableCountCache = tableCountCache;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         if (url == null) {
//             url = "";
//         }
//         this.url = url.replaceAll("/$", "");
//     }
// 
//     public String getPackageFilter() {
//         return packageFilter;
//     }
// 
//     public void setPackageFilter(String packageFilter) {
//         this.packageFilter = packageFilter;
//     }
// }


import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.erc.dal.upgrade.DBConfig;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
package com.erc.dal;




/**
 * Created by einar on 10/17/2016.
 */
class DBOperations {
    SQLiteDatabase db;
    private static DBOperations dbOperations;

    private DBOperations() {
    }

    public static DBOperations getInstance() {
        if (dbOperations == null) {
            dbOperations = new DBOperations();
        }
        return dbOperations;
    }

// Path: DataAccessLayer/dal/src/main/java/com/erc/dal/upgrade/DBConfig.java
// public class DBConfig {
//     private String dataBaseName;
//     private int version;
//     private int currentVersionCache;
//     private long tableCountCache;
//     private String url;
//     private Context context;
//     private String packageFilter;
//     private UpgradeListener upgradeListener;
// 
//     public DBConfig(Context context, String dataBaseName, int version, String url) {
//         this.context = context;
//         this.dataBaseName = dataBaseName;
//         this.version = version;
//         setUrl(url);
//         if (Util.isNullOrEmpty(dataBaseName)) {
//             this.dataBaseName = SQLiteDatabaseManager.getDataBaseName(context);
//         }
//     }
// 
//     public UpgradeListener getUpgradeListener() {
//         return upgradeListener;
//     }
// 
//     public void setOnUpgradeListener(UpgradeListener upgradeListener) {
//         this.upgradeListener = upgradeListener;
//     }
// 
//     public Context getContext() {
//         return context;
//     }
// 
//     public void setContext(Context context) {
//         this.context = context;
//     }
// 
//     public String getDataBaseName() {
//         return dataBaseName;
//     }
// 
//     public void setDataBaseName(String dataBaseName) {
//         this.dataBaseName = dataBaseName;
//     }
// 
//     public int getVersion() {
//         return version;
//     }
// 
//     int getCurrentVersionCache() {
//         return currentVersionCache;
//     }
// 
//     void setCurrentVersionCache(int currentVersionCache) {
//         this.currentVersionCache = currentVersionCache;
//     }
// 
//     public long getTableCountCache() {
//         return tableCountCache;
//     }
// 
//     public void setTableCountCache(long tableCountCache) {
//         this.tableCountCache = tableCountCache;
//     }
// 
//     public String getUrl() {
//         return url;
//     }
// 
//     public void setUrl(String url) {
//         if (url == null) {
//             url = "";
//         }
//         this.url = url.replaceAll("/$", "");
//     }
// 
//     public String getPackageFilter() {
//         return packageFilter;
//     }
// 
//     public void setPackageFilter(String packageFilter) {
//         this.packageFilter = packageFilter;
//     }
// }


// Path: DataAccessLayer/dal/src/main/java/com/erc/dal/DBOperations.java
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.erc.dal.upgrade.DBConfig;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;

package com.erc.dal;




/**
 * Created by einar on 10/17/2016.
 */
class DBOperations {
    SQLiteDatabase db;
    private static DBOperations dbOperations;

    private DBOperations() {
    }

    public static DBOperations getInstance() {
        if (dbOperations == null) {
            dbOperations = new DBOperations();
        }
        return dbOperations;
    }

    public synchronized Entity save(Entity entity, DBConfig dbConfig) {