OSDN Git Service

137aa6e8097ff07df7a55e04aedab9fe05e38239
[jugglemaster/source.git] / workspace / JuggleMaster / src / com / jm / db / DatabaseHelper.java
1 package com.jm.db;\r
2 \r
3 import android.content.Context;\r
4 import android.database.SQLException;\r
5 import android.database.sqlite.SQLiteDatabase;\r
6 import android.database.sqlite.SQLiteOpenHelper;\r
7 \r
8 import com.jm.JmPattern;\r
9 import com.jm.PatternList;\r
10 import com.jm.utility.Debug;\r
11 import com.jm.utility.JmException;\r
12 \r
13 public class DatabaseHelper extends SQLiteOpenHelper {\r
14         public final static int NONE_ID = -1;\r
15         public final static int ENGLISH_ID = 1;\r
16         public final static int JAPANEASE_ID = 2;\r
17         public final static int FRENCH_ID = 3;\r
18         private static int langId = NONE_ID;\r
19         private Context context;\r
20         private static boolean convFlag = false;\r
21 \r
22         private static DatabaseHelper instance = null;\r
23 \r
24         public static DatabaseHelper getInstance() {\r
25                 return instance;\r
26         }\r
27 \r
28         public static void init(Context context) throws JmException {\r
29                 if (instance != null) {\r
30                         return;\r
31                 }\r
32                 \r
33                 DatabaseHelper helper = new DatabaseHelper(context);\r
34                 SQLiteDatabase db = helper.getWritableDatabase();\r
35                 Dao.getInstance().start(db);\r
36                 // TODO\r
37                 // SQLiteDatabase db = helper.getWritableDatabase();\r
38                 // int count;\r
39                 // int type = 0;\r
40                 // count = Dao.getInstance().count(type);\r
41                 // Dao.getInstance().start(db);\r
42                 // PatternList p = new PatternList();\r
43                 // if (count <= 0) {\r
44                 // p.create();\r
45                 // }\r
46                 // if (convFlag){\r
47                 // p.update();\r
48                 // convFlag = false;\r
49                 // }\r
50         }\r
51 \r
52         public DatabaseHelper(Context context) {\r
53                 // super(context, "JuggleMaster.db", null, 1);\r
54                 super(context, "JuggleMaster.db", null, 2);\r
55                 instance = this;\r
56 \r
57                 // setLangId(context);\r
58                 this.context = context;\r
59         }\r
60 \r
61         @Override\r
62         public void onCreate(SQLiteDatabase db) {\r
63                 db.beginTransaction();\r
64                 try {\r
65                         Dao.getInstance().init(db);\r
66                         db.setTransactionSuccessful();\r
67                 } catch (SQLException e) {\r
68                         Debug.d(this, null, e);\r
69                         throw e;\r
70                 } finally {\r
71                         db.endTransaction();\r
72                 }\r
73         }\r
74 \r
75         @Override\r
76         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {\r
77                 try {\r
78                         if (oldVersion == 1 && newVersion == 2) {\r
79                                 // db.execSQL("ALTER TABLE pattern ADD COLUMN lang integer;");\r
80                                 // db.execSQL("ALTER TABLE pattern ADD COLUMN idx integer;");\r
81                                 //\r
82                                 // Dao dao = Dao.getInstance();\r
83                                 // for (int i = 0; i < 7; i++){\r
84                                 // JmPattern[] list = dao.get(db, "type = " + i, null);\r
85                                 // int size = list.length;\r
86                                 // for (int j = 0; j < size; j++){\r
87                                 // JmPattern item = list[j];\r
88                                 // int id = item.getId();\r
89                                 // db.execSQL("UPDATE pattern set idx = " + j + " WHERE id = " +\r
90                                 // id + ";");\r
91                                 // }\r
92                                 // }\r
93                                 //\r
94                                 // int langId = getLangId();\r
95                                 //\r
96                                 // // 既存のデータは、日本語のデータに変換\r
97                                 // db.execSQL("UPDATE pattern set LANG = " + JAPANEASE_ID +\r
98                                 // " WHERE TYPE <> 6;");\r
99                                 // db.execSQL("DELETE FROM pattern WHERE NAME = '[新規作成]';");\r
100                                 // // ただし、マイパターンは、システムの言語に\r
101                                 // db.execSQL("UPDATE pattern set LANG = " + langId +\r
102                                 // " WHERE TYPE = 6;");\r
103                                 // db.execSQL("create index langindex on pattern(lang);");\r
104                                 // db.execSQL("create index idxindex on pattern(idx);");\r
105 \r
106                                 convFlag = true;\r
107                         }\r
108                 } catch (Exception e) {\r
109                         e.printStackTrace(); // TODO\r
110                 }\r
111         }\r
112 \r
113         public void convert(SQLiteDatabase db, int langId) {\r
114                 try {\r
115                         db.execSQL("ALTER TABLE pattern ADD COLUMN lang integer;");\r
116                         db.execSQL("ALTER TABLE pattern ADD COLUMN idx integer;");\r
117 \r
118                         Dao dao = Dao.getInstance();\r
119                         for (int i = 0; i < 7; i++) {\r
120                                 JmPattern[] list;\r
121                                 list = dao.get(db, "type = " + i, null);\r
122                                 int size = list.length;\r
123                                 for (int j = 0; j < size; j++) {\r
124                                         JmPattern item = list[j];\r
125                                         int id = item.getId();\r
126                                         db.execSQL("UPDATE pattern set idx = " + j + " WHERE id = "\r
127                                                         + id + ";");\r
128                                 }\r
129                         }\r
130 \r
131                         // 既存のデータは、日本語のデータに変換\r
132                         db.execSQL("UPDATE pattern set LANG = " + JAPANEASE_ID\r
133                                         + " WHERE TYPE <> 6;");\r
134                         db.execSQL("DELETE FROM pattern WHERE NAME = '[新規作成]';");\r
135                         // ただし、マイパターンは、システムの言語に\r
136                         db.execSQL("UPDATE pattern set LANG = " + langId\r
137                                         + " WHERE TYPE = 6;");\r
138                         db.execSQL("create index langindex on pattern(lang);");\r
139                         db.execSQL("create index idxindex on pattern(idx);");\r
140                 } catch (JmException e) {\r
141                         // TODO Auto-generated catch block\r
142                         e.printStackTrace();\r
143                 }\r
144                 convFlag = false;\r
145         }\r
146 \r
147         public boolean getConvFlag(){\r
148                 return convFlag;\r
149         }\r
150         \r
151         public void setLangId(int id) {\r
152                 langId = id;\r
153         }\r
154 \r
155         public int getLangId() {\r
156                 if (langId != NONE_ID) {\r
157                         return langId;\r
158                 }\r
159                 String id = context.getString(com.jm.R.string.lang);\r
160                 return Integer.valueOf(id).intValue();\r
161         }\r
162 }\r