OSDN Git Service

725e2d708ec112243c007096507c44b451ebd70a
[everfolder/source.git] / source / workspace / EverFolder / src / com / yuji / ef / dao / DatabaseHelper.java
1 package com.yuji.ef.dao;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import android.content.Context;
7 import android.database.sqlite.SQLiteDatabase;
8 import android.database.sqlite.SQLiteOpenHelper;
9
10 import com.yuji.ef.utility.Debug;
11
12 public class DatabaseHelper extends SQLiteOpenHelper {
13         private static DatabaseHelper instance = null;
14         private static List<IDao<?>> daoList = null;
15
16         public static DatabaseHelper getInstance() {
17                 return instance;
18         }
19
20         public static void init(Context context) {
21                 if (instance != null) {
22                         return;
23                 }
24                 daoList = new ArrayList<IDao<?>>();
25                 daoList.add(NodeDao.getInstance());
26                 daoList.add(BookDao.getInstance());
27
28                 DatabaseHelper helper = new DatabaseHelper(context);
29                 SQLiteDatabase db = helper.getWritableDatabase();
30
31                 for (IDao<?> dao : daoList) {
32                         dao.init(db);
33                 }
34         }
35
36         public DatabaseHelper(Context context) {
37                 super(context, "EverFolder.db", null, 1);
38                 instance = this;
39         }
40
41         @Override
42         public void onCreate(SQLiteDatabase db) {
43                 try {
44                         for (IDao<?> dao : daoList) {
45                                 dao.onCreate(db);
46                                 dao.init(db);
47                         }
48
49                         db.beginTransaction();
50                         try {
51                                 for (IDao<?> dao : daoList) {
52                                         dao.start(db);
53                                 }
54                                 db.setTransactionSuccessful();
55                         } finally {
56                                 db.endTransaction();
57                         }
58                 } catch (Exception e) {
59                         Debug.d(this, null, e);
60                 }
61         }
62
63         @Override
64         public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
65
66         }
67
68 }