Null check for database cursors in Database helper

This commit is contained in:
Bennet Brunsen
2016-01-12 15:27:13 +01:00
parent f6270e97f5
commit 4d4c089290
2 changed files with 117 additions and 93 deletions
@@ -43,13 +43,16 @@ public class DatabaseHelper {
List<String> checkinUrls = new ArrayList<>();
ContentResolver cr = context.getContentResolver();
Cursor cursor = cr.query(CheckinUri.CONTENT_URI, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String checkinUrl = cursor.getString(cursor.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
if (!checkinUrls.contains(checkinUrl)){
checkinUrls.add(checkinUrl);
if (cursor != null) {
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String checkinUrl = cursor.getString(cursor.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
if (!checkinUrls.contains(checkinUrl)) {
checkinUrls.add(checkinUrl);
}
cursor.moveToNext();
}
cursor.moveToNext();
cursor.close();
}
return checkinUrls;
}
@@ -60,9 +63,11 @@ public class DatabaseHelper {
ContentResolver cr = context.getContentResolver();
Cursor cursor = cr.query(Event.CONTENT_URI, null, Event.EVENT_CHECKIN_DIGEST + " = ?",
new String[] { checkinDigest }, null);
cursor.moveToFirst();
result = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
cursor.close();
if (cursor != null) {
cursor.moveToFirst();
result = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
cursor.close();
}
return result;
}
@@ -73,16 +78,18 @@ public class DatabaseHelper {
String projectionStr = "events._id ,leaderboards.leaderboard_name, events.event_id,"
+ " events.event_name, competitors.competitor_id";
String[] projection = projectionStr.split(",");
Cursor cursor = cr.query(EventLeaderboardCompetitorJoined.CONTENT_URI, projection, "events."
+ Event.EVENT_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (cursor.moveToFirst()) {
result.name = cursor.getString(cursor.getColumnIndex("event_name"));
result.leaderboardName = cursor.getString(cursor.getColumnIndex("leaderboard_name"));
result.competitorId = cursor.getString(cursor.getColumnIndex("competitor_id"));
result.id = cursor.getString(cursor.getColumnIndex("event_id"));
}
Cursor cursor = cr.query(EventLeaderboardCompetitorJoined.CONTENT_URI, projection,
"events." + Event.EVENT_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
result.name = cursor.getString(cursor.getColumnIndex("event_name"));
result.leaderboardName = cursor.getString(cursor.getColumnIndex("leaderboard_name"));
result.competitorId = cursor.getString(cursor.getColumnIndex("competitor_id"));
result.id = cursor.getString(cursor.getColumnIndex("event_id"));
}
cursor.close();
cursor.close();
}
return result;
}
@@ -92,18 +99,19 @@ public class DatabaseHelper {
Cursor cursor = context.getContentResolver().query(Event.CONTENT_URI, null,
Event.EVENT_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
event.name = cursor.getString(cursor.getColumnIndex(Event.EVENT_NAME));
event.imageUrl = cursor.getString(cursor.getColumnIndex(Event.EVENT_IMAGE_URL));
event.startMillis = cursor.getLong(cursor.getColumnIndex(Event.EVENT_DATE_START));
event.endMillis = cursor.getLong(cursor.getColumnIndex(Event.EVENT_DATE_END));
event.server = cursor.getString(cursor.getColumnIndex(Event.EVENT_SERVER));
event.rowId = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
event.id = cursor.getString(cursor.getColumnIndex(Event.EVENT_ID));
}
if (cursor.moveToFirst()) {
event.name = cursor.getString(cursor.getColumnIndex(Event.EVENT_NAME));
event.imageUrl = cursor.getString(cursor.getColumnIndex(Event.EVENT_IMAGE_URL));
event.startMillis = cursor.getLong(cursor.getColumnIndex(Event.EVENT_DATE_START));
event.endMillis = cursor.getLong(cursor.getColumnIndex(Event.EVENT_DATE_END));
event.server = cursor.getString(cursor.getColumnIndex(Event.EVENT_SERVER));
event.rowId = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
event.id = cursor.getString(cursor.getColumnIndex(Event.EVENT_ID));
cursor.close();
}
cursor.close();
return event;
}
@@ -113,15 +121,17 @@ public class DatabaseHelper {
Cursor cursor = context.getContentResolver().query(Competitor.CONTENT_URI, null,
Competitor.COMPETITOR_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (cursor.moveToFirst()) {
competitor.name = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_DISPLAY_NAME));
competitor.countryCode = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_COUNTRY_CODE));
competitor.sailId = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_SAIL_ID));
competitor.rowId = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
competitor.id = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_ID));
}
if (cursor != null) {
if (cursor.moveToFirst()) {
competitor.name = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_DISPLAY_NAME));
competitor.countryCode = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_COUNTRY_CODE));
competitor.sailId = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_SAIL_ID));
competitor.rowId = cursor.getInt(cursor.getColumnIndex(BaseColumns._ID));
competitor.id = cursor.getString(cursor.getColumnIndex(Competitor.COMPETITOR_ID));
}
cursor.close();
cursor.close();
}
return competitor;
}
@@ -131,12 +141,14 @@ public class DatabaseHelper {
Cursor lc = context.getContentResolver().query(Leaderboard.CONTENT_URI, null,
Leaderboard.LEADERBOARD_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (lc.moveToFirst()) {
leaderboard.rowId = lc.getInt(lc.getColumnIndex(BaseColumns._ID));
leaderboard.name = lc.getString(lc.getColumnIndex(Leaderboard.LEADERBOARD_NAME));
}
if (lc != null) {
if (lc.moveToFirst()) {
leaderboard.rowId = lc.getInt(lc.getColumnIndex(BaseColumns._ID));
leaderboard.name = lc.getString(lc.getColumnIndex(Leaderboard.LEADERBOARD_NAME));
}
lc.close();
lc.close();
}
return leaderboard;
}
@@ -147,12 +159,14 @@ public class DatabaseHelper {
Cursor uc = context.getContentResolver().query(CheckinUri.CONTENT_URI, null,
CheckinUri.CHECKIN_URI_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (uc.moveToFirst()) {
checkinUrlInfo.rowId = uc.getInt(uc.getColumnIndex(BaseColumns._ID));
checkinUrlInfo.urlString = uc.getString(uc.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
}
if (uc != null) {
if (uc.moveToFirst()) {
checkinUrlInfo.rowId = uc.getInt(uc.getColumnIndex(BaseColumns._ID));
checkinUrlInfo.urlString = uc.getString(uc.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
}
uc.close();
uc.close();
}
return checkinUrlInfo;
}
@@ -231,7 +245,6 @@ public class DatabaseHelper {
ccuv.put(CheckinUri.CHECKIN_URI_VALUE, checkinURL.urlString);
ccuv.put(CheckinUri.CHECKIN_URI_CHECKIN_DIGEST, checkinURL.checkinDigest);
cr.insert(CheckinUri.CONTENT_URI, ccuv);
opList.add(ContentProviderOperation.newInsert(CheckinUri.CONTENT_URI).withValues(ccuv).build());
@@ -250,17 +263,18 @@ public class DatabaseHelper {
*
* @param checkinDigest
* SHA-256 digest of QR-code string
* @param leaderboardName
* @param competitorId
* @return
*/
public boolean eventLeaderboardCompetitorCombnationAvailable(Context context, String checkinDigest) {
ContentResolver cr = context.getContentResolver();
String sel = "leaderboards.leaderboard_checkin_digest = ? AND competitors.competitor_checkin_digest = ? AND events.event_checkin_digest = ?";
Cursor cursor = cr.query(AnalyticsContract.EventLeaderboardCompetitorJoined.CONTENT_URI, null, sel,
new String[] { checkinDigest, checkinDigest, checkinDigest }, null);
int count = cursor.getCount();
cursor.close();
Cursor cursor = cr.query(AnalyticsContract.EventLeaderboardCompetitorJoined.CONTENT_URI, null, sel, new String[] { checkinDigest,
checkinDigest, checkinDigest }, null);
int count = 0;
if (cursor != null) {
count = cursor.getCount();
cursor.close();
}
return count == 0;
}
@@ -47,13 +47,15 @@ public class DatabaseHelper {
Cursor lc = context.getContentResolver().query(Leaderboard.CONTENT_URI, null,
Leaderboard.LEADERBOARD_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (lc.moveToFirst()) {
leaderboard.rowId = lc.getInt(lc.getColumnIndex(BaseColumns._ID));
leaderboard.name = lc.getString(lc.getColumnIndex(Leaderboard.LEADERBOARD_NAME));
leaderboard.serverUrl = lc.getString(lc.getColumnIndex(Leaderboard.LEADERBOARD_SERVER_URL));
}
if (lc != null) {
if (lc.moveToFirst()) {
leaderboard.rowId = lc.getInt(lc.getColumnIndex(BaseColumns._ID));
leaderboard.name = lc.getString(lc.getColumnIndex(Leaderboard.LEADERBOARD_NAME));
leaderboard.serverUrl = lc.getString(lc.getColumnIndex(Leaderboard.LEADERBOARD_SERVER_URL));
}
lc.close();
lc.close();
}
return leaderboard;
}
@@ -64,51 +66,57 @@ public class DatabaseHelper {
Cursor uc = context.getContentResolver().query(CheckinUri.CONTENT_URI, null,
CheckinUri.CHECKIN_URI_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
if (uc.moveToFirst()) {
checkinUrlInfo.rowId = uc.getInt(uc.getColumnIndex(BaseColumns._ID));
checkinUrlInfo.urlString = uc.getString(uc.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
}
if (uc != null) {
if (uc.moveToFirst()) {
checkinUrlInfo.rowId = uc.getInt(uc.getColumnIndex(BaseColumns._ID));
checkinUrlInfo.urlString = uc.getString(uc.getColumnIndex(CheckinUri.CHECKIN_URI_VALUE));
}
uc.close();
uc.close();
}
return checkinUrlInfo;
}
public List<MarkInfo> getMarks(Context context, String checkinDigest) {
List<MarkInfo> marks = new ArrayList<MarkInfo>();
List<MarkInfo> marks = new ArrayList<>();
Cursor mc = context.getContentResolver().query(Mark.CONTENT_URI, null,
Mark.MARK_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
mc.moveToFirst();
while (!mc.isAfterLast()) {
MarkInfo markInfo = new MarkInfo();
markInfo.setCheckinDigest(mc.getString((mc.getColumnIndex(Mark.MARK_CHECKIN_DIGEST))));
markInfo.setId(mc.getString((mc.getColumnIndex(Mark.MARK_ID))));
markInfo.setName(mc.getString((mc.getColumnIndex(Mark.MARK_NAME))));
markInfo.setType(mc.getString((mc.getColumnIndex(Mark.MARK_TYPE))));
markInfo.setClassName(mc.getString((mc.getColumnIndex(Mark.MARK_CLASS_NAME))));
marks.add(markInfo);
mc.moveToNext();
if (mc != null) {
mc.moveToFirst();
while (!mc.isAfterLast()) {
MarkInfo markInfo = new MarkInfo();
markInfo.setCheckinDigest(mc.getString((mc.getColumnIndex(Mark.MARK_CHECKIN_DIGEST))));
markInfo.setId(mc.getString((mc.getColumnIndex(Mark.MARK_ID))));
markInfo.setName(mc.getString((mc.getColumnIndex(Mark.MARK_NAME))));
markInfo.setType(mc.getString((mc.getColumnIndex(Mark.MARK_TYPE))));
markInfo.setClassName(mc.getString((mc.getColumnIndex(Mark.MARK_CLASS_NAME))));
marks.add(markInfo);
mc.moveToNext();
}
mc.close();
}
mc.close();
return marks;
}
public List<MarkPingInfo> getMarkPings(Context context, String markID) {
List<MarkPingInfo> marks = new ArrayList<MarkPingInfo>();
List<MarkPingInfo> marks = new ArrayList<>();
Cursor mpc = context.getContentResolver().query(MarkPing.CONTENT_URI, null,
MarkPing.MARK_ID + " = ?", new String[] { markID }, MarkPing.MARK_PING_TIMESTAMP + " DESC");
mpc.moveToFirst();
while (!mpc.isAfterLast()) {
MarkPingInfo markPingInfo = new MarkPingInfo();
markPingInfo.setMarkId(markID);
markPingInfo.setTimestamp(mpc.getInt((mpc.getColumnIndex(MarkPing.MARK_PING_TIMESTAMP))));
markPingInfo.setLongitude(mpc.getString((mpc.getColumnIndex(MarkPing.MARK_PING_LONGITUDE))));
markPingInfo.setLatitude(mpc.getString((mpc.getColumnIndex(MarkPing.MARK_PING_LATITUDE))));
markPingInfo.setAccuracy(mpc.getDouble((mpc.getColumnIndex(MarkPing.MARK_PING_ACCURACY))));
marks.add(markPingInfo);
mpc.moveToNext();
if (mpc != null) {
mpc.moveToFirst();
while (!mpc.isAfterLast()) {
MarkPingInfo markPingInfo = new MarkPingInfo();
markPingInfo.setMarkId(markID);
markPingInfo.setTimestamp(mpc.getInt((mpc.getColumnIndex(MarkPing.MARK_PING_TIMESTAMP))));
markPingInfo.setLongitude(mpc.getString((mpc.getColumnIndex(MarkPing.MARK_PING_LONGITUDE))));
markPingInfo.setLatitude(mpc.getString((mpc.getColumnIndex(MarkPing.MARK_PING_LATITUDE))));
markPingInfo.setAccuracy(mpc.getDouble((mpc.getColumnIndex(MarkPing.MARK_PING_ACCURACY))));
marks.add(markPingInfo);
mpc.moveToNext();
}
mpc.close();
}
mpc.close();
return marks;
}
@@ -212,7 +220,7 @@ public class DatabaseHelper {
public void storeMarkPing(Context context, MarkPingInfo markPing) throws GeneralDatabaseHelperException {
ContentResolver cr = context.getContentResolver();
deletePingsFromDataBase(context, markPing.getMarkId());
ArrayList<ContentProviderOperation> opList = new ArrayList<ContentProviderOperation>();
ArrayList<ContentProviderOperation> opList = new ArrayList<>();
ContentValues mpcv = new ContentValues();
mpcv.put(MarkPing.MARK_ID, markPing.getMarkId());
mpcv.put(MarkPing.MARK_PING_LATITUDE, markPing.getLatitude());
@@ -234,11 +242,13 @@ public class DatabaseHelper {
public boolean markLeaderboardCombnationAvailable(Context context, String checkinDigest) {
Cursor lc = context.getContentResolver().query(Leaderboard.CONTENT_URI, null,
Leaderboard.LEADERBOARD_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
Leaderboard.LEADERBOARD_CHECKIN_DIGEST + " = ?", new String[] { checkinDigest }, null);
int count = 0;
if (lc != null) {
count = lc.getCount();
int count = lc.getCount();
lc.close();
lc.close();
}
return count == 0;
}