package es.pirata.extra; import java.util.Calendar; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class CtrlDb { private static CtrlDb INSTANCE = null; private SQLiteDatabase db = null; public static CtrlDb getInstance() { if (INSTANCE == null) { INSTANCE = new CtrlDb(); } return INSTANCE; } public void setContext(Context context) { db = (new DatabaseHelper(context)).getWritableDatabase(); } public void close() { db.close(); } // ---------------------------------------------------------- public boolean isFirstTime() { String sql = "SELECT value FROM config WHERE key='FirstTime'"; Cursor cr = db.rawQuery(sql, null); int value = (cr.moveToFirst()) ? cr.getInt(cr.getColumnIndex("value")) : -1; cr.close(); if (value==1) { sql = "UPDATE config SET value=0 WHERE key='FirstTime'"; db.execSQL(sql); return true; } return false; } public int getIcon(Integer id) { String sql = "SELECT icon FROM rss WHERE id="+id+" LIMIT 1"; Cursor cr = db.rawQuery(sql, null); int value = (cr.moveToFirst()) ? cr.getInt(cr.getColumnIndex("icon")) : -1; cr.close(); return value; } public int getVoted(Integer id) { String sql = "SELECT voted FROM solutions WHERE id="+id+" LIMIT 1"; Cursor cr = db.rawQuery(sql, null); int value = (cr.moveToFirst()) ? cr.getInt(cr.getColumnIndex("voted")) : -2; cr.close(); return value; } public void setVoted(Integer id, int vote) { String sql; if (getVoted(id) != -2) { sql = "UPDATE solutions SET voted='"+vote+"' WHERE id="+id; } else { sql = "INSERT INTO solutions (id, voted) VALUES ("+id+","+vote+")"; } db.execSQL(sql); } public String getToken() { String sql = "SELECT value FROM config WHERE key='MyToken'"; Cursor cr = db.rawQuery(sql, null); String value = (cr.moveToFirst()) ? cr.getString(cr.getColumnIndex("value")).trim() : null; cr.close(); return value; } public void setToken(String token) { String sql = "UPDATE config SET value='"+token+"' WHERE key='MyToken'"; db.execSQL(sql); } public String getUser() { String sql = "SELECT value FROM config WHERE key='Username'"; Cursor cr = db.rawQuery(sql, null); String value = (cr.moveToFirst()) ? cr.getString(cr.getColumnIndex("value")) : null; cr.close(); return value; } public String getPass() { String sql = "SELECT value FROM config WHERE key='Password'"; Cursor cr = db.rawQuery(sql, null); String value = (cr.moveToFirst()) ? cr.getString(cr.getColumnIndex("value")) : null; cr.close(); return value; } public void setUserPass(String user, String pass) { // It SHOULD work with the AccountManager, not with BD! String[] sqlBlock = new String[] { "UPDATE config SET value='"+user+"' WHERE key='Username'", "UPDATE config SET value='"+pass+"' WHERE key='Password'" }; for (String sql : sqlBlock) { db.execSQL(sql); } } public boolean startUpdate() { String sql = "SELECT value FROM config WHERE key='LastUpdate'"; Cursor cr = db.rawQuery(sql, null); Long value = (cr.moveToFirst()) ? cr.getLong(cr.getColumnIndex("value")) : 0L; cr.close(); Calendar calOld = Calendar.getInstance(); Calendar calNow = Calendar.getInstance(); calOld.setTimeInMillis(value); calNow.setTimeInMillis(System.currentTimeMillis()); calOld.roll(Calendar.MINUTE, 3); calOld.get(Calendar.MINUTE); return calOld.before(calNow); } public void endUpdate() { String sql = "UPDATE config SET value='"+System.currentTimeMillis()+"' WHERE key='LastUpdate'"; db.execSQL(sql); } }