package com.cpiekarski.fourteeners.register; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.cpiekarski.fourteeners.utils.Mountain; import com.cpiekarski.fourteeners.utils.Mountains; import com.cpiekarski.fourteeners.utils.SRLOG; /** * Utils class for Register information. * * O(1) */ public class Register { public final int NO_VALUE = -1; private final String TAG = "Register"; private Context mCtx; public static Register instance = null; private RegisterHelper r; private SQLiteDatabase d; /** * Use Register class as a singleton * @param context * @return */ public static Register getInstance(Context context) { if(instance == null) { instance = new Register(context); } return instance; } public Register(Context context) { mCtx = context; r = new RegisterHelper(mCtx); d = r.getReadableDatabase(); } public int getTotalEntries() { String[] cols = new String[1]; cols[0] = RegisterHelper.MNT_NAME; Cursor c = d.query(RegisterHelper.TABLE_NAME, cols, null, null, null, null, null); int total = c.getCount(); SRLOG.v(TAG, "Total entries is: "+total); c.close(); return total; } public int getTotalSummits() { String[] cols = new String[1]; cols[0] = RegisterHelper.MNT_NAME; Cursor c = d.query(RegisterHelper.TABLE_NAME, cols, RegisterHelper.SUMMIT+" IS 1", null, null, null, null); int total = c.getCount(); SRLOG.v(TAG, "Total summits is: "+total); c.close(); return total; } public int getTotalSummits(String mountain) { String[] cols = new String[1]; cols[0] = RegisterHelper.MNT_NAME; Cursor c = d.query(RegisterHelper.TABLE_NAME, cols, RegisterHelper.SUMMIT+" IS 1 AND "+RegisterHelper.MNT_NAME+" IS "+mountain, null, null, null, null); int total = c.getCount(); SRLOG.v(TAG, "Total summits for "+mountain+" is: "+total); c.close(); return total; } public int getTotalUniqueSummits() { String[] cols = new String[1]; cols[0] = RegisterHelper.MNT_NAME; //distinct query Cursor c = d.query(true, RegisterHelper.TABLE_NAME, cols, RegisterHelper.SUMMIT+" IS 1", null, null, null, null, null); int total = c.getCount(); SRLOG.v(TAG, "Total unique summits is: "+total); c.close(); return total; } /** * Gets the last entry in the register with a successful summit. * * @return Entry or null; */ public RegisterEntry getLastEntry() { String[] cols = new String[1]; cols[0] = "_id"; Cursor c = d.query(RegisterHelper.TABLE_NAME, cols, RegisterHelper.SUMMIT+" IS 1", null, null, null, "_id DESC", "1"); if(c.getCount() == 0) { c.close(); return null; } c.moveToNext(); RegisterEntry re = new RegisterEntry(mCtx, c.getInt(c.getColumnIndex("_id"))); c.close(); return re; } }