/******************************************************************************* * Software Name : RCS IMS Stack * * Copyright (C) 2010 France Telecom S.A. * * 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.orangelabs.rcs.provider; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import com.orangelabs.rcs.provider.fthttp.FtHttpColumns; import com.orangelabs.rcs.provider.ipcall.IPCallData; import com.orangelabs.rcs.provider.ipcall.IPCallProvider; import com.orangelabs.rcs.provider.messaging.RichMessagingData; import com.orangelabs.rcs.provider.messaging.RichMessagingProvider; import com.orangelabs.rcs.provider.sharing.RichCallData; import com.orangelabs.rcs.provider.sharing.RichCallProvider; import com.orangelabs.rcs.utils.logger.Logger; public class RichProviderHelper extends SQLiteOpenHelper{ private static final String DATABASE_NAME = "eventlog.db"; private static final int DATABASE_VERSION = 18; /** * The logger */ final private static Logger logger = Logger.getLogger(RichProviderHelper.class.getSimpleName()); @Override public void onCreate(SQLiteDatabase db){ if (logger.isActivated()) { logger.debug("onCreate"); } // @formatter:off db.execSQL("create table " + RichMessagingProvider.TABLE + " (" // Fields for chat + RichMessagingData.KEY_ID + " integer primary key," + RichMessagingData.KEY_TYPE + " integer," + RichMessagingData.KEY_CHAT_SESSION_ID + " TEXT," + RichMessagingData.KEY_TIMESTAMP + " long," + RichMessagingData.KEY_CONTACT + " TEXT," + RichMessagingData.KEY_STATUS + " integer," + RichMessagingData.KEY_DATA + " TEXT," + RichMessagingData.KEY_MESSAGE_ID + " TEXT," + RichMessagingData.KEY_IS_SPAM + " integer," + RichMessagingData.KEY_CHAT_ID + " TEXT," + RichMessagingData.KEY_CHAT_REJOIN_ID + " TEXT," // Fields for file transfer + RichMessagingData.KEY_MIME_TYPE + " TEXT," + RichMessagingData.KEY_NAME + " TEXT," + RichMessagingData.KEY_SIZE + " long," + RichMessagingData.KEY_TOTAL_SIZE + " long," + RichMessagingData.KEY_NUMBER_MESSAGES+ " integer," // fields for IMDN in chat or FT group + RichMessagingData.KEY_IMDN_DELIVERED_LIST + " TEXT," + RichMessagingData.KEY_IMDN_DISPLAYED_LIST + " TEXT," + RichMessagingData.KEY_DISPLAY_NAME + " TEXT," // Field for Group Chat: accept_invite (boolean) + RichMessagingData.KEY_REJECT_GC+" integer DEFAULT 0);" ); db.execSQL("create table " + RichCallProvider.TABLE + " (" + RichCallData.KEY_ID + " integer primary key," + RichCallData.KEY_CONTACT + " TEXT," + RichCallData.KEY_DESTINATION + " integer," + RichCallData.KEY_MIME_TYPE + " TEXT," + RichCallData.KEY_NAME + " TEXT," + RichCallData.KEY_SIZE + " long," + RichCallData.KEY_DATA + " TEXT," + RichCallData.KEY_TIMESTAMP + " long," + RichCallData.KEY_NUMBER_MESSAGES + " integer," + RichCallData.KEY_STATUS + " integer," + RichCallData.KEY_SESSION_ID+ " TEXT);" ); db.execSQL("create table " + IPCallProvider.TABLE + " (" + IPCallData.KEY_ID + " integer primary key," + IPCallData.KEY_CONTACT + " TEXT," + IPCallData.KEY_EVENT_TYPE + " integer," + IPCallData.KEY_AUDIO_MIME_TYPE + " TEXT," + IPCallData.KEY_VIDEO_MIME_TYPE + " TEXT," + IPCallData.KEY_TIMESTAMP + " long," + IPCallData.KEY_NUMBER_MESSAGES + " integer," + IPCallData.KEY_STATUS + " integer," + IPCallData.KEY_SESSION_ID+ " TEXT);" ); db.execSQL("CREATE TABLE IF NOT EXISTS " + FtHttpColumns.TABLE + " ( " + FtHttpColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + FtHttpColumns.OU_TID + " TEXT," + FtHttpColumns.IN_URL + " TEXT," + FtHttpColumns.SIZE + " INTEGER," + FtHttpColumns.TYPE + " TEXT," + FtHttpColumns.CONTACT + " TEXT," + FtHttpColumns.CHATID + " TEXT," + FtHttpColumns.FILENAME + " TEXT NOT NULL," + FtHttpColumns.DIRECTION + " INTEGER NOT NULL," + FtHttpColumns.DATE + " INTEGER NOT NULL," + FtHttpColumns.DISPLAY_NAME + " TEXT," + FtHttpColumns.SESSION_ID + " TEXT," + FtHttpColumns.THUMBNAIL + " BLOB," + FtHttpColumns.MESSAGE_ID + " TEXT," + FtHttpColumns.IS_GROUP + " INTEGER," + FtHttpColumns.CHAT_SESSION_ID + " TEXT" +");" ); // @formatter:on } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ db.execSQL("DROP TABLE IF EXISTS " + RichMessagingProvider.TABLE); db.execSQL("DROP TABLE IF EXISTS " + RichCallProvider.TABLE); db.execSQL("DROP TABLE IF EXISTS " + IPCallProvider.TABLE); db.execSQL("DROP TABLE IF EXISTS " + FtHttpColumns.TABLE); onCreate(db); } /** * To manage an unique instance. */ private static RichProviderHelper instance = null; public static synchronized void createInstance(Context ctx) { if (instance == null) { instance = new RichProviderHelper(ctx); } } public static RichProviderHelper getInstance() { return instance; } private RichProviderHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } }