// 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.olios.model; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.UriMatcher; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.SystemClock; import com.olio.communication.bluetooth.channel_messages.ANCSNotification; import com.olio.data.object.alarm.Alarm; import com.olio.data.object.alarm.AlarmModel; import com.olio.data.object.assistant.ActiveRemindMeLater; import com.olio.data.object.bluetooth_status.BluetoothStatus; import com.olio.data.object.bluetooth_status.PairingProgress; import com.olio.data.object.context.PersonalAssistantContext; import com.olio.data.object.location.OlioLocation; import com.olio.data.object.media.MediaControl; import com.olio.data.object.phone.PhoneCallStatus; import com.olio.data.object.transfer.FileTransfer; import com.olio.data.object.unit.FirmwareChange; import com.olio.data.object.unit.FirmwareProfile; import com.olio.data.object.unit.SoftwareChange; import com.olio.data.object.unit.SoftwarePackage; import com.olio.olios.model.record.DatabaseRecord; import com.olio.olios.model.record.SerializedRecord; import com.olio.olios.model.strategies.CacheStrategy; import com.olio.olios.model.strategies.DatabaseStrategy; import com.olio.olios.model.strategies.PersonalAssistantContextStrategy; import com.olio.olios.model.strategies.SerializedRecordCacheStrategy; import com.olio.olios.model.strategies.SingleRowCacheStrategy; import com.olio.util.ALog; // Referenced classes of package com.olio.olios.model: // OlioDatabaseHelper, DataContract public class DataProvider extends ContentProvider { private static final int BLUETOOTH_STATUS_STRATEGY_INDEX = 1; private static final String CLEAR_DATABASE_PARAM = "clearDatabase"; private static final int DATABASE_STRATEGY_INDEX = 0; private static final int MEDIA_CONTROL_STRATEGY_INDEX = 3; public static final String NO = "NO"; public static final String OPERATION_DELETED = "deleted"; public static final String OPERATION_INSERTED = "inserted"; public static final String OPERATION_PARAMETER = "operation"; public static final String OPERATION_UPDATED = "updated"; private static final int PAIRING_PROGRESS_STRATEGY_INDEX = 2; private static final int PERSONAL_ASSISTANT_CONTEXT_STRATEGY_INDEX = 5; private static final int SERIALIZED_RECORD_STRATEGY_INDEX = 4; public static final String SHOULD_NOTIFY_KEY = "shouldNotify"; public static final String TYPE_NAME = "typeName"; public static final String YES = "YES"; private static final UriMatcher mCacheStrategyUriMatcher; private CacheStrategy mCacheStrategies[]; private OlioDatabaseHelper mDataHelper; public DataProvider() { } public static void clearDatabase(Context context) { context.getContentResolver().delete((new android.net.Uri.Builder()).scheme("content").authority("com.olio.olios.model.Data").appendQueryParameter("clearDatabase", "clearDatabase").build(), null, null); SQLiteDatabase sqlitedatabase = (new OlioDatabaseHelper(context)).getWritableDatabase(); com.olio.olios.model.record.DatabaseRecord.DatabaseRecordFactory adatabaserecordfactory[] = DataContract.getDatabaseTables(); int j = adatabaserecordfactory.length; for (int i = 0; i < j; i++) { String s = adatabaserecordfactory[i].getRecordInstance().tableName(); ALog.d("%s rows deleted from table '%s'", new Object[] { Integer.valueOf(sqlitedatabase.delete(s, "1", null)), s }); } sqlitedatabase.close(); ALog.d("%s rows deleted from table 'notifications'", new Object[] { Integer.valueOf(com.olio.communication.notifications.NotificationContract.Notifications.clearDatabase(context.getContentResolver())) }); } public int delete(Uri uri, String s, String as[]) { ALog.d("delete %s", new Object[] { uri.toString() }); if (uri.getQueryParameter("clearDatabase") != null) { uri = mCacheStrategies; int k = uri.length; for (int i = 0; i < k; i++) { uri[i].clearCache(); } return 0; } long l = SystemClock.elapsedRealtime(); CacheStrategy cachestrategy = mCacheStrategies[mCacheStrategyUriMatcher.match(uri)]; if (cachestrategy == null) { ALog.e("Delete CacheStrategy is null for uri: %s", new Object[] { uri }); } int j = cachestrategy.delete(uri, s, as); ALog.d("Analytics_new,major,db_delete,minor,%s,time,%d", new Object[] { uri.toString(), Long.valueOf(SystemClock.elapsedRealtime() - l) }); return j; } public String getType(Uri uri) { return "vnd.android.cursor.dir/vnd.olio.data"; } public Uri insert(Uri uri, ContentValues contentvalues) { ALog.d("insert %s", new Object[] { uri.toString() }); long l = SystemClock.elapsedRealtime(); CacheStrategy cachestrategy = mCacheStrategies[mCacheStrategyUriMatcher.match(uri)]; if (cachestrategy == null) { ALog.e("Insert CacheStrategy is null for uri: %s", new Object[] { uri }); } contentvalues = cachestrategy.insert(uri, contentvalues); ALog.d("Analytics_new,major,db_insert,minor,%s,time,%d", new Object[] { uri.toString(), Long.valueOf(SystemClock.elapsedRealtime() - l) }); return contentvalues; } public boolean onCreate() { mDataHelper = new OlioDatabaseHelper(getContext()); ContentResolver contentresolver = getContext().getContentResolver(); mCacheStrategies = (new CacheStrategy[] { new DatabaseStrategy(contentresolver, mDataHelper), new SingleRowCacheStrategy(contentresolver, mDataHelper, BluetoothStatus.staticFactory()), new SingleRowCacheStrategy(contentresolver, mDataHelper, PairingProgress.staticFactory()), new SingleRowCacheStrategy(contentresolver, mDataHelper, MediaControl.staticFactory()), new SerializedRecordCacheStrategy(contentresolver, mDataHelper), new PersonalAssistantContextStrategy(contentresolver, mDataHelper) }); return true; } public Cursor query(Uri uri, String as[], String s, String as1[], String s1) { long l = SystemClock.elapsedRealtime(); com.olio.olios.model.record.DatabaseRecord.DatabaseRecordFactory adatabaserecordfactory[] = DataContract.getDatabaseTables(); int j = adatabaserecordfactory.length; for (int i = 0; i < j; i++) { Cursor cursor = adatabaserecordfactory[i].getRecordInstance().handleCustomUriQuery(uri, as, s, as1, s1); if (cursor != null) { return cursor; } } CacheStrategy cachestrategy = mCacheStrategies[mCacheStrategyUriMatcher.match(uri)]; if (cachestrategy == null) { ALog.e("Query CacheStrategy is null for uri: %s", new Object[] { uri }); } as = cachestrategy.query(uri, as, s, as1, s1); ALog.v("Analytics_new,major,db_query,minor,%s,time,%d", new Object[] { uri.toString(), Long.valueOf(SystemClock.elapsedRealtime() - l) }); return as; } public int update(Uri uri, ContentValues contentvalues, String s, String as[]) { long l = SystemClock.elapsedRealtime(); ALog.d((new StringBuilder()).append("update called for uri: ").append(uri.toString()).toString(), new Object[0]); CacheStrategy cachestrategy = mCacheStrategies[mCacheStrategyUriMatcher.match(uri)]; if (cachestrategy == null) { ALog.e("Update CacheStrategy is null for uri: %s", new Object[] { uri }); } int i = cachestrategy.update(uri, contentvalues, s, as); ALog.d("Analytics_new,major,db_update,minor,%s,time,%d", new Object[] { uri.toString(), Long.valueOf(SystemClock.elapsedRealtime() - l) }); return i; } static { mCacheStrategyUriMatcher = new UriMatcher(-1); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", BluetoothStatus.staticFactory().getRecordInstance().tableName(), 1); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(BluetoothStatus.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 1); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", PairingProgress.staticFactory().getRecordInstance().tableName(), 2); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(PairingProgress.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 2); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", MediaControl.staticFactory().getRecordInstance().tableName(), 3); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(MediaControl.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 3); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", SerializedRecord.staticFactory().getRecordInstance().tableName(), 4); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(SerializedRecord.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 4); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", PersonalAssistantContext.staticFactory().getRecordInstance().tableName(), 5); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(PersonalAssistantContext.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 5); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", OlioLocation.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(OlioLocation.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", Alarm.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(Alarm.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", SoftwareChange.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(SoftwareChange.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", SoftwarePackage.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(SoftwarePackage.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", FileTransfer.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(FileTransfer.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", FirmwareChange.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(FirmwareChange.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", FirmwareProfile.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(FirmwareProfile.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", ANCSNotification.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(ANCSNotification.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", PhoneCallStatus.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(PhoneCallStatus.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", ActiveRemindMeLater.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(ActiveRemindMeLater.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", AlarmModel.staticFactory().getRecordInstance().tableName(), 0); mCacheStrategyUriMatcher.addURI("com.olio.olios.model.Data", (new StringBuilder()).append(AlarmModel.staticFactory().getRecordInstance().tableName()).append("/#").toString(), 0); } }