mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Improve null check for Checkmark and CheckmarkList
This commit is contained in:
@@ -43,9 +43,16 @@ public class Checkmark extends Model
|
|||||||
*/
|
*/
|
||||||
public static final int CHECKED_EXPLICITLY = 2;
|
public static final int CHECKED_EXPLICITLY = 2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The habit to which this checkmark belongs.
|
||||||
|
*/
|
||||||
@Column(name = "habit")
|
@Column(name = "habit")
|
||||||
public Habit habit;
|
public Habit habit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Timestamp of the day to which this checkmark corresponds. Time of the day must be midnight
|
||||||
|
* (UTC).
|
||||||
|
*/
|
||||||
@Column(name = "timestamp")
|
@Column(name = "timestamp")
|
||||||
public Long timestamp;
|
public Long timestamp;
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ package org.isoron.uhabits.models;
|
|||||||
|
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
|
||||||
import com.activeandroid.ActiveAndroid;
|
import com.activeandroid.ActiveAndroid;
|
||||||
import com.activeandroid.Cache;
|
import com.activeandroid.Cache;
|
||||||
@@ -66,7 +68,8 @@ public class CheckmarkList
|
|||||||
* @param toTimestamp timestamp for the newest checkmark
|
* @param toTimestamp timestamp for the newest checkmark
|
||||||
* @return values for the checkmarks inside the given interval
|
* @return values for the checkmarks inside the given interval
|
||||||
*/
|
*/
|
||||||
public int[] getValues(Long fromTimestamp, Long toTimestamp)
|
@NonNull
|
||||||
|
public int[] getValues(long fromTimestamp, long toTimestamp)
|
||||||
{
|
{
|
||||||
buildCache(fromTimestamp, toTimestamp);
|
buildCache(fromTimestamp, toTimestamp);
|
||||||
if(fromTimestamp > toTimestamp) return new int[0];
|
if(fromTimestamp > toTimestamp) return new int[0];
|
||||||
@@ -75,8 +78,8 @@ public class CheckmarkList
|
|||||||
"habit = ? and timestamp >= ? and timestamp <= ?";
|
"habit = ? and timestamp >= ? and timestamp <= ?";
|
||||||
|
|
||||||
SQLiteDatabase db = Cache.openDatabase();
|
SQLiteDatabase db = Cache.openDatabase();
|
||||||
String args[] = { habit.getId().toString(), fromTimestamp.toString(),
|
String args[] = { habit.getId().toString(), Long.toString(fromTimestamp),
|
||||||
toTimestamp.toString() };
|
Long.toString(toTimestamp) };
|
||||||
Cursor cursor = db.rawQuery(query, args);
|
Cursor cursor = db.rawQuery(query, args);
|
||||||
|
|
||||||
long day = DateHelper.millisecondsInOneDay;
|
long day = DateHelper.millisecondsInOneDay;
|
||||||
@@ -108,6 +111,7 @@ public class CheckmarkList
|
|||||||
*
|
*
|
||||||
* @return values for the checkmarks in the interval
|
* @return values for the checkmarks in the interval
|
||||||
*/
|
*/
|
||||||
|
@NonNull
|
||||||
public int[] getAllValues()
|
public int[] getAllValues()
|
||||||
{
|
{
|
||||||
Repetition oldestRep = habit.repetitions.getOldest();
|
Repetition oldestRep = habit.repetitions.getOldest();
|
||||||
@@ -188,6 +192,7 @@ public class CheckmarkList
|
|||||||
* Returns newest checkmark that has already been computed. Ignores any checkmark that has
|
* Returns newest checkmark that has already been computed. Ignores any checkmark that has
|
||||||
* timestamp in the future. This does not update the cache.
|
* timestamp in the future. This does not update the cache.
|
||||||
*/
|
*/
|
||||||
|
@Nullable
|
||||||
private Checkmark findNewest()
|
private Checkmark findNewest()
|
||||||
{
|
{
|
||||||
return new Select().from(Checkmark.class)
|
return new Select().from(Checkmark.class)
|
||||||
@@ -201,6 +206,7 @@ public class CheckmarkList
|
|||||||
/**
|
/**
|
||||||
* Returns the checkmark for today.
|
* Returns the checkmark for today.
|
||||||
*/
|
*/
|
||||||
|
@Nullable
|
||||||
public Checkmark getToday()
|
public Checkmark getToday()
|
||||||
{
|
{
|
||||||
long today = DateHelper.getStartOfToday();
|
long today = DateHelper.getStartOfToday();
|
||||||
@@ -209,10 +215,12 @@ public class CheckmarkList
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the value of today's checkmark.
|
* Returns the value of today's checkmark. If there is no checkmark today, returns UNCHECKED.
|
||||||
*/
|
*/
|
||||||
public int getTodayValue()
|
public int getTodayValue()
|
||||||
{
|
{
|
||||||
return getToday().value;
|
Checkmark today = getToday();
|
||||||
|
if(today != null) return today.value;
|
||||||
|
else return Checkmark.UNCHECKED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user