// 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.record; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import com.olio.communication.filetransfer.Utilities; import com.olio.util.ALog; import java.io.Serializable; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedList; import java.util.List; // Referenced classes of package com.olio.olios.model.record: // DateAccessibleDatabaseRecord, DatabaseRecordMixins, DatabaseRecord public class SerializedRecord implements DateAccessibleDatabaseRecord { public static interface SerializedRecordObject extends Serializable { public abstract SerializedRecordObject getDefaultObject(); public abstract String getObjectId(); public abstract long getVersionNumber(); public abstract void save(ContentResolver contentresolver); public abstract void setDateCreated(Long long1); public abstract void setDateModified(Long long1); public abstract void setVersionNumber(long l); public abstract String typeName(); } public static final String HASH = "hash"; public static final String OBJECT_BLOB = "object_blob"; public static final String OBJECT_ID = "object_id"; public static final String TABLE_NAME = "serialized_records"; public static final String TYPE = "type"; public static final String UNIT_ID = "unit_id"; private static final List blobFields; private static String columnProjection[]; private static DatabaseRecord.DatabaseRecordFactory databaseRecordFactory = new DatabaseRecord.DatabaseRecordFactory() { public DatabaseRecord getRecordInstance() { return new SerializedRecord(); } }; private static final List recordFields; private int databaseId; private Long dateCreated; private Long dateModified; private boolean encodeSerializedObjects; private String hash; private String id; private SerializedRecordObject object; private byte serializedRecordObject[]; private String type; private String unitId; public SerializedRecord() { encodeSerializedObjects = true; } public SerializedRecord(String s, SerializedRecordObject serializedrecordobject) { encodeSerializedObjects = true; unitId = s; object = serializedrecordobject; type = serializedrecordobject.typeName(); } public static List allRecords(ContentResolver contentresolver) { return DatabaseRecordMixins.allRecordsFromUri(staticFactory().getRecordInstance().tableUri(), staticFactory(), contentresolver); } public static void delete(SerializedRecordObject serializedrecordobject, String s, ContentResolver contentresolver) { s = uriForObject(serializedrecordobject.getObjectId(), s, contentresolver); String s1 = serializedrecordobject.getObjectId(); if (s == null) { serializedrecordobject = "No URI"; } else { serializedrecordobject = s.toString(); } ALog.d("delete %s %s", new Object[] { s1, serializedrecordobject }); if (s != null) { contentresolver.delete(s, null, null); } } public static int deleteAll(ContentResolver contentresolver) { return contentresolver.delete(DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon().build(), null, null); } public static int deleteByType(String s, ContentResolver contentresolver) { if (s == null || contentresolver == null) { return 0; } android.net.Uri.Builder builder1 = DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon(); android.net.Uri.Builder builder = builder1; if (s != null) { builder = builder1.appendQueryParameter("type", s); ALog.d("deleteByType %s", new Object[] { s }); } return contentresolver.delete(builder.build(), null, null); } public static SerializedRecord firstSerializedRecord(String s, String s1, ContentResolver contentresolver) { android.net.Uri.Builder builder1 = DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon(); android.net.Uri.Builder builder = builder1; if (s1 != null) { builder = builder1.appendQueryParameter("unitId", s1); } s1 = builder; if (s != null) { s1 = builder.appendQueryParameter("objectId", s); } s1 = s1.build(); s = null; s1 = contentresolver.query(s1, staticColumnProjection(), null, null, staticFactory().getRecordInstance().defaultOrderBy()); s = s1; int i = s1.getCount(); if (i != 0) goto _L2; else goto _L1 _L1: if (s1 != null) { s1.close(); } s = null; _L4: return s; _L2: s = s1; if (s1.getCount() < 0) { break; /* Loop/switch isn't completed */ } s = s1; s1.moveToPosition(-1); s = s1; contentresolver = (SerializedRecord)DatabaseRecordMixins.recordsFromCursor(s1, staticFactory()).get(0); s = contentresolver; if (s1 != null) { s1.close(); return contentresolver; } if (true) goto _L4; else goto _L3 _L3: if (s1 != null) { s1.close(); } return null; s1; if (s != null) { s.close(); } throw s1; } private void generateHash() { hash = Utilities.md5Hash(serializedRecordObject); } public static SerializedRecordObject get(String s, String s1, ContentResolver contentresolver) { Object obj; Object obj1; obj1 = DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon(); obj = obj1; if (s1 != null) { obj = ((android.net.Uri.Builder) (obj1)).appendQueryParameter("unitId", s1); } obj1 = obj; if (s != null) { obj1 = ((android.net.Uri.Builder) (obj)).appendQueryParameter("objectId", s); } obj1 = ((android.net.Uri.Builder) (obj1)).build(); obj = null; contentresolver = contentresolver.query(((Uri) (obj1)), staticColumnProjection(), null, null, staticFactory().getRecordInstance().defaultOrderBy()); if (contentresolver != null) goto _L2; else goto _L1 _L1: if (contentresolver != null) { contentresolver.close(); } s = null; _L4: return s; _L2: obj = contentresolver; int i = contentresolver.getCount(); if (i == 0) { if (contentresolver != null) { contentresolver.close(); } return null; } obj = contentresolver; if (contentresolver.getCount() != 1) { break; /* Loop/switch isn't completed */ } obj = contentresolver; s1 = ((SerializedRecord)DatabaseRecordMixins.recordsFromCursor(contentresolver, staticFactory()).get(0)).getObject(); s = s1; if (contentresolver != null) { contentresolver.close(); return s1; } if (true) goto _L4; else goto _L3 _L3: obj = contentresolver; ALog.e((new StringBuilder()).append("More than one record of objectId ").append(s).append(" unitId ").append(s1).append(" this should never happen - uri: ").append(obj1).toString(), new Object[0]); if (contentresolver != null) { contentresolver.close(); } return null; s; if (obj != null) { ((Cursor) (obj)).close(); } throw s; } public static List getByType(String s, String s1, ContentResolver contentresolver) { android.net.Uri.Builder builder1 = DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon(); android.net.Uri.Builder builder = builder1; if (s1 != null) { builder = builder1.appendQueryParameter("unitId", s1); } s1 = builder; if (s != null) { s1 = builder.appendQueryParameter("type", s); } s1 = s1.build(); s = null; contentresolver = contentresolver.query(s1, staticColumnProjection(), null, null, staticFactory().getRecordInstance().defaultOrderBy()); s = contentresolver; int i = contentresolver.getCount(); if (i != 0) goto _L2; else goto _L1 _L1: if (contentresolver != null) { contentresolver.close(); } s = null; _L4: return s; _L2: s = contentresolver; s1 = DatabaseRecordMixins.recordsFromCursor(contentresolver, staticFactory()); s = s1; if (contentresolver == null) goto _L4; else goto _L3 _L3: contentresolver.close(); return s1; s1; if (s != null) { s.close(); } throw s1; } public static SerializedRecord recordForUri(Uri uri, ContentResolver contentresolver) { if (uri.getPathSegments().size() != 2) { return null; } else { return (SerializedRecord)DatabaseRecordMixins.firstRecordFromUri(uri, staticFactory(), contentresolver); } } public static String recordHashForUri(Uri uri, ContentResolver contentresolver) { if (uri.getPathSegments().size() == 2) { if ((uri = (SerializedRecord)DatabaseRecordMixins.firstRecordFromUriWithFields(uri, staticFactory(), new HashSet(Arrays.asList(new String[] { "hash" })), contentresolver)) != null) { return ((SerializedRecord) (uri)).hash; } } return null; } public static void save(SerializedRecordObject serializedrecordobject, String s, int i, ContentResolver contentresolver) { save(serializedrecordobject, s, i, contentresolver, true); } public static void save(SerializedRecordObject serializedrecordobject, String s, int i, ContentResolver contentresolver, boolean flag) { serializedrecordobject.setVersionNumber(serializedrecordobject.getVersionNumber() + (long)i); Object obj1 = firstSerializedRecord(serializedrecordobject.getObjectId(), s, contentresolver); Object obj; if (obj1 != null) { obj1.object = serializedrecordobject; obj1.type = serializedrecordobject.typeName(); obj = DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon().appendPath(Integer.toString(((SerializedRecord) (obj1)).getDatabaseId())).build(); s = ((String) (obj1)); } else { obj = new SerializedRecord(s, serializedrecordobject); obj1 = uriForObject(serializedrecordobject.getObjectId(), s, contentresolver); s = ((String) (obj)); obj = obj1; } ALog.d("SerializedRecord.save - objectId = %s, uri = %s", new Object[] { serializedrecordobject.getObjectId(), obj }); if (flag) { obj1 = "YES"; } else { obj1 = "NO"; } if (obj == null) { s = DatabaseRecordMixins.valuesForRecord(s); contentresolver.insert(DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon().appendQueryParameter("shouldNotify", ((String) (obj1))).appendQueryParameter("typeName", serializedrecordobject.typeName()).build(), s); return; } else { contentresolver.update(((Uri) (obj)).buildUpon().appendQueryParameter("shouldNotify", ((String) (obj1))).appendQueryParameter("typeName", serializedrecordobject.typeName()).build(), DatabaseRecordMixins.valuesForRecordFromFields(s, recordFields), null, null); return; } } public static String[] staticColumnProjection() { return columnProjection; } public static DatabaseRecord.DatabaseRecordFactory staticFactory() { return databaseRecordFactory; } public static Uri uriForObject(String s, String s1, ContentResolver contentresolver) { Object obj; Object obj1; obj1 = DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon(); obj = obj1; if (s1 != null) { obj = ((android.net.Uri.Builder) (obj1)).appendQueryParameter("unitId", s1); } obj1 = obj; if (s != null) { obj1 = ((android.net.Uri.Builder) (obj)).appendQueryParameter("objectId", s); } obj1 = ((android.net.Uri.Builder) (obj1)).build(); obj = null; obj1 = contentresolver.query(((Uri) (obj1)), staticColumnProjection(), null, null, staticFactory().getRecordInstance().defaultOrderBy()); contentresolver = s; int i; if (s == null) { contentresolver = "null"; } s = s1; if (s1 == null) { s = "null"; } goto _L1 _L10: if (obj1 == null) goto _L3; else goto _L2 _L2: obj = obj1; i = ((Cursor) (obj1)).getCount(); _L7: obj = obj1; ALog.d("object=%s unitId=%s cursor count=%d", new Object[] { contentresolver, s, Integer.valueOf(i) }); if (obj1 == null) goto _L5; else goto _L4 _L4: obj = obj1; i = ((Cursor) (obj1)).getCount(); if (i != 0) goto _L6; else goto _L5 _L5: if (obj1 != null) { ((Cursor) (obj1)).close(); } s = null; _L8: return s; _L3: i = 0; goto _L7 _L6: obj = obj1; if (((Cursor) (obj1)).getCount() < 0) { break MISSING_BLOCK_LABEL_276; } obj = obj1; ((Cursor) (obj1)).moveToFirst(); obj = obj1; i = DatabaseRecordMixins.idFromCursor(((Cursor) (obj1))); obj = obj1; ALog.d("id = %d", new Object[] { Integer.valueOf(i) }); obj = obj1; s1 = DatabaseRecordMixins.baseUriForTable(staticFactory()).buildUpon().appendPath(Integer.toString(i)).build(); s = s1; if (obj1 != null) { ((Cursor) (obj1)).close(); return s1; } goto _L8 if (obj1 != null) { ((Cursor) (obj1)).close(); } ALog.w("problem getting URI", new Object[0]); return null; s; if (obj != null) { ((Cursor) (obj)).close(); } throw s; _L1: if (true) goto _L10; else goto _L9 _L9: } public String[] columnProjection() { return staticColumnProjection(); } public String defaultOrderBy() { return null; } public DatabaseRecord.DatabaseRecordFactory factory() { return staticFactory(); } public int getDatabaseId() { return databaseId; } public Long getDateCreated() { return dateCreated; } public Long getDateModified() { return dateModified; } public String getHash() { return hash; } public String getId() { return id; } public SerializedRecordObject getObject() { return object; } public String getType() { return type; } public String getUnitId() { return unitId; } public Cursor handleCustomUriQuery(Uri uri, String as[], String s, String as1[], String s1) { return null; } public String indexColumn() { return "_id"; } public List recordFields() { return recordFields; } public void setDatabaseId(int i) { databaseId = i; } public void setDateCreated(Long long1) { dateCreated = long1; } public void setDateModified(Long long1) { dateModified = long1; } public void setEncodeSerializedObjects(boolean flag) { encodeSerializedObjects = flag; } public void setHash(String s) { hash = s; } public void setId(String s) { id = s; } public void setObject(SerializedRecordObject serializedrecordobject) { object = serializedrecordobject; } public void setType(String s) { type = s; } public void setUnitId(String s) { unitId = s; } public boolean shouldEncodeSerializedObjects() { return encodeSerializedObjects; } public String tableName() { return "serialized_records"; } public Uri tableUri() { return DatabaseRecordMixins.baseUriForTable(factory()); } public String toString() { return (new StringBuilder()).append("SerializedRecord{unitId='").append(unitId).append('\'').append(", object=").append(object).append(", type='").append(type).append('\'').append(", databaseId=").append(databaseId).append(", hash='").append(hash).append('\'').append(", id='").append(id).append('\'').append('}').toString(); } static { recordFields = new LinkedList(); recordFields.add(new DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(SerializedRecord serializedrecord, Cursor cursor, int i) { serializedrecord.setUnitId(cursor.getString(i)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)obj, cursor, i); } public String columnName() { return "unit_id"; } public String createType() { return "TEXT"; } public void writeToContentValues(SerializedRecord serializedrecord, ContentValues contentvalues) { contentvalues.put(columnName(), serializedrecord.getUnitId()); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((SerializedRecord)obj, contentvalues); } }); recordFields.add(new DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(SerializedRecord serializedrecord, Cursor cursor, int i) { serializedrecord.setType(cursor.getString(i)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)obj, cursor, i); } public String columnName() { return "type"; } public String createType() { return "TEXT"; } public void writeToContentValues(SerializedRecord serializedrecord, ContentValues contentvalues) { contentvalues.put(columnName(), serializedrecord.getType()); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((SerializedRecord)obj, contentvalues); } }); recordFields.add(new DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(SerializedRecord serializedrecord, Cursor cursor, int i) { serializedrecord.serializedRecordObject = cursor.getBlob(i); serializedrecord.generateHash(); serializedrecord.setObject((SerializedRecordObject)com.olio.communication.notifications.Utilities.decode(serializedrecord.serializedRecordObject)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)obj, cursor, i); } public String columnName() { return "object_blob"; } public String createType() { return "BLOB"; } public void writeToContentValues(SerializedRecord serializedrecord, ContentValues contentvalues) { if (serializedrecord.shouldEncodeSerializedObjects()) { serializedrecord.serializedRecordObject = com.olio.communication.notifications.Utilities.encodeWithSerialization(serializedrecord.getObject()); serializedrecord.generateHash(); } else { serializedrecord.setEncodeSerializedObjects(true); } contentvalues.put(columnName(), serializedrecord.serializedRecordObject); contentvalues.put("hash", serializedrecord.hash); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((SerializedRecord)obj, contentvalues); } }); recordFields.add(new DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(SerializedRecord serializedrecord, Cursor cursor, int i) { serializedrecord.setDatabaseId(cursor.getInt(i)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)obj, cursor, i); } public String columnName() { return "_id"; } public String createType() { return "INTEGER"; } public void writeToContentValues(SerializedRecord serializedrecord, ContentValues contentvalues) { } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((SerializedRecord)obj, contentvalues); } }); recordFields.add(new DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(SerializedRecord serializedrecord, Cursor cursor, int i) { serializedrecord.setId(cursor.getString(i)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)obj, cursor, i); } public String columnName() { return "object_id"; } public String createType() { return "TEXT"; } public void writeToContentValues(SerializedRecord serializedrecord, ContentValues contentvalues) { contentvalues.put(columnName(), serializedrecord.getObject().getObjectId()); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((SerializedRecord)obj, contentvalues); } }); recordFields.add(new DatabaseRecord.RecordFieldSet() { public void assignFromCursorColumn(SerializedRecord serializedrecord, Cursor cursor, int i) { serializedrecord.setHash(cursor.getString(i)); } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)obj, cursor, i); } public String columnName() { return "hash"; } public String createType() { return "TEXT"; } public void writeToContentValues(SerializedRecord serializedrecord, ContentValues contentvalues) { } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((SerializedRecord)obj, contentvalues); } }); recordFields.add(new DatabaseRecordMixins.DateCreatedRecordFieldSet() { public volatile void assignFromCursorColumn(DateAccessibleDatabaseRecord dateaccessibledatabaserecord, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)dateaccessibledatabaserecord, cursor, i); } public void assignFromCursorColumn(SerializedRecord serializedrecord, Cursor cursor, int i) { super.assignFromCursorColumn(serializedrecord, cursor, i); if (serializedrecord.object != null) { serializedrecord.object.setDateCreated(Long.valueOf(cursor.getLong(i))); } } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)obj, cursor, i); } }); recordFields.add(new DatabaseRecordMixins.DateModifiedRecordFieldSet() { public volatile void assignFromCursorColumn(DateAccessibleDatabaseRecord dateaccessibledatabaserecord, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)dateaccessibledatabaserecord, cursor, i); } public void assignFromCursorColumn(SerializedRecord serializedrecord, Cursor cursor, int i) { super.assignFromCursorColumn(serializedrecord, cursor, i); if (serializedrecord.object != null) { serializedrecord.object.setDateModified(Long.valueOf(cursor.getLong(i))); } } public volatile void assignFromCursorColumn(Object obj, Cursor cursor, int i) { assignFromCursorColumn((SerializedRecord)obj, cursor, i); } }); columnProjection = DatabaseRecordMixins.columnProjectionFromRecordFields(recordFields); blobFields = DatabaseRecordMixins.recordFieldsForColumnNames(new HashSet(Arrays.asList(new String[] { "object_blob", "hash" })), recordFields); } /* static byte[] access$002(SerializedRecord serializedrecord, byte abyte0[]) { serializedrecord.serializedRecordObject = abyte0; return abyte0; } */ }