Cleaned up some code, updated comments and fix the bug with deleting
notification feature Signed-off-by: Ricky Barrette <rickbarrette@gmail.com>
This commit is contained in:
@@ -38,10 +38,10 @@ import com.TwentyCodes.android.LocationRinger.debug.Debug;
|
|||||||
public class RingerDatabase {
|
public class RingerDatabase {
|
||||||
|
|
||||||
private static final String TAG = "RingerDatabase";
|
private static final String TAG = "RingerDatabase";
|
||||||
private Context mContext;
|
private final Context mContext;
|
||||||
private SQLiteDatabase mDb;
|
private SQLiteDatabase mDb;
|
||||||
|
private final DatabaseListener mListener;
|
||||||
public boolean isUpgrading = false;
|
public boolean isUpgrading = false;
|
||||||
private DatabaseListener mListener;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* database information values
|
* database information values
|
||||||
@@ -109,7 +109,7 @@ public class RingerDatabase {
|
|||||||
*/
|
*/
|
||||||
private void convert2to3(SQLiteDatabase db){
|
private void convert2to3(SQLiteDatabase db){
|
||||||
//get all the ringer information from the old table
|
//get all the ringer information from the old table
|
||||||
Cursor cursor = db.query("two", new String[] { KEY_RINGER_NAME, KEY_RINGTONE,
|
final Cursor cursor = db.query("two", new String[] { KEY_RINGER_NAME, KEY_RINGTONE,
|
||||||
KEY_NOTIFICATION_RINGTONE, KEY_RINGTONE_IS_SILENT,
|
KEY_NOTIFICATION_RINGTONE, KEY_RINGTONE_IS_SILENT,
|
||||||
KEY_NOTIFICATION_IS_SILENT, KEY_IS_ENABLED,
|
KEY_NOTIFICATION_IS_SILENT, KEY_IS_ENABLED,
|
||||||
KEY_RADIUS, KEY_LOCATION_LAT, KEY_LOCATION_LON,
|
KEY_RADIUS, KEY_LOCATION_LAT, KEY_LOCATION_LON,
|
||||||
@@ -124,7 +124,7 @@ public class RingerDatabase {
|
|||||||
int count = cursor.getColumnCount();
|
int count = cursor.getColumnCount();
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
ContentValues ringer = new ContentValues();
|
final ContentValues ringer = new ContentValues();
|
||||||
if(Debug.DEBUG)
|
if(Debug.DEBUG)
|
||||||
Log.v(TAG, "Converting: " + cursor.getString(0));
|
Log.v(TAG, "Converting: " + cursor.getString(0));
|
||||||
for(int i = 0; i < count; i++){
|
for(int i = 0; i < count; i++){
|
||||||
@@ -278,10 +278,15 @@ public class RingerDatabase {
|
|||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public RingerDatabase(Context context){
|
public RingerDatabase(Context context){
|
||||||
this.mContext = context;
|
this(context, null);
|
||||||
this.mDb = new OpenHelper(this.mContext).getWritableDatabase();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new RingerDatabase
|
||||||
|
* @param context
|
||||||
|
* @param listener
|
||||||
|
* @author ricky barrette
|
||||||
|
*/
|
||||||
public RingerDatabase(Context context, DatabaseListener listener){
|
public RingerDatabase(Context context, DatabaseListener listener){
|
||||||
this.mListener = listener;
|
this.mListener = listener;
|
||||||
this.mContext = context;
|
this.mContext = context;
|
||||||
@@ -308,13 +313,14 @@ public class RingerDatabase {
|
|||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public boolean backup(){
|
public boolean backup(){
|
||||||
File dbFile = new File(Environment.getDataDirectory() + "/data/"+mContext.getPackageName()+"/databases/"+DATABASE_NAME);
|
final File dbFile = new File(Environment.getDataDirectory() + "/data/"+mContext.getPackageName()+"/databases/"+DATABASE_NAME);
|
||||||
|
|
||||||
File exportDir = new File(Environment.getExternalStorageDirectory(), "/"+this.mContext.getString(R.string.app_name));
|
final File exportDir = new File(Environment.getExternalStorageDirectory(), "/"+this.mContext.getString(R.string.app_name));
|
||||||
if (!exportDir.exists()) {
|
if (!exportDir.exists()) {
|
||||||
exportDir.mkdirs();
|
exportDir.mkdirs();
|
||||||
}
|
}
|
||||||
File file = new File(exportDir, dbFile.getName());
|
|
||||||
|
final File file = new File(exportDir, dbFile.getName());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
file.createNewFile();
|
file.createNewFile();
|
||||||
@@ -331,9 +337,9 @@ public class RingerDatabase {
|
|||||||
* @param name
|
* @param name
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private String checkRingerName(String name){
|
private String checkRingerName(final String name){
|
||||||
|
|
||||||
List<String> names = this.getAllRingerTitles();
|
final List<String> names = this.getAllRingerTitles();
|
||||||
String ringerName = name;
|
String ringerName = name;
|
||||||
int count = 1;
|
int count = 1;
|
||||||
|
|
||||||
@@ -344,8 +350,6 @@ public class RingerDatabase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ringerName;
|
return ringerName;
|
||||||
|
|
||||||
// return checkRingerName(name, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -355,9 +359,9 @@ public class RingerDatabase {
|
|||||||
* @throws IOException
|
* @throws IOException
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
private void copyFile(File src, File dst) throws IOException {
|
private void copyFile(final File src, final File dst) throws IOException {
|
||||||
FileChannel inChannel = new FileInputStream(src).getChannel();
|
final FileChannel inChannel = new FileInputStream(src).getChannel();
|
||||||
FileChannel outChannel = new FileOutputStream(dst).getChannel();
|
final FileChannel outChannel = new FileOutputStream(dst).getChannel();
|
||||||
try {
|
try {
|
||||||
inChannel.transferTo(0, inChannel.size(), outChannel);
|
inChannel.transferTo(0, inChannel.size(), outChannel);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -421,8 +425,8 @@ public class RingerDatabase {
|
|||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public List<String> getAllRingerTitles() {
|
public List<String> getAllRingerTitles() {
|
||||||
List<String> list = new ArrayList<String>();
|
final List<String> list = new ArrayList<String>();
|
||||||
Cursor cursor = this.mDb.query(RINGER_TABLE, new String[] { KEY_RINGER_NAME }, null, null, null, null, null);
|
final Cursor cursor = this.mDb.query(RINGER_TABLE, new String[] { KEY_RINGER_NAME }, null, null, null, null, null);
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
list.add(cursor.getString(0));
|
list.add(cursor.getString(0));
|
||||||
@@ -440,8 +444,8 @@ public class RingerDatabase {
|
|||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public List<String> getAllRingerDescriptions() {
|
public List<String> getAllRingerDescriptions() {
|
||||||
List<String> list = new ArrayList<String>();
|
final List<String> list = new ArrayList<String>();
|
||||||
List<String> ringers = getAllRingerTitles();
|
final List<String> ringers = getAllRingerTitles();
|
||||||
for(String ringer: ringers){
|
for(String ringer: ringers){
|
||||||
list.add(getRingerInfo(ringer).getAsString(KEY_RINGER_DESCRIPTION));
|
list.add(getRingerInfo(ringer).getAsString(KEY_RINGER_DESCRIPTION));
|
||||||
}
|
}
|
||||||
@@ -464,9 +468,9 @@ public class RingerDatabase {
|
|||||||
* @return
|
* @return
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public ContentValues getRingerInfo(String ringerName){
|
public ContentValues getRingerInfo(final String ringerName){
|
||||||
ContentValues values = new ContentValues();
|
final ContentValues values = new ContentValues();
|
||||||
Cursor info = this.mDb.query(RINGER_INFO_TABLE, new String[]{ KEY, KEY_VALUE }, KEY_RINGER_NAME +" = "+ DatabaseUtils.sqlEscapeString(ringerName), null, null, null, null);
|
final Cursor info = this.mDb.query(RINGER_INFO_TABLE, new String[]{ KEY, KEY_VALUE }, KEY_RINGER_NAME +" = "+ DatabaseUtils.sqlEscapeString(ringerName), null, null, null, null);
|
||||||
if (info.moveToFirst()) {
|
if (info.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
values.put(info.getString(0), info.getString(1));
|
values.put(info.getString(0), info.getString(1));
|
||||||
@@ -484,9 +488,9 @@ public class RingerDatabase {
|
|||||||
* @return ringer's name
|
* @return ringer's name
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public String getRingerName(long id) {
|
public String getRingerName(final long id) {
|
||||||
String name = null;
|
String name = null;
|
||||||
Cursor cursor = this.mDb.query(RINGER_TABLE, new String[]{ KEY_RINGER_NAME }, "id = "+id, null, null, null, null);;
|
final Cursor cursor = this.mDb.query(RINGER_TABLE, new String[]{ KEY_RINGER_NAME }, "id = "+id, null, null, null, null);;
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
name = cursor.getString(0);
|
name = cursor.getString(0);
|
||||||
}
|
}
|
||||||
@@ -502,14 +506,14 @@ public class RingerDatabase {
|
|||||||
* @param ringerInfo values
|
* @param ringerInfo values
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void insertRinger(ContentValues ringer, ContentValues ringerInfo){
|
public void insertRinger(final ContentValues ringer, final ContentValues ringerInfo){
|
||||||
ringer.put(RingerDatabase.KEY_RINGER_NAME, checkRingerName(ringer.getAsString(RingerDatabase.KEY_RINGER_NAME)));
|
ringer.put(RingerDatabase.KEY_RINGER_NAME, checkRingerName(ringer.getAsString(RingerDatabase.KEY_RINGER_NAME)));
|
||||||
mDb.insert(RINGER_TABLE, null, ringer);
|
mDb.insert(RINGER_TABLE, null, ringer);
|
||||||
String ringerName = ringer.getAsString(RingerDatabase.KEY_RINGER_NAME);
|
final String ringerName = ringer.getAsString(RingerDatabase.KEY_RINGER_NAME);
|
||||||
|
|
||||||
//insert the information values
|
//insert the information values
|
||||||
for(Entry<String, Object> item : ringerInfo.valueSet()){
|
for(final Entry<String, Object> item : ringerInfo.valueSet()){
|
||||||
ContentValues values = new ContentValues();
|
final ContentValues values = new ContentValues();
|
||||||
values.put(KEY_RINGER_NAME, ringerName);
|
values.put(KEY_RINGER_NAME, ringerName);
|
||||||
values.put(KEY, item.getKey());
|
values.put(KEY, item.getKey());
|
||||||
/*
|
/*
|
||||||
@@ -540,8 +544,8 @@ public class RingerDatabase {
|
|||||||
* @return true if the ringer is enabled
|
* @return true if the ringer is enabled
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public boolean isRingerEnabled(long id) {
|
public boolean isRingerEnabled(final long id) {
|
||||||
Cursor cursor = this.mDb.query(RINGER_TABLE, new String[] { KEY_IS_ENABLED }, "id = "+id, null, null, null, null);
|
final Cursor cursor = this.mDb.query(RINGER_TABLE, new String[] { KEY_IS_ENABLED }, "id = "+id, null, null, null, null);
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
if(Debug.DEBUG)
|
if(Debug.DEBUG)
|
||||||
Log.d(TAG, "isRingerEnabled("+id+") = "+ cursor.getString(0));
|
Log.d(TAG, "isRingerEnabled("+id+") = "+ cursor.getString(0));
|
||||||
@@ -556,13 +560,14 @@ public class RingerDatabase {
|
|||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void restore(){
|
public void restore(){
|
||||||
File dbFile = new File(Environment.getDataDirectory() + "/data/"+mContext.getPackageName()+"/databases/"+DATABASE_NAME);
|
final File dbFile = new File(Environment.getDataDirectory() + "/data/"+mContext.getPackageName()+"/databases/"+DATABASE_NAME);
|
||||||
|
|
||||||
File exportDir = new File(Environment.getExternalStorageDirectory(), "/"+this.mContext.getString(R.string.app_name));
|
final File exportDir = new File(Environment.getExternalStorageDirectory(), "/"+this.mContext.getString(R.string.app_name));
|
||||||
if (!exportDir.exists()) {
|
if (!exportDir.exists()) {
|
||||||
exportDir.mkdirs();
|
exportDir.mkdirs();
|
||||||
}
|
}
|
||||||
File file = new File(exportDir, dbFile.getName());
|
|
||||||
|
final File file = new File(exportDir, dbFile.getName());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
file.createNewFile();
|
file.createNewFile();
|
||||||
@@ -580,10 +585,10 @@ public class RingerDatabase {
|
|||||||
this.mListener.onRestoreComplete();
|
this.mListener.onRestoreComplete();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int setRingerEnabled(long id, boolean enabled) {
|
public int setRingerEnabled(final long id, final boolean enabled) {
|
||||||
if(Debug.DEBUG)
|
if(Debug.DEBUG)
|
||||||
Log.d(TAG, "setRingerEnabled("+id+") = "+ enabled);
|
Log.d(TAG, "setRingerEnabled("+id+") = "+ enabled);
|
||||||
ContentValues values = new ContentValues();
|
final ContentValues values = new ContentValues();
|
||||||
values.put(KEY_IS_ENABLED, enabled);
|
values.put(KEY_IS_ENABLED, enabled);
|
||||||
return mDb.update(RINGER_TABLE, values, "id" + "= "+ id, null);
|
return mDb.update(RINGER_TABLE, values, "id" + "= "+ id, null);
|
||||||
}
|
}
|
||||||
@@ -595,7 +600,7 @@ public class RingerDatabase {
|
|||||||
* @param info values
|
* @param info values
|
||||||
* @author ricky barrette
|
* @author ricky barrette
|
||||||
*/
|
*/
|
||||||
public void updateRinger(long id, ContentValues ringer, ContentValues info) throws NullPointerException{
|
public void updateRinger(final long id, final ContentValues ringer, final ContentValues info) throws NullPointerException{
|
||||||
|
|
||||||
if(ringer == null || info == null)
|
if(ringer == null || info == null)
|
||||||
throw new NullPointerException("ringer content was null");
|
throw new NullPointerException("ringer content was null");
|
||||||
@@ -616,12 +621,17 @@ public class RingerDatabase {
|
|||||||
RingerDatabase.this.mDb.delete(RINGER_INFO_TABLE, KEY +" = "+ DatabaseUtils.sqlEscapeString(item.getKey()) +" and "+ KEY_RINGER_NAME +" = "+DatabaseUtils.sqlEscapeString(ringer_name), null);
|
RingerDatabase.this.mDb.delete(RINGER_INFO_TABLE, KEY +" = "+ DatabaseUtils.sqlEscapeString(item.getKey()) +" and "+ KEY_RINGER_NAME +" = "+DatabaseUtils.sqlEscapeString(ringer_name), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* here we want to update the ringer name if needed
|
||||||
|
*/
|
||||||
if(!ringer_name.equals(ringer.getAsString(RingerDatabase.KEY_RINGER_NAME)))
|
if(!ringer_name.equals(ringer.getAsString(RingerDatabase.KEY_RINGER_NAME)))
|
||||||
ringer.put(RingerDatabase.KEY_RINGER_NAME, checkRingerName(ringer.getAsString(RingerDatabase.KEY_RINGER_NAME)));
|
ringer.put(RingerDatabase.KEY_RINGER_NAME, checkRingerName(ringer.getAsString(RingerDatabase.KEY_RINGER_NAME)));
|
||||||
|
|
||||||
//update the information values in the info table
|
/*
|
||||||
for(Entry<String, Object> item : info.valueSet()){
|
* here we wanr to update the information values in the info table
|
||||||
ContentValues values = new ContentValues();
|
*/
|
||||||
|
for(final Entry<String, Object> item : info.valueSet()){
|
||||||
|
final ContentValues values = new ContentValues();
|
||||||
values.put(KEY_RINGER_NAME, ringer.getAsString(KEY_RINGER_NAME));
|
values.put(KEY_RINGER_NAME, ringer.getAsString(KEY_RINGER_NAME));
|
||||||
values.put(KEY, item.getKey());
|
values.put(KEY, item.getKey());
|
||||||
try {
|
try {
|
||||||
@@ -633,7 +643,11 @@ public class RingerDatabase {
|
|||||||
values.put(KEY_VALUE, (Integer) item.getValue());
|
values.put(KEY_VALUE, (Integer) item.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//try to update, if update fails insert
|
|
||||||
|
/*
|
||||||
|
* here we are going to try to update a row,
|
||||||
|
* if that fails we will insert a row insead
|
||||||
|
*/
|
||||||
if(!(mDb.update(RINGER_INFO_TABLE, values, KEY_RINGER_NAME + "="+ DatabaseUtils.sqlEscapeString(ringer_name) +" AND " + KEY +"='"+ item.getKey()+"'", null) > 0))
|
if(!(mDb.update(RINGER_INFO_TABLE, values, KEY_RINGER_NAME + "="+ DatabaseUtils.sqlEscapeString(ringer_name) +" AND " + KEY +"='"+ item.getKey()+"'", null) > 0))
|
||||||
mDb.insert(RINGER_INFO_TABLE, null, values);
|
mDb.insert(RINGER_INFO_TABLE, null, values);
|
||||||
}
|
}
|
||||||
@@ -650,7 +664,7 @@ public class RingerDatabase {
|
|||||||
private void updateRowIds(long id) {
|
private void updateRowIds(long id) {
|
||||||
long currentRow;
|
long currentRow;
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
Cursor cursor = this.mDb.query(RINGER_TABLE, new String[] { "id" },null, null, null, null, null);
|
final Cursor cursor = this.mDb.query(RINGER_TABLE, new String[] { "id" },null, null, null, null, null);
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
do {
|
do {
|
||||||
currentRow = cursor.getLong(0);
|
currentRow = cursor.getLong(0);
|
||||||
|
|||||||
@@ -257,7 +257,7 @@ public class FeatureListFragment extends BaseFragmentListFragment implements OnC
|
|||||||
this.mListener.onInfoContentRemoved(RingerDatabase.KEY_RINGTONE_URI, RingerDatabase.KEY_RINGTONE_IS_SILENT, RingerDatabase.KEY_RINGTONE_VOLUME);
|
this.mListener.onInfoContentRemoved(RingerDatabase.KEY_RINGTONE_URI, RingerDatabase.KEY_RINGTONE_IS_SILENT, RingerDatabase.KEY_RINGTONE_VOLUME);
|
||||||
break;
|
break;
|
||||||
case KEY_ADDED_NOTIFICATIONTONE:
|
case KEY_ADDED_NOTIFICATIONTONE:
|
||||||
this.mListener.onInfoContentRemoved(RingerDatabase.KEY_NOTIFICATION_RINGTONE_URI, RingerDatabase.KEY_RINGTONE_IS_SILENT, RingerDatabase.KEY_NOTIFICATION_RINGTONE_VOLUME);
|
this.mListener.onInfoContentRemoved(RingerDatabase.KEY_NOTIFICATION_RINGTONE_URI, RingerDatabase.KEY_NOTIFICATION_IS_SILENT, RingerDatabase.KEY_NOTIFICATION_RINGTONE_VOLUME);
|
||||||
break;
|
break;
|
||||||
case KEY_ADDED_ALARM_VOLUME:
|
case KEY_ADDED_ALARM_VOLUME:
|
||||||
this.mListener.onInfoContentRemoved(RingerDatabase.KEY_ALARM_VOLUME);
|
this.mListener.onInfoContentRemoved(RingerDatabase.KEY_ALARM_VOLUME);
|
||||||
|
|||||||
Reference in New Issue
Block a user