package com.dailystudio.dailylife.plugin.feeling;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import com.dailystudio.dailylife.core.DailyObject;
import com.dailystudio.database.DatabaseObject;
import com.dailystudio.database.ExpressionToken;
import com.dailystudio.database.LocalDatabaseReader;
import com.dailystudio.database.OrderingToken;
import com.dailystudio.database.Query;
import com.dailystudio.development.Logger;
import com.dailystudio.utils.CalendarHelper;
public class DailyFeelingReader extends LocalDatabaseReader {
public DailyFeelingReader(Context context, String database) {
super(context, database);
}
public List<DailyFeeling> queryFeelings(Query query) {
List<DatabaseObject> objects = query(query);
if (objects == null) {
return null;
}
final int count = objects.size();
if (count <= 0) {
return null;
}
List<DailyFeeling> feelings = new ArrayList<DailyFeeling>();
DatabaseObject object = null;
for (int i = 0; i < count; i++) {
object = objects.get(i);
if (object instanceof DailyFeeling == false) {
continue;
}
feelings.add((DailyFeeling)object);
}
return feelings;
}
public List<DailyFeeling> queryFeelingsForPeroid(long start, long end) {
return queryFeelingsForPeroid(start, end, false);
}
public List<DailyFeeling> queryFeelingsForPeroid(long start, long end,
boolean orderByAscending) {
return queryFeelings(getQueryForPeroid(start, end, orderByAscending));
}
public static Query getQueryForPeroid(long start, long end) {
return getQueryForPeroid(start, end, true);
}
public static Query getQueryForPeroid(long start, long end, boolean orderByAscending) {
Logger.debug("peroid: start(%s), end(%s), orderByAscending(%s)",
CalendarHelper.timeToReadableString(start),
CalendarHelper.timeToReadableString(end),
orderByAscending);
Query query = new Query(DailyFeeling.class);
if (query != null) {
if (start < end) {
ExpressionToken selection = DailyObject.COLUMN_TIME.gte(start)
.and(DailyObject.COLUMN_TIME.lte(end));
if (selection != null) {
query.setSelection(selection);
}
}
OrderingToken orderBy = (orderByAscending ?
DailyObject.COLUMN_TIME.orderByAscending() :
DailyObject.COLUMN_TIME.orderByDescending());
if (orderBy != null) {
query.setOrderBy(orderBy);
}
}
return query;
}
}
|