/* * Copyright (C) 2014 Philippine Android Developers Community * * 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 ph.devcon.android.base; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.table.TableUtils; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import ph.devcon.android.attendee.db.Attendee; import ph.devcon.android.attendee.db.AttendeeDao; import ph.devcon.android.attendee.db.FTSAttendee; import ph.devcon.android.category.db.Category; import ph.devcon.android.category.db.CategoryDao; import ph.devcon.android.news.db.News; import ph.devcon.android.news.db.NewsDao; import ph.devcon.android.profile.db.Profile; import ph.devcon.android.profile.db.ProfileDao; import ph.devcon.android.program.db.Program; import ph.devcon.android.program.db.ProgramDao; import ph.devcon.android.speaker.db.Speaker; import ph.devcon.android.speaker.db.SpeakerDao; import ph.devcon.android.speaker.db.Talk; import ph.devcon.android.speaker.db.TalkDao; import ph.devcon.android.sponsor.db.Sponsor; import ph.devcon.android.sponsor.db.SponsorDao; import ph.devcon.android.sponsor.db.SponsorType; import ph.devcon.android.sponsor.db.SponsorTypeDao; import ph.devcon.android.technology.db.Technology; import ph.devcon.android.technology.db.TechnologyDao; import ph.devcon.android.user.db.User; import ph.devcon.android.user.db.UserDao; /** * Created by lope on 9/16/14. */ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { // name of the database file for your application -- change to something appropriate for your app private static final String DATABASE_NAME = "DevConSummit.sqlite"; // any time you make changes to your database objects, you may have to increase the database version private static final int DATABASE_VERSION = 1; private static DatabaseHelper mInstance = null; // the DAO object we use to access the SimpleData table private ProgramDao programDao = null; private SpeakerDao speakerDao = null; private SponsorTypeDao sponsorTypeDao = null; private SponsorDao sponsorDao = null; private NewsDao newsDao = null; private AttendeeDao attendeeDao = null; private UserDao userDao = null; private ProfileDao profileDao = null; private CategoryDao categoryDao = null; private TechnologyDao technologyDao = null; private TalkDao talkDao = null; private FTSAttendee ftsAttendee = null; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } public static DatabaseHelper getInstance(Context context) { /** * use the application context as suggested by CommonsWare. * this will ensure that you dont accidentally leak an Activitys * context (see this article for more information: * http://developer.android.com/resources/articles/avoiding-memory-leaks.html) */ if (mInstance == null) { mInstance = new DatabaseHelper(context.getApplicationContext()); } return mInstance; } @Override public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, Category.class); TableUtils.createTable(connectionSource, Technology.class); TableUtils.createTable(connectionSource, Program.class); TableUtils.createTable(connectionSource, Speaker.class); TableUtils.createTable(connectionSource, SponsorType.class); TableUtils.createTable(connectionSource, Sponsor.class); TableUtils.createTable(connectionSource, News.class); TableUtils.createTable(connectionSource, Attendee.class); TableUtils.createTable(connectionSource, User.class); TableUtils.createTable(connectionSource, Profile.class); TableUtils.createTable(connectionSource, Talk.class); database.execSQL(FTSAttendee.buildTable()); // database.execSQL(FTSSearch.buildTable()); } catch (SQLException e) { Log.e(DatabaseHelper.class.getName(), "Can't create database", e); throw new RuntimeException(e); } } @Override public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) { // try { List<String> allSql = new ArrayList<String>(); switch (oldVersion) { // case 1: // allSql.add("alter table Test add column `isProcessed` VARCHAR"); } for (String sql : allSql) { database.execSQL(sql); } // } catch (SQLException e) { // Log.e(DatabaseHelper.class.getName(), "exception during onUpgrade", e); // throw new RuntimeException(e); // } } public ProgramDao getProgramDao() { if (null == programDao) { try { programDao = getDao(Program.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return programDao; } public SpeakerDao getSpeakerDao() { if (null == speakerDao) { try { speakerDao = getDao(Speaker.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return speakerDao; } public SponsorDao getSponsorDao() { if (null == sponsorDao) { try { sponsorDao = getDao(Sponsor.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return sponsorDao; } public NewsDao getNewsDao() { if (null == newsDao) { try { newsDao = getDao(News.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return newsDao; } public AttendeeDao getAttendeeDao() { if (null == attendeeDao) { try { attendeeDao = getDao(Attendee.class); attendeeDao.setFTSAttendee(getFTSAttendeeDao()); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return attendeeDao; } public FTSAttendee getFTSAttendeeDao() { if (null == ftsAttendee) { ftsAttendee = FTSAttendee.getInstance(this); } return ftsAttendee; } public UserDao getUserDao() { if (null == userDao) { try { userDao = getDao(User.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return userDao; } public ProfileDao getProfileDao() { if (null == profileDao) { try { profileDao = getDao(Profile.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return profileDao; } public CategoryDao getCategoryDao() { if (null == categoryDao) { try { categoryDao = getDao(Category.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return categoryDao; } public TechnologyDao getTechnologyDao() { if (null == technologyDao) { try { technologyDao = getDao(Technology.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return technologyDao; } public TalkDao getTalkDao() { if (null == talkDao) { try { talkDao = getDao(Talk.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return talkDao; } public SponsorTypeDao getSponsorTypeDao() { if (null == sponsorTypeDao) { try { sponsorTypeDao = getDao(SponsorType.class); } catch (java.sql.SQLException e) { e.printStackTrace(); } } return sponsorTypeDao; } }