// 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.alarm; import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.text.SpannableStringBuilder; import android.text.style.ForegroundColorSpan; import com.olio.olios.model.record.DatabaseRecord; import com.olio.olios.model.record.DatabaseRecordMixins; import com.olio.util.ALog; import java.lang.annotation.Annotation; import java.util.Arrays; import java.util.LinkedList; import java.util.List; public class AlarmModel implements DatabaseRecord { public static interface Day extends Annotation { } public static interface SingleDay extends Annotation { } private static final String ALARM_TONE = "alarm_tone"; public static final int ALL = 127; public static final List DAY_OPTIONS = Arrays.asList(new String[] { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT", "ONCE" }); private static final String ENABLED = "enabled"; public static final int FRIDAY = 32; public static final int MONDAY = 2; private static final String NAME = "name"; public static final int NONE = 0; private static final String OPTION_ALL_DAYS_SHORT = "SMTWTFS"; private static final int OPTION_DISABLED = 0x66ffffff; private static final int OPTION_ENABLED = -1; public static final String OPTION_EVERYDAY = "EVERYDAY"; public static final String OPTION_FRIDAY = "FRI"; public static final String OPTION_MONDAY = "MON"; public static final String OPTION_ONCE = "ONCE"; public static final String OPTION_SATURDAY = "SAT"; public static final String OPTION_SUNDAY = "SUN"; public static final String OPTION_THURSDAY = "THU"; public static final String OPTION_TUESDAY = "TUE"; public static final String OPTION_WEDNESDAY = "WED"; public static final String OPTION_WEEKDAYS = "WEEKDAYS"; public static final String OPTION_WEEKEND = "WEEKEND"; private static final String REPEATING_DAYS = "repeating_days"; public static final int SATURDAY = 64; public static final int SUNDAY = 1; public static final String TABLE_NAME = "clock_alarms"; public static final int THURSDAY = 16; private static final String TIME_HOUR = "time_hour"; private static final String TIME_IN_MILLISECONDS = "time_in_milliseconds"; private static final String TIME_MINUTE = "time_minute"; public static final int TUESDAY = 4; public static final int WEDNESDAY = 8; public static final int WEEKDAYS = 62; public static final int WEEKENDS = 65; 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 AlarmModel(); } }; private static final List recordFields; private Uri alarmTone; private boolean enabled; private String name; private int repeatingDays; private int timeHour; private long timeInMilliseconds; private int timeMinute; public AlarmModel() { } public static int countDaysSet(int i) { i -= i >>> 1 & 0x55555555; i = (i & 0x33333333) + (i >>> 2 & 0x33333333); return ((i >>> 4) + i & 0xf0f0f0f) * 0x1010101 >>> 24; } public static int fromCalendarConstant(int i) { switch (i) { default: return 0; case 1: // '\001' return 1; case 2: // '\002' return 2; case 3: // '\003' return 4; case 4: // '\004' return 8; case 5: // '\005' return 16; case 6: // '\006' return 32; case 7: // '\007' return 64; } } public static AlarmModel getAlarmModel(ContentResolver contentresolver) { Cursor cursor = contentresolver.query(DatabaseRecordMixins.baseUriForTable(staticFactory()), staticColumnProjection(), null, null, null); if (cursor.getCount() > 0) { contentresolver = (AlarmModel)DatabaseRecordMixins.recordsFromCursor(cursor, staticFactory()).get(0); } else { contentresolver = new AlarmModel(); contentresolver.setEnabled(false); contentresolver.setTimeHour(0); contentresolver.setTimeMinute(0); } if (cursor != null) { cursor.close(); } return contentresolver; } public static boolean isDaySet(int i, int j) { return (i & j) != 0; } public static boolean isSingleDaySet(int i) { return i != 0 && (i - 1 & i) == 0; } public static int nextDay(int i) { if (i == 64) { return 1; } else { return i << 1; } } public static int previousDay(int i) { if (i == 1) { return 64; } else { return i >>> 1; } } public static String[] staticColumnProjection() { return columnProjection; } public static com.olio.olios.model.record.DatabaseRecord.DatabaseRecordFactory staticFactory() { return databaseRecordFactory; } public static int toCalendarConstant(int i) { switch (i) { default: return -1; case 1: // '\001' return 1; case 2: // '\002' return 2; case 4: // '\004' return 3; case 8: // '\b' return 4; case 16: // '\020' return 5; case 32: // ' ' return 6; case 64: // '@' return 7; } } public static CharSequence toCalendarString(int i) { i; JVM INSTR lookupswitch 11: default 100 // 0: 186 // 1: 163 // 2: 168 // 4: 171 // 8: 174 // 16: 177 // 32: 180 // 62: 192 // 64: 183 // 65: 195 // 127: 189; goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L12 _L1: SpannableStringBuilder spannablestringbuilder; int j; spannablestringbuilder = new SpannableStringBuilder("SMTWTFS"); j = 0; _L15: Object obj = spannablestringbuilder; if (j >= 7) goto _L14; else goto _L13 _L13: boolean flag; if ((i & 1 << j) > 0) { flag = true; } else { flag = false; } if (flag) { obj = new ForegroundColorSpan(-1); } else { obj = new ForegroundColorSpan(0x66ffffff); } spannablestringbuilder.setSpan(obj, j, j + 1, 17); j++; if (true) goto _L15; else goto _L14 _L3: obj = "SUN"; _L14: return ((CharSequence) (obj)); _L4: return "MON"; _L5: return "TUE"; _L6: return "WED"; _L7: return "THU"; _L8: return "FRI"; _L10: return "SAT"; _L2: return "ONCE"; _L12: return "EVERYDAY"; _L9: return "WEEKDAYS"; _L11: return "WEEKEND"; } public static int toDay(String s) { byte byte0; int i; i = 1; byte0 = -1; s.hashCode(); JVM INSTR lookupswitch 7: default 76 // 69885: 194 // 76524: 138 // 81862: 208 // 82476: 124 // 83041: 180 // 83428: 152 // 85814: 166; goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 _L1: break; /* Loop/switch isn't completed */ _L4: break MISSING_BLOCK_LABEL_208; _L9: switch (byte0) { default: i = 0; // fall through case 0: // '\0' return i; case 1: // '\001' return 2; case 2: // '\002' return 4; case 3: // '\003' return 8; case 4: // '\004' return 16; case 5: // '\005' return 32; case 6: // '\006' return 64; } _L5: if (s.equals("SUN")) { byte0 = 0; } goto _L9 _L3: if (s.equals("MON")) { byte0 = 1; } goto _L9 _L7: if (s.equals("TUE")) { byte0 = 2; } goto _L9 _L8: if (s.equals("WED")) { byte0 = 3; } goto _L9 _L6: if (s.equals("THU")) { byte0 = 4; } goto _L9 _L2: if (s.equals("FRI")) { byte0 = 5; } goto _L9 if (s.equals("SAT")) { byte0 = 6; } goto _L9 } public String[] columnProjection() { return staticColumnProjection(); } public String defaultOrderBy() { return null; } public com.olio.olios.model.record.DatabaseRecord.DatabaseRecordFactory factory() { return staticFactory(); } public Uri getAlarmTone() { return alarmTone; } public int[] getAllRepeatingDays() { int l = countDaysSet(repeatingDays); if (l != 0) goto _L2; else goto _L1 _L1: int ai[] = new int[0]; _L4: return ai; _L2: int ai1[]; int i; int j; ai1 = new int[l]; j = 0; i = 0; _L6: ai = ai1; if (j >= 7) goto _L4; else goto _L3 _L3: ai = ai1; if (i >= l) goto _L4; else goto _L5 _L5: if ((repeatingDays & 1 << j) > 0) { int k = i + 1; ai1[i] = j + 1; i = k; } j++; goto _L6 } public String getName() { return name; } public int getRepeatingDays() { return repeatingDays; } public int getTimeHour() { return timeHour; } public long getTimeInMilliseconds() { return timeInMilliseconds; } public int getTimeMinute() { return timeMinute; } public Cursor handleCustomUriQuery(Uri uri, String as[], String s, String as1[], String s1) { return null; } public String indexColumn() { return "_id"; } public boolean isAllWeek() { return (repeatingDays & 0x7f) == 127; } public boolean isAllWeekdays() { return (repeatingDays & 0x3e) == 62 && (repeatingDays & 0x41) == 0; } public boolean isAllWeekend() { return (repeatingDays & 0x3e) == 0 && (repeatingDays & 0x41) == 65; } public boolean isEnabled() { return enabled; } public boolean isOnce() { return repeatingDays == 0; } public boolean isRepeatingDay(int i) { return isDaySet(repeatingDays, i); } public boolean isRepeatingWeekly() { return repeatingDays != 0; } public boolean isSingleDay() { return isSingleDaySet(repeatingDays); } public List recordFields() { return recordFields; } public void save(ContentResolver contentresolver) { ContentValues contentvalues = DatabaseRecordMixins.valuesForRecord(this); Uri uri = DatabaseRecordMixins.baseUriForTable(factory()); int i = contentresolver.update(uri, contentvalues, String.format("%s = '%s'", new Object[] { "_id", Integer.valueOf(1) }), null); if (i == 0) { contentresolver.insert(uri, contentvalues); } else if (i > 1) { ALog.e("Attempting to save ActiveRemindeMeLater and there is more than one row in the table.", new Object[0]); throw new RuntimeException("Attempting to save ActiveRemindeMeLater and there is more than one row in the table."); } } public void setAlarmTone(Uri uri) { alarmTone = uri; } public void setEnabled(boolean flag) { enabled = flag; } public void setName(String s) { name = s; } public void setRepeatingDay(int i, boolean flag) { if (flag) { repeatingDays = repeatingDays | i; return; } else { repeatingDays = repeatingDays & ~i; return; } } public void setRepeatingDays(int i) { repeatingDays = i; } public void setTimeHour(int i) { timeHour = i; } public void setTimeInMilliseconds(long l) { timeInMilliseconds = l; } public void setTimeMinute(int i) { timeMinute = i; } public String tableName() { return "clock_alarms"; } public Uri tableUri() { return DatabaseRecordMixins.baseUriForTable(staticFactory()); } public String toString() { return String.format("Hour: %d - Minutes: %d - Days: %s - Enabled: %s,", new Object[] { Integer.valueOf(timeHour), Integer.valueOf(timeMinute), toCalendarString(repeatingDays), Boolean.valueOf(enabled) }); } static { recordFields = new LinkedList(); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordField() { public void assignFromCursor(AlarmModel alarmmodel, Cursor cursor) { alarmmodel.setTimeHour(cursor.getInt(0)); } public volatile void assignFromCursor(Object obj, Cursor cursor) { assignFromCursor((AlarmModel)obj, cursor); } public String columnName() { return "time_hour"; } public String createType() { return "INTEGER"; } public void writeToContentValues(AlarmModel alarmmodel, ContentValues contentvalues) { contentvalues.put(columnName(), Integer.valueOf(alarmmodel.getTimeHour())); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AlarmModel)obj, contentvalues); } }); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordField() { public void assignFromCursor(AlarmModel alarmmodel, Cursor cursor) { alarmmodel.setTimeMinute(cursor.getInt(1)); } public volatile void assignFromCursor(Object obj, Cursor cursor) { assignFromCursor((AlarmModel)obj, cursor); } public String columnName() { return "time_minute"; } public String createType() { return "INTEGER"; } public void writeToContentValues(AlarmModel alarmmodel, ContentValues contentvalues) { contentvalues.put(columnName(), Integer.valueOf(alarmmodel.getTimeMinute())); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AlarmModel)obj, contentvalues); } }); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordField() { public void assignFromCursor(AlarmModel alarmmodel, Cursor cursor) { alarmmodel.setTimeInMilliseconds(cursor.getLong(2)); } public volatile void assignFromCursor(Object obj, Cursor cursor) { assignFromCursor((AlarmModel)obj, cursor); } public String columnName() { return "time_in_milliseconds"; } public String createType() { return "INTEGER"; } public void writeToContentValues(AlarmModel alarmmodel, ContentValues contentvalues) { contentvalues.put(columnName(), Long.valueOf(alarmmodel.getTimeInMilliseconds())); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AlarmModel)obj, contentvalues); } }); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordField() { public void assignFromCursor(AlarmModel alarmmodel, Cursor cursor) { alarmmodel.setRepeatingDays(cursor.getInt(3)); } public volatile void assignFromCursor(Object obj, Cursor cursor) { assignFromCursor((AlarmModel)obj, cursor); } public String columnName() { return "repeating_days"; } public String createType() { return "INTEGER"; } public void writeToContentValues(AlarmModel alarmmodel, ContentValues contentvalues) { contentvalues.put(columnName(), Integer.valueOf(alarmmodel.getRepeatingDays())); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AlarmModel)obj, contentvalues); } }); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordField() { public void assignFromCursor(AlarmModel alarmmodel, Cursor cursor) { alarmmodel.setAlarmTone(Uri.parse(cursor.getString(4))); } public volatile void assignFromCursor(Object obj, Cursor cursor) { assignFromCursor((AlarmModel)obj, cursor); } public String columnName() { return "alarm_tone"; } public String createType() { return "TEXT"; } public void writeToContentValues(AlarmModel alarmmodel, ContentValues contentvalues) { if (alarmmodel.getAlarmTone() != null) { contentvalues.put(columnName(), alarmmodel.getAlarmTone().toString()); return; } else { contentvalues.put(columnName(), ""); return; } } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AlarmModel)obj, contentvalues); } }); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordField() { public void assignFromCursor(AlarmModel alarmmodel, Cursor cursor) { alarmmodel.setName(cursor.getString(5)); } public volatile void assignFromCursor(Object obj, Cursor cursor) { assignFromCursor((AlarmModel)obj, cursor); } public String columnName() { return "name"; } public String createType() { return "TEXT"; } public void writeToContentValues(AlarmModel alarmmodel, ContentValues contentvalues) { contentvalues.put(columnName(), alarmmodel.getName()); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AlarmModel)obj, contentvalues); } }); recordFields.add(new com.olio.olios.model.record.DatabaseRecord.RecordField() { public void assignFromCursor(AlarmModel alarmmodel, Cursor cursor) { boolean flag = true; if (cursor.getInt(6) != 1) { flag = false; } alarmmodel.setEnabled(flag); } public volatile void assignFromCursor(Object obj, Cursor cursor) { assignFromCursor((AlarmModel)obj, cursor); } public String columnName() { return "enabled"; } public String createType() { return "INTEGER"; } public void writeToContentValues(AlarmModel alarmmodel, ContentValues contentvalues) { String s = columnName(); int i; if (alarmmodel.isEnabled()) { i = 1; } else { i = 0; } contentvalues.put(s, Integer.valueOf(i)); } public volatile void writeToContentValues(Object obj, ContentValues contentvalues) { writeToContentValues((AlarmModel)obj, contentvalues); } }); columnProjection = DatabaseRecordMixins.columnProjectionFromRecordFields(recordFields); } }