int error;
if (hasLimit) {
- error = querier->queryRangeLimit((startTime > timeSpanPoint)? startTime : timeSpanPoint, endTime, resultSize);
+ error = querier->query((startTime > timeSpanPoint)? startTime : timeSpanPoint, endTime, resultSize);
} else {
- error = querier->queryRange((startTime > timeSpanPoint)? startTime : timeSpanPoint, endTime);
+ error = querier->query((startTime > timeSpanPoint)? startTime : timeSpanPoint, endTime);
}
IF_FAIL_RETURN_TAG(error == ERR_NONE, ERR_OPERATION_FAILED, _E, "Failed to get app battery usage");
#include "BatteryStatisticsTypes.h"
#include "Querier.h"
-#define BATTERY_USAGE_DEFAULT_QUERY \
+#define BATTERY_USAGE_QUERY \
"SELECT " BATTERY_APP_ID " AS " KEY_APP_ID ", ROUND(SUM(" BATTERY_AMOUNT ")/10000.0, 2) AS " KEY_TOTAL_AMOUNT \
" FROM " BATTERY_USAGE_TABLE " WHERE " BATTERY_START_TIME " >= %d AND " BATTERY_END_TIME " <= %d" \
" GROUP BY " KEY_APP_ID " ORDER BY " KEY_TOTAL_AMOUNT " DESC"
+#define RECENT_BATTERY_USAGE_QUERY \
+ "SELECT " BATTERY_APP_ID " AS " KEY_APP_ID ", ROUND(SUM(" BATTERY_AMOUNT ")/10000.0, 2) AS " KEY_TOTAL_AMOUNT \
+ ", %d AS " KEY_USED_TIME \
+ " FROM " BATTERY_USAGE_TABLE " WHERE " BATTERY_START_TIME " >= %d AND " BATTERY_END_TIME " <= %d" \
+ " GROUP BY " KEY_APP_ID " ORDER BY " KEY_TOTAL_AMOUNT " DESC"
+
using namespace ctx;
BatteryStatsQuerier::BatteryStatsQuerier(ContextProvider *provider, Json option) :
return __dbMgr.execute(0, sql, this) ? ERR_NONE : ERR_OPERATION_FAILED;
}
-int BatteryStatsQuerier::queryRange(int startTime, int endTime)
+int BatteryStatsQuerier::query(int startTime, int endTime)
+{
+ char *sql = sqlite3_mprintf(BATTERY_USAGE_QUERY, startTime, endTime);
+
+ int error = query(sql);
+ sqlite3_free(sql);
+
+ return error;
+}
+
+int BatteryStatsQuerier::query(int startTime, int endTime, int resultSize)
+{
+ char *sql = sqlite3_mprintf(BATTERY_USAGE_QUERY " LIMIT %d", startTime, endTime, resultSize);
+
+ int error = query(sql);
+ sqlite3_free(sql);
+
+ return error;
+}
+
+int BatteryStatsQuerier::queryRecent(int startTime, int endTime)
{
- char *sql = sqlite3_mprintf(BATTERY_USAGE_DEFAULT_QUERY, startTime, endTime);
+ char *sql = sqlite3_mprintf(RECENT_BATTERY_USAGE_QUERY, endTime - startTime, startTime, endTime);
int error = query(sql);
sqlite3_free(sql);
return error;
}
-int BatteryStatsQuerier::queryRangeLimit(int startTime, int endTime, int resultSize)
+int BatteryStatsQuerier::queryRecent(int startTime, int endTime, int resultSize)
{
- char *sql = sqlite3_mprintf(BATTERY_USAGE_DEFAULT_QUERY " LIMIT %d", startTime, endTime, resultSize);
+ char *sql = sqlite3_mprintf(RECENT_BATTERY_USAGE_QUERY " LIMIT %d", endTime - startTime, startTime, endTime, resultSize);
int error = query(sql);
sqlite3_free(sql);
~BatteryStatsQuerier();
// For now, Default result size(10) isn't applied, unlike other history type.
- int queryRange(int startTime, int endTime);
- int queryRangeLimit(int startTime, int endTime, int resultSize);
+ int query(int startTime, int endTime);
+ int query(int startTime, int endTime, int resultSize);
+ int queryRecent(int startTime, int endTime);
+ int queryRecent(int startTime, int endTime, int resultSize);
protected:
int query(const char *sql);
int error;
if (hasLimit) {
- error = querier->queryRangeLimit(BatteryMonitor::getLastResetTime(), CURRENT_TIME, resultSize);
+ error = querier->queryRecent(BatteryMonitor::getLastResetTime(), CURRENT_TIME, resultSize);
} else {
- error = querier->queryRange(BatteryMonitor::getLastResetTime(), CURRENT_TIME);
+ error = querier->queryRecent(BatteryMonitor::getLastResetTime(), CURRENT_TIME);
}
IF_FAIL_RETURN_TAG(error == ERR_NONE, ERR_OPERATION_FAILED, _E, "Failed to get recent app battery usage");