OSDN Git Service

c5adaace980ec61118085ecfc7da448f4dab04b4
[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 ENGLISH_ID = 1;\r
15         public final static int JAPANEASE_ID = 2;\r
16         private static int langId = -1;\r
17         private static boolean convFlag = false;\r
18         \r
19         private static DatabaseHelper instance = null;\r
20         \r
21         public static DatabaseHelper getInstance() {\r
22                 return instance;\r
23         }\r
24 \r
25         public static void init(Context context) throws JmException {\r
26                 if (instance != null){\r
27                         return;\r
28                 }\r
29                 DatabaseHelper helper = new DatabaseHelper(context);\r
30                 SQLiteDatabase db = helper.getWritableDatabase();\r
31                 int count;\r
32                 int type = 0;\r
33                 count = Dao.getInstance().count(type);\r
34                 Dao.getInstance().start(db);\r
35                 PatternList p = new PatternList();\r
36                 if (count <= 0) {\r
37                         p.create();\r
38                 }\r
39                 if (convFlag){\r
40                         p.update();                     \r
41                         convFlag = false;\r
42                 }\r
43         }\r
44 \r
45         public DatabaseHelper(Context context) {\r
46                 //super(context, "JuggleMaster.db", null, 1);\r
47                 super(context, "JuggleMaster.db", null, 2);\r
48                 instance = this;\r
49                 \r
50                 setLangId(context);\r
51         }\r
52 \r
53         @Override\r
54         public void onCreate(SQLiteDatabase db) {\r
55                 db.beginTransaction();\r
56                 try {\r
57                         Dao.getInstance().init(db);\r
58                         db.setTransactionSuccessful();\r
59                 } catch (SQLException e) {\r
60                         Debug.d(this, null, e);\r
61                         throw e;\r
62                 } finally {\r
63                         db.endTransaction();\r
64                 }\r
65         }\r
66 \r
67         @Override\r
68         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {\r
69                 try {\r
70                         if (oldVersion == 1 && newVersion == 2) {\r
71                                 db.execSQL("ALTER TABLE pattern ADD COLUMN lang integer;");\r
72                                 db.execSQL("ALTER TABLE pattern ADD COLUMN idx integer;");\r
73                                 \r
74                                 Dao dao = Dao.getInstance();\r
75                                 for (int i = 0; i < 7; i++){\r
76                                         JmPattern[] list = dao.get(db, "type = " + i, null);\r
77                                         int size = list.length;\r
78                                         for (int j = 0; j < size; j++){\r
79                                                 JmPattern item = list[j];\r
80                                                 int id = item.getId();\r
81                                                 db.execSQL("UPDATE pattern set idx = " + j + " WHERE id = " + id + ";");\r
82                                         }\r
83                                 }\r
84                                 \r
85                                 // 既存のデータは、日本語のデータに変換\r
86                                 db.execSQL("UPDATE pattern set LANG = " + JAPANEASE_ID + " WHERE TYPE <> 6;");\r
87                                 db.execSQL("DELETE FROM pattern WHERE NAME = '[新規作成]';");\r
88                                 // ただし、マイパターンは、システムの言語に\r
89                                 db.execSQL("UPDATE pattern set LANG = " + langId + " WHERE TYPE = 6;");\r
90                                 db.execSQL("create index langindex on pattern(lang);");\r
91                                 db.execSQL("create index idxindex on pattern(idx);");\r
92                                 \r
93                                 convFlag = true;\r
94                         }\r
95                 } catch (Exception e) {\r
96                         e.printStackTrace(); // TODO\r
97                 }\r
98         }       \r
99         \r
100         public void setLangId(Context context){\r
101                 if (langId < 0){\r
102                         String id = context.getString(com.jm.R.string.lang);\r
103                         try {\r
104                                 langId = Integer.valueOf(id).intValue();\r
105                         }\r
106                         catch (Exception e){\r
107                                 langId = ENGLISH_ID;\r
108                         }\r
109                 }\r
110         }\r
111         \r
112         public int getLangId(){\r
113                 return langId;\r
114         }\r
115 }\r