diff options
Diffstat (limited to 'src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java')
-rw-r--r-- | src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java | 309 |
1 files changed, 0 insertions, 309 deletions
diff --git a/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java b/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java deleted file mode 100644 index c0145843b..000000000 --- a/src/com/android/gallery3d/gadget/WidgetDatabaseHelper.java +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.gallery3d.gadget; - -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteException; -import android.database.sqlite.SQLiteOpenHelper; -import android.graphics.Bitmap; -import android.net.Uri; -import android.util.Log; - -import com.android.gallery3d.common.Utils; - -import java.io.ByteArrayOutputStream; -import java.util.ArrayList; -import java.util.List; - -public class WidgetDatabaseHelper extends SQLiteOpenHelper { - private static final String TAG = "PhotoDatabaseHelper"; - private static final String DATABASE_NAME = "launcher.db"; - - // Increment the database version to 5. In version 5, we - // add a column in widgets table to record relative paths. - private static final int DATABASE_VERSION = 5; - - private static final String TABLE_WIDGETS = "widgets"; - - private static final String FIELD_APPWIDGET_ID = "appWidgetId"; - private static final String FIELD_IMAGE_URI = "imageUri"; - private static final String FIELD_PHOTO_BLOB = "photoBlob"; - private static final String FIELD_WIDGET_TYPE = "widgetType"; - private static final String FIELD_ALBUM_PATH = "albumPath"; - private static final String FIELD_RELATIVE_PATH = "relativePath"; - - public static final int TYPE_SINGLE_PHOTO = 0; - public static final int TYPE_SHUFFLE = 1; - public static final int TYPE_ALBUM = 2; - - private static final String[] PROJECTION = { - FIELD_WIDGET_TYPE, FIELD_IMAGE_URI, FIELD_PHOTO_BLOB, FIELD_ALBUM_PATH, - FIELD_APPWIDGET_ID, FIELD_RELATIVE_PATH}; - private static final int INDEX_WIDGET_TYPE = 0; - private static final int INDEX_IMAGE_URI = 1; - private static final int INDEX_PHOTO_BLOB = 2; - private static final int INDEX_ALBUM_PATH = 3; - private static final int INDEX_APPWIDGET_ID = 4; - private static final int INDEX_RELATIVE_PATH = 5; - private static final String WHERE_APPWIDGET_ID = FIELD_APPWIDGET_ID + " = ?"; - private static final String WHERE_WIDGET_TYPE = FIELD_WIDGET_TYPE + " = ?"; - - public static class Entry { - public int widgetId; - public int type; - public String imageUri; - public byte imageData[]; - public String albumPath; - public String relativePath; - - private Entry() {} - - private Entry(int id, Cursor cursor) { - widgetId = id; - type = cursor.getInt(INDEX_WIDGET_TYPE); - if (type == TYPE_SINGLE_PHOTO) { - imageUri = cursor.getString(INDEX_IMAGE_URI); - imageData = cursor.getBlob(INDEX_PHOTO_BLOB); - } else if (type == TYPE_ALBUM) { - albumPath = cursor.getString(INDEX_ALBUM_PATH); - relativePath = cursor.getString(INDEX_RELATIVE_PATH); - } - } - - private Entry(Cursor cursor) { - this(cursor.getInt(INDEX_APPWIDGET_ID), cursor); - } - } - - public WidgetDatabaseHelper(Context context) { - super(context, DATABASE_NAME, null, DATABASE_VERSION); - } - - @Override - public void onCreate(SQLiteDatabase db) { - db.execSQL("CREATE TABLE " + TABLE_WIDGETS + " (" - + FIELD_APPWIDGET_ID + " INTEGER PRIMARY KEY, " - + FIELD_WIDGET_TYPE + " INTEGER DEFAULT 0, " - + FIELD_IMAGE_URI + " TEXT, " - + FIELD_ALBUM_PATH + " TEXT, " - + FIELD_PHOTO_BLOB + " BLOB, " - + FIELD_RELATIVE_PATH + " TEXT)"); - } - - private void saveData(SQLiteDatabase db, int oldVersion, ArrayList<Entry> data) { - if (oldVersion <= 2) { - Cursor cursor = db.query("photos", - new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB}, - null, null, null, null, null); - if (cursor == null) return; - try { - while (cursor.moveToNext()) { - Entry entry = new Entry(); - entry.type = TYPE_SINGLE_PHOTO; - entry.widgetId = cursor.getInt(0); - entry.imageData = cursor.getBlob(1); - data.add(entry); - } - } finally { - cursor.close(); - } - } else if (oldVersion == 3) { - Cursor cursor = db.query("photos", - new String[] {FIELD_APPWIDGET_ID, FIELD_PHOTO_BLOB, FIELD_IMAGE_URI}, - null, null, null, null, null); - if (cursor == null) return; - try { - while (cursor.moveToNext()) { - Entry entry = new Entry(); - entry.type = TYPE_SINGLE_PHOTO; - entry.widgetId = cursor.getInt(0); - entry.imageData = cursor.getBlob(1); - entry.imageUri = cursor.getString(2); - data.add(entry); - } - } finally { - cursor.close(); - } - } - } - - private void restoreData(SQLiteDatabase db, ArrayList<Entry> data) { - db.beginTransaction(); - try { - for (Entry entry : data) { - ContentValues values = new ContentValues(); - values.put(FIELD_APPWIDGET_ID, entry.widgetId); - values.put(FIELD_WIDGET_TYPE, entry.type); - values.put(FIELD_IMAGE_URI, entry.imageUri); - values.put(FIELD_PHOTO_BLOB, entry.imageData); - values.put(FIELD_ALBUM_PATH, entry.albumPath); - db.insert(TABLE_WIDGETS, null, values); - } - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); - } - } - - @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - if (oldVersion < 4) { - // Table "photos" is renamed to "widget" in version 4 - ArrayList<Entry> data = new ArrayList<Entry>(); - saveData(db, oldVersion, data); - - Log.w(TAG, "destroying all old data."); - db.execSQL("DROP TABLE IF EXISTS photos"); - db.execSQL("DROP TABLE IF EXISTS " + TABLE_WIDGETS); - onCreate(db); - - restoreData(db, data); - } - // Add a column for relative path - if (oldVersion < DATABASE_VERSION) { - try { - db.execSQL("ALTER TABLE widgets ADD COLUMN relativePath TEXT"); - } catch (Throwable t) { - Log.e(TAG, "Failed to add the column for relative path."); - return; - } - } - } - - /** - * Store the given bitmap in this database for the given appWidgetId. - */ - public boolean setPhoto(int appWidgetId, Uri imageUri, Bitmap bitmap) { - try { - // Try go guesstimate how much space the icon will take when - // serialized to avoid unnecessary allocations/copies during - // the write. - int size = bitmap.getWidth() * bitmap.getHeight() * 4; - ByteArrayOutputStream out = new ByteArrayOutputStream(size); - bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); - out.close(); - - ContentValues values = new ContentValues(); - values.put(FIELD_APPWIDGET_ID, appWidgetId); - values.put(FIELD_WIDGET_TYPE, TYPE_SINGLE_PHOTO); - values.put(FIELD_IMAGE_URI, imageUri.toString()); - values.put(FIELD_PHOTO_BLOB, out.toByteArray()); - - SQLiteDatabase db = getWritableDatabase(); - db.replaceOrThrow(TABLE_WIDGETS, null, values); - return true; - } catch (Throwable e) { - Log.e(TAG, "set widget photo fail", e); - return false; - } - } - - public boolean setWidget(int id, int type, String albumPath, String relativePath) { - try { - ContentValues values = new ContentValues(); - values.put(FIELD_APPWIDGET_ID, id); - values.put(FIELD_WIDGET_TYPE, type); - values.put(FIELD_ALBUM_PATH, Utils.ensureNotNull(albumPath)); - values.put(FIELD_RELATIVE_PATH, relativePath); - getWritableDatabase().replaceOrThrow(TABLE_WIDGETS, null, values); - return true; - } catch (Throwable e) { - Log.e(TAG, "set widget fail", e); - return false; - } - } - - public Entry getEntry(int appWidgetId) { - Cursor cursor = null; - try { - SQLiteDatabase db = getReadableDatabase(); - cursor = db.query(TABLE_WIDGETS, PROJECTION, - WHERE_APPWIDGET_ID, new String[] {String.valueOf(appWidgetId)}, - null, null, null); - if (cursor == null || !cursor.moveToNext()) { - Log.e(TAG, "query fail: empty cursor: " + cursor + " appWidgetId: " - + appWidgetId); - return null; - } - return new Entry(appWidgetId, cursor); - } catch (Throwable e) { - Log.e(TAG, "Could not load photo from database", e); - return null; - } finally { - Utils.closeSilently(cursor); - } - } - - public List<Entry> getEntries(int type) { - Cursor cursor = null; - try { - SQLiteDatabase db = getReadableDatabase(); - cursor = db.query(TABLE_WIDGETS, PROJECTION, - WHERE_WIDGET_TYPE, new String[] {String.valueOf(type)}, - null, null, null); - if (cursor == null) { - Log.e(TAG, "query fail: null cursor: " + cursor); - return null; - } - ArrayList<Entry> result = new ArrayList<Entry>(cursor.getCount()); - while (cursor.moveToNext()) { - result.add(new Entry(cursor)); - } - return result; - } catch (Throwable e) { - Log.e(TAG, "Could not load widget from database", e); - return null; - } finally { - Utils.closeSilently(cursor); - } - } - - /** - * Updates the entry in the widget database. - */ - public void updateEntry(Entry entry) { - deleteEntry(entry.widgetId); - try { - ContentValues values = new ContentValues(); - values.put(FIELD_APPWIDGET_ID, entry.widgetId); - values.put(FIELD_WIDGET_TYPE, entry.type); - values.put(FIELD_ALBUM_PATH, entry.albumPath); - values.put(FIELD_IMAGE_URI, entry.imageUri); - values.put(FIELD_PHOTO_BLOB, entry.imageData); - values.put(FIELD_RELATIVE_PATH, entry.relativePath); - getWritableDatabase().insert(TABLE_WIDGETS, null, values); - } catch (Throwable e) { - Log.e(TAG, "set widget fail", e); - } - } - - /** - * Remove any bitmap associated with the given appWidgetId. - */ - public void deleteEntry(int appWidgetId) { - try { - SQLiteDatabase db = getWritableDatabase(); - db.delete(TABLE_WIDGETS, WHERE_APPWIDGET_ID, - new String[] {String.valueOf(appWidgetId)}); - } catch (SQLiteException e) { - Log.e(TAG, "Could not delete photo from database", e); - } - } -} |