155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk/* 255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * Copyright (C) 2013 The Android Open Source Project 355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * 455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * Licensed under the Apache License, Version 2.0 (the "License"); 555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * you may not use this file except in compliance with the License. 655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * You may obtain a copy of the License at 755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * 855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * http://www.apache.org/licenses/LICENSE-2.0 955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * 1055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * Unless required by applicable law or agreed to in writing, software 1155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * distributed under the License is distributed on an "AS IS" BASIS, 1255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * See the License for the specific language governing permissions and 1455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk * limitations under the License. 1555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk */ 1655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 1755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunkpackage com.android.gallery3d.filtershow.data; 1855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 1955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunkimport android.content.Context; 2055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunkimport android.database.sqlite.SQLiteDatabase; 2155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunkimport android.database.sqlite.SQLiteOpenHelper; 2255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 2355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunkpublic class FilterStackDBHelper extends SQLiteOpenHelper { 2455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 2555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public static final int DATABASE_VERSION = 1; 2655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public static final String DATABASE_NAME = "filterstacks.db"; 2755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk private static final String SQL_CREATE_TABLE = "CREATE TABLE "; 2855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 2955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public static interface FilterStack { 3055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk /** The row uid */ 3155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public static final String _ID = "_id"; 3255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk /** The table name */ 3355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public static final String TABLE = "filterstack"; 3455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk /** The stack name */ 3555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public static final String STACK_ID = "stack_id"; 3655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk /** A serialized stack of filters. */ 3755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public static final String FILTER_STACK= "stack"; 3855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 3955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 4055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk private static final String[][] CREATE_FILTER_STACK = { 4155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk { FilterStack._ID, "INTEGER PRIMARY KEY AUTOINCREMENT" }, 4255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk { FilterStack.STACK_ID, "TEXT" }, 4355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk { FilterStack.FILTER_STACK, "BLOB" }, 4455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk }; 4555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 4655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public FilterStackDBHelper(Context context, String name, int version) { 4755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk super(context, name, null, version); 4855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 4955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 5055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public FilterStackDBHelper(Context context, String name) { 5155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk this(context, name, DATABASE_VERSION); 5255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 5355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 5455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public FilterStackDBHelper(Context context) { 5555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk this(context, DATABASE_NAME); 5655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 5755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 5855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk @Override 5955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public void onCreate(SQLiteDatabase db) { 6055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk createTable(db, FilterStack.TABLE, CREATE_FILTER_STACK); 6155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 6255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 6355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk @Override 6455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 6555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk dropTable(db, FilterStack.TABLE); 6655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk onCreate(db); 6755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 6855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 6955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk protected static void createTable(SQLiteDatabase db, String table, String[][] columns) { 7055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk StringBuilder create = new StringBuilder(SQL_CREATE_TABLE); 7155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk create.append(table).append('('); 7255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk boolean first = true; 7355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk for (String[] column : columns) { 7455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk if (!first) { 7555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk create.append(','); 7655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 7755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk first = false; 7855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk for (String val : column) { 7955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk create.append(val).append(' '); 8055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 8155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 8255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk create.append(')'); 8355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk db.beginTransaction(); 8455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk try { 8555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk db.execSQL(create.toString()); 8655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk db.setTransactionSuccessful(); 8755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } finally { 8855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk db.endTransaction(); 8955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 9055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 9155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk 9255fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk protected static void dropTable(SQLiteDatabase db, String table) { 9355fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk db.beginTransaction(); 9455fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk try { 9555fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk db.execSQL("drop table if exists " + table); 9655fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk db.setTransactionSuccessful(); 9755fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } finally { 9855fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk db.endTransaction(); 9955fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 10055fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk } 10155fccf8e63d3eb50800f81ca1211b2205fe15060Ruben Brunk} 102