// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.olio.data.object.analytics; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import com.olio.olios.model.record.DatabaseRecord; import com.olio.olios.model.record.DatabaseRecordMixins; import com.olio.util.ALog; import java.io.PrintWriter; import java.io.StringWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Set; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; // Referenced classes of package com.olio.data.object.analytics: // AnalyticsPayload, BatteryStatsHelper, DeviceInfo, KernelWakeLockUtils, // KernelWakeLock public class AnalyticsLog implements DatabaseRecord { public static final String ALARM_STATS_TAG = "ALARM_STAT"; public static final String BATTERY_SESSION_TAG = "BATT"; public static final String BATTERY_STATISTICS_TAG = "BATT_STATS"; public static final String BATTERY_STATS_PARTIAL_TAG = "BATT_P_WL"; public static final int BLE_ERROR_CODE_ANCS_REQUEST_DROPPED = -8; public static final int BLE_ERROR_CODE_BLUETOOTH_OFF = -5; public static final int BLE_ERROR_CODE_DISCONNECT = -6; public static final int BLE_ERROR_CODE_OLIO_PACKET_DROPPED = -9; public static final int BLE_ERROR_CODE_PACKET_DROPPED = -2; public static final int BLE_ERROR_CODE_REGISTER_FOR_ANCS_FAILED = -3; public static final int BLE_ERROR_CODE_REGISTER_FOR_SERVICE_TREE_CHANGE_FAILED = -3; public static final int BLE_ERROR_CODE_REQUEST_ERROR = -7; public static final int BLE_ERROR_CODE_SERVICE_DISCOVERY_FAILED = -4; public static final String BLE_ERROR_TAG = "BLE_E"; public static final String BLUETOOTH_SESSION_TAG = "BTS"; public static final String CPU_STATS_TAG = "CPU_STAT"; public static final String DEVICE_INFO_TAG = "DEV_INFO"; public static final String ERROR_TAG = "E_TAG"; public static final String FIRMWARE_UPDATE_ADDED = "ADDED"; public static final String FIRMWARE_UPDATE_DOWNLOAD_HASH_MISMATCH = "HASH_MISMATCH"; public static final String FIRMWARE_UPDATE_ERROR_APPLICATION_FAILED_TOO_MANY_TIMES = "UPDATE_FAILED_TOO_MANY_TIMES"; public static final String FIRMWARE_UPDATE_REMOVED = "REMOVED"; public static final String INSTANTANEOUS_BLUETOOTH_TAG = "BTC"; public static final String INSTANTANEOUS_CHARGE_TAG = "CHG"; public static final String INSTANTANEOUS_SOFTWARE_UPDATE_TAG = "UPDATE_EVT"; public static final String IRQ_STATS_TAG = "IRQ_STAT"; public static final String LOG_LINE = "log_line"; protected static int NUMBER_OF_RECORDS = 0; public static final String REMOTE_ACTION_TAG = "R_ACT"; public static final String STREAM_ITEM_STATS_TAG = "STREAM_STAT"; public static final String TABLE_NAME = "analytics_logs"; public static final String TAG = "tag"; public static final String WAKE_LOCK_TAG = "WAKE_LOCK_TAG"; private static String columnProjection[]; private static com.olio.olios.model.record.DatabaseRecord.DatabaseRecordFactory databaseRecordFactory = new com.olio.olios.model.record.DatabaseRecord.DatabaseRecordFactory() { public DatabaseRecord getRecordInstance() { return new AnalyticsLog(); } }; private static final List recordFields; private int databaseId; private String logLine; private String tag; public AnalyticsLog() { } public static void clearAllLogs(ContentResolver contentresolver) { contentresolver.delete(DatabaseRecordMixins.baseUriForAnalyticsTable(staticFactory()), "", new String[0]); } public static void clearLogsForPayload(AnalyticsPayload analyticspayload, ContentResolver contentresolver) { contentresolver.delete(DatabaseRecordMixins.baseUriForAnalyticsTable(staticFactory()), String.format("%s >= ? and %s <= ?", new Object[] { "_id", "_id" }), new String[] { Integer.toString(analyticspayload.getMinId()), Integer.toString(analyticspayload.getMaxId()) }); } private static void insertLog(String s, String s1, ContentResolver contentresolver) { ALog.d("Analytics,%s,%s", new Object[] { s, s1 }); AnalyticsLog analyticslog = new AnalyticsLog(); analyticslog.setTag(s); analyticslog.setLogLine(s1); s = DatabaseRecordMixins.valuesForRecord(analyticslog); contentresolver.insert(analyticslog.tableUri(), s); } public static AnalyticsPayload jsonLogs(ContentResolver contentresolver) { HashMap hashmap = new HashMap(); contentresolver = DatabaseRecordMixins.allRecordsFromUri(DatabaseRecordMixins.baseUriForAnalyticsTable(staticFactory()), staticFactory(), contentresolver); if (contentresolver == null || contentresolver.isEmpty()) { return new AnalyticsPayload(new HashMap(), 0, 0); } int i = ((AnalyticsLog)contentresolver.get(0)).getDatabaseId(); int j = ((AnalyticsLog)contentresolver.get(contentresolver.size() - 1)).getDatabaseId(); AnalyticsLog analyticslog; for (Iterator iterator = contentresolver.iterator(); iterator.hasNext(); contentresolver.add(analyticslog.getLogLine())) { analyticslog = (AnalyticsLog)iterator.next(); List list = (List)hashmap.get(analyticslog.getTag()); contentresolver = list; if (list == null) { contentresolver = new LinkedList(); hashmap.put(analyticslog.getTag(), contentresolver); } } return new AnalyticsPayload(hashmap, i, j); } private static void log(String s, Long long1, String s1, String s2, ContentResolver contentresolver) { insertLog(s, String.format("%s,%s,%d", new Object[] { s2, s1, long1 }), contentresolver); } public static void logAlarmStats(Long long1, String s, AlarmStatsHelper.AlarmStat alarmstat, ContentResolver contentresolver) { log("ALARM_STAT", long1, s, String.format("%s,%d,%d,%d,%d,%d,%s", new Object[] { alarmstat.packageName, Long.valueOf(alarmstat.totalTime), Integer.valueOf(alarmstat.wakeupsCount), Integer.valueOf(alarmstat.detailAlarmsCount), Long.valueOf(alarmstat.detailTotalTime), Integer.valueOf(alarmstat.detailWakesCount), alarmstat.detailStartedBy }), contentresolver); } public static void logBatterySession(Long long1, String s, int i, long l, long l1, int j, int k, ContentResolver contentresolver) { log("BATT", long1, s, String.format("%d,%d,%d,%d,%d", new Object[] { Integer.valueOf(i), Long.valueOf(l), Long.valueOf(l1), Integer.valueOf(j), Integer.valueOf(k) }), contentresolver); } public static void logBatteryStats(Long long1, String s, ContentResolver contentresolver) { for (Iterator iterator = BatteryStatsHelper.getBatteryStats().iterator(); iterator.hasNext();) { Object obj = iterator.next(); if (obj instanceof BatteryStatsHelper.PartialWakeLockLog) { logBatteryStatsPartialLock(long1, s, (BatteryStatsHelper.PartialWakeLockLog)obj, contentresolver); } else { logBatteryStatsStatisticsSinceLastChange(long1, s, (BatteryStatsHelper.StatisticsSinceLastCharge)obj, contentresolver); } } } private static void logBatteryStatsPartialLock(Long long1, String s, BatteryStatsHelper.PartialWakeLockLog partialwakelocklog, ContentResolver contentresolver) { log("BATT_P_WL", long1, s, String.format("%d,%s,%d", new Object[] { Integer.valueOf(partialwakelocklog.getNumberOfOccurrences()), partialwakelocklog.getProcessName(), Long.valueOf(partialwakelocklog.getTotalTime()) }), contentresolver); } private static void logBatteryStatsStatisticsSinceLastChange(Long long1, String s, BatteryStatsHelper.StatisticsSinceLastCharge statisticssincelastcharge, ContentResolver contentresolver) { log("BATT_STATS", long1, s, String.format("%s,%s,%d,%s,%d,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d", new Object[] { statisticssincelastcharge.getSystemCharts(), statisticssincelastcharge.getCurrentlyOnBattery(), Long.valueOf(statisticssincelastcharge.getTimeOnBatteryRealtime()), statisticssincelastcharge.getTimeOnBatteryRealtimePercentage(), Long.valueOf(statisticssincelastcharge.getTimeOnBatteryUptime()), statisticssincelastcharge.getTimeOnBatteryUptimePercentage(), Long.valueOf(statisticssincelastcharge.getTotalRunRealtime()), Long.valueOf(statisticssincelastcharge.getTotalRunUptime()), Long.valueOf(statisticssincelastcharge.getScreenOnTime()), Integer.valueOf(statisticssincelastcharge.getInputEvents()), Long.valueOf(statisticssincelastcharge.getScreenBrightnessesDarkTime()), Long.valueOf(statisticssincelastcharge.getScreenBrightnessesDimTime()), Long.valueOf(statisticssincelastcharge.getScreenBrightnessesMediumTime()), Long.valueOf(statisticssincelastcharge.getScreenBrightnessesLightTime()), Long.valueOf(statisticssincelastcharge.getScreenBrightnessesBrightTime()), Long.valueOf(statisticssincelastcharge.getTotalFullWakelockTime()), Long.valueOf(statisticssincelastcharge.getTotalPartialWakelockTime()) }), contentresolver); } public static void logBleError(Long long1, String s, int i, String s1, ContentResolver contentresolver) { log("BLE_E", long1, s, String.format("%s,%d", new Object[] { s1, Integer.valueOf(i) }), contentresolver); } public static void logBluetoothSession(Long long1, String s, long l, long l1, ContentResolver contentresolver) { log("BTS", long1, s, String.format("%d,%d", new Object[] { Long.valueOf(l1), Long.valueOf(l) }), contentresolver); } public static void logCpuStats(long l, String s, long l1, long l2, long l3, ContentResolver contentresolver) { log("CPU_STAT", Long.valueOf(l), s, String.format("%d,%d,%d", new Object[] { Long.valueOf(l1), Long.valueOf(l2), Long.valueOf(l3) }), contentresolver); } public static void logDeviceInfo(Long long1, String s, DeviceInfo deviceinfo, ContentResolver contentresolver) { log("DEV_INFO", long1, s, String.format("%d,%d,%d,%d,%d,%d,%d,%d,%s,%d,%d,%s,%d,,,%d,%d,%d,%d,%d,%d", new Object[] { Long.valueOf(deviceinfo.bluetoothConnectedTotalTime), Long.valueOf(deviceinfo.bluetoothDisconnectedTotalTime), Long.valueOf(deviceinfo.bluetoothOnTotalTime), Long.valueOf(deviceinfo.bluetoothOffTotalTime), Long.valueOf(deviceinfo.brightnessAutoTotalTime), Long.valueOf(deviceinfo.brightnessHighTotalTime), Long.valueOf(deviceinfo.brightnessLowTotalTime), Long.valueOf(deviceinfo.brightnessMediumTotalTime), Boolean.valueOf(deviceinfo.isDownloadingSoftwareUpdate), Long.valueOf(deviceinfo.doNotDisturbOffTotalTime), Long.valueOf(deviceinfo.doNotDisturbOnTotalTime), Boolean.valueOf(deviceinfo.isDoNotDisturbEnabled), Long.valueOf(deviceinfo.gestureOffTotalTime), Long.valueOf(deviceinfo.gestureHighTotalTime), Long.valueOf(deviceinfo.gestureMedTotalTime), Long.valueOf(deviceinfo.gestureLowTotalTime), Long.valueOf(deviceinfo.tapHighTotalTime), Long.valueOf(deviceinfo.tapMedTotalTime), Long.valueOf(deviceinfo.tapLowTotalTime) }), contentresolver); } public static void logError(Long long1, String s, Throwable throwable, ContentResolver contentresolver) { logError(long1, s, null, throwable, contentresolver); } public static void logError(Long long1, String s, HashMap hashmap, Throwable throwable, ContentResolver contentresolver) { StringWriter stringwriter = new StringWriter(); PrintWriter printwriter = new PrintWriter(stringwriter); throwable.printStackTrace(printwriter); printwriter.flush(); throwable = new StringBuilder(); if (hashmap != null) { java.util.Map.Entry entry; for (hashmap = hashmap.entrySet().iterator(); hashmap.hasNext(); throwable.append((new StringBuilder()).append(entry.getKey()).append(" = ").append(entry.getValue()).append("|").toString())) { entry = (java.util.Map.Entry)hashmap.next(); } } throwable.append(stringwriter.toString()); log("E_TAG", long1, s, throwable.toString().replace("\n", "|").replace("\t", "").replace(",", ""), contentresolver); } public static void logInstantaneousBluetooth(Long long1, String s, int i, int j, int k, ContentResolver contentresolver) { log("BTC", long1, s, String.format("%d,%d,%d", new Object[] { Integer.valueOf(j), Integer.valueOf(i), Integer.valueOf(k) }), contentresolver); } public static void logInstantaneousCharge(Long long1, String s, int i, int j, float f, ContentResolver contentresolver) { log("CHG", long1, s, String.format("%d,%d,%f", new Object[] { Integer.valueOf(j), Integer.valueOf(i), Float.valueOf(f) }), contentresolver); } public static void logInstantaneousSwUpdateStatus(Long long1, String s, String s1, String s2, int i, int j, String s3, long l, long l1, ContentResolver contentresolver) { log("UPDATE_EVT", long1, s, String.format("%s,%s,%d,%d,%s,%d,%d", new Object[] { s1, s2, Integer.valueOf(i), Integer.valueOf(j), s3, Long.valueOf(l), Long.valueOf(l1) }), contentresolver); } public static void logInterrupts(Long long1, String s, String s1, Long long2, ContentResolver contentresolver) { log("IRQ_STAT", long1, s, String.format("%s,%d", new Object[] { s1, long2 }), contentresolver); } public static void logKernelWakelocks(Long long1, String s, ContentResolver contentresolver) { KernelWakeLock kernelwakelock; for (Iterator iterator = KernelWakeLockUtils.getInstance().getKernelWakeTotal().entrySet().iterator(); iterator.hasNext(); log("WAKE_LOCK_TAG", long1, s, String.format("%s,%d,%d,%d,%d,%d,%d,%d,%d,%d", new Object[] { kernelwakelock.name, Integer.valueOf(kernelwakelock.activeCount), Integer.valueOf(kernelwakelock.eventCount), Integer.valueOf(kernelwakelock.wakeupCount), Integer.valueOf(kernelwakelock.expireCount), Integer.valueOf(kernelwakelock.activeSince), Long.valueOf(kernelwakelock.totalTime), Long.valueOf(kernelwakelock.maxTime), Long.valueOf(kernelwakelock.lastChange), Long.valueOf(kernelwakelock.preventSuspendTime) }), contentresolver)) { kernelwakelock = (KernelWakeLock)((java.util.Map.Entry)iterator.next()).getValue(); } } public static void logRemoteActionResult(Long long1, String s, Long long2, Boolean boolean1, String s1, ContentResolver contentresolver) { log("R_ACT", long1, s, String.format("%d,%s,%s", new Object[] { long2, boolean1, s1 }), contentresolver); } public static void logStreamItemsStats(Long long1, String s, String s1, String s2, String s3, int i, ContentResolver contentresolver) { log("STREAM_STAT", long1, s, String.format("%s, %s, %s, %d", new Object[] { s1, s2, s3, Integer.valueOf(i) }), contentresolver); } public static List logsOfType(String s, ContentResolver contentresolver) { String s1; Object obj; obj = null; s1 = obj; Uri uri = staticFactory().getRecordInstance().tableUri(); s1 = obj; String as[] = staticFactory().getRecordInstance().columnProjection(); s1 = obj; String s2 = staticFactory().getRecordInstance().defaultOrderBy(); s1 = obj; s = contentresolver.query(uri, as, "tag = ?", new String[] { s }, s2); s1 = s; contentresolver = DatabaseRecordMixins.recordsFromCursor(s, staticFactory()); if (s != null) { s.close(); } return contentresolver; s; if (s1 != null) { s1.close(); } throw s; } public static String[] staticColumnProjection() { return columnProjection; } public static com.olio.olios.model.record.DatabaseRecord.DatabaseRecordFactory staticFactory() { return databaseRecordFactory; } public String[] columnProjection() { return staticColumnProjection(); } public String defaultOrderBy() { return String.format("%s %s %d", new Object[] { "_id", " ASC LIMIT ", Integer.valueOf(NUMBER_OF_RECORDS) }); } public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } else { obj = (AnalyticsLog)obj; return (new EqualsBuilder()).append(logLine, ((AnalyticsLog) (obj)).logLine).append(tag, ((AnalyticsLog) (obj)).tag).isEquals(); } } public com.olio.olios.model.record.DatabaseRecord.DatabaseRecordFactory factory() { return staticFactory(); } public int getDatabaseId() { return databaseId; } public String getLogLine() { return logLine; } public String getTag() { return tag; } public Cursor handleCustomUriQuery(Uri uri, String as[], String s, String as1[], String s1) { return null; } public int hashCode() { return (new HashCodeBuilder(17, 37)).append(logLine).append(tag).toHashCode(); } public String indexColumn() { return "_id"; } public List recordFields() { return recordFields; } public void setDatabaseId(int i) { databaseId = i; } public void setLogLine(String s) { logLine = s; } public void setTag(String s) { tag = s; } public String tableName() { return "analytics_logs"; } public Uri tableUri() { return DatabaseRecordMixins.baseUriForAnalyticsTable(staticFactory()); } public String toString() { return (new StringBuilder()).append("AnalyticsLog{, tag='").append(getTag()).append('\'').append("logLine='").append(getLogLine()).append('\'').append('}').toString(); } static { NUMBER_OF_RECORDS = 20; recordFields = new LinkedList(); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(AnalyticsLog analyticslog, Cursor cursor, int i) { analyticslog.setDatabaseId(cursor.getInt(i)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((AnalyticsLog)obj, cursor, i); } public String columnName() { return "_id"; } public String createType() { return "INTEGER"; } public void writeToContentValues(AnalyticsLog analyticslog, ContentValues contentvalues) { } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AnalyticsLog)obj, contentvalues); } }); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(AnalyticsLog analyticslog, Cursor cursor, int i) { analyticslog.setTag(cursor.getString(i)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((AnalyticsLog)obj, cursor, i); } public String columnName() { return "tag"; } public String createType() { return "TEXT"; } public void writeToContentValues(AnalyticsLog analyticslog, ContentValues contentvalues) { contentvalues.put(columnName(), analyticslog.getTag()); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AnalyticsLog)obj, contentvalues); } }); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(AnalyticsLog analyticslog, Cursor cursor, int i) { analyticslog.setLogLine(cursor.getString(i)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((AnalyticsLog)obj, cursor, i); } public String columnName() { return "log_line"; } public String createType() { return "TEXT"; } public void writeToContentValues(AnalyticsLog analyticslog, ContentValues contentvalues) { contentvalues.put(columnName(), analyticslog.getLogLine()); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AnalyticsLog)obj, contentvalues); } }); } }