OSDN Git Service

d0322adf1de445cc8592bc7d04c1ccc52f8138f4
[jugglemaster/source.git] / workspace / JuggleMaster / src / com / jm / db / Dao.java
1 package com.jm.db;\r
2 \r
3 import android.R;\r
4 import android.content.Context;\r
5 import android.database.Cursor;\r
6 import android.database.SQLException;\r
7 import android.database.sqlite.SQLiteDatabase;\r
8 import android.database.sqlite.SQLiteStatement;\r
9 \r
10 import com.jm.JmPattern;\r
11 import com.jm.utility.JmException;\r
12 \r
13 public class Dao {\r
14         private static Dao instance = new Dao();\r
15         private SQLiteStatement insertStmt = null;\r
16         private SQLiteStatement updateStmt = null;\r
17         private SQLiteStatement deleteStmt = null;\r
18         \r
19         public static Dao getInstance(){\r
20                 return instance;\r
21         }\r
22         \r
23         private Dao(){\r
24 \r
25         }\r
26         \r
27         public void init(SQLiteDatabase db){\r
28                 db.execSQL(\r
29                                 "create table pattern ("\r
30                                 + "id integer primary key, "\r
31                                 + "type integer not null, "\r
32                                 + "siteswap text not null, "\r
33                                 + "height integer, "\r
34                                 + "dwell integer, "\r
35                                 + "name integer, "\r
36                                 + "motion text,"\r
37                                 + "lang integer);"\r
38                         );\r
39                 start(db);\r
40         }\r
41         \r
42         public void start(SQLiteDatabase db){\r
43                 insertStmt = db.compileStatement(\r
44                                 "insert into pattern ("\r
45                                 + "type, siteswap, height, dwell, name, motion, lang"\r
46                                 + ") values ("\r
47                                 + "?, ?, ?, ?, ?, ?, ?"\r
48                                 + ");");        \r
49                 updateStmt = db.compileStatement(\r
50                                 "update pattern set "\r
51                                 + "siteswap = ?, height = ?, dwell = ?, name = ?, motion = ? "\r
52                                 + "where id = ? and lang = ?;");\r
53                 deleteStmt = db.compileStatement(\r
54                                 "delete from pattern where id = ? and lang = ?;");\r
55         }\r
56         \r
57         public void add(JmPattern jp) throws JmException{\r
58                 DatabaseHelper helper = DatabaseHelper.getInstance();\r
59                 SQLiteDatabase db = helper.getWritableDatabase();\r
60                 db.beginTransaction();\r
61                 try {\r
62                         int i = 1;\r
63                         SQLiteStatement stmt = insertStmt;\r
64                         stmt.bindLong(i++, jp.getType());\r
65                         stmt.bindString(i++, jp.getSiteSwap().toString());\r
66                         stmt.bindLong(i++, jp.getHeight());\r
67                         stmt.bindLong(i++, jp.getDwell());\r
68                         stmt.bindString(i++, jp.getName());\r
69                         stmt.bindString(i++, jp.motionToString());\r
70                         stmt.bindLong(i++, helper.getLangId());\r
71                         stmt.executeInsert();\r
72                         db.setTransactionSuccessful();\r
73                 } catch (SQLException e){\r
74                         throw new JmException(e);\r
75                 } finally {\r
76                         db.endTransaction();\r
77                 }\r
78         }\r
79         \r
80         public void set(JmPattern jp) throws JmException{\r
81                 DatabaseHelper helper = DatabaseHelper.getInstance();\r
82                 SQLiteDatabase db = helper.getWritableDatabase();\r
83                 db.beginTransaction();\r
84                 try {\r
85                         int i = 1;\r
86                         SQLiteStatement stmt = updateStmt;\r
87                         stmt.bindString(i++, jp.getSiteSwap().toString());\r
88                         stmt.bindLong(i++, jp.getHeight());\r
89                         stmt.bindLong(i++, jp.getDwell());\r
90                         stmt.bindString(i++, jp.getName());\r
91                         stmt.bindString(i++, jp.motionToString());\r
92                         stmt.bindLong(i++, jp.getId());\r
93                         stmt.bindLong(i++, helper.getLangId());\r
94                         stmt.execute();\r
95                         db.setTransactionSuccessful();\r
96                 } catch (SQLException e){\r
97                                 throw new JmException(e);\r
98                 } finally {\r
99                         db.endTransaction();\r
100                 }\r
101         }\r
102 \r
103         public void delete(int id) throws JmException{\r
104                 DatabaseHelper helper = DatabaseHelper.getInstance();\r
105                 SQLiteDatabase db = helper.getWritableDatabase();\r
106                 db.beginTransaction();\r
107                 try {\r
108                         int i = 1;\r
109                         SQLiteStatement stmt = deleteStmt;\r
110                         stmt.bindLong(i++, id);\r
111                         stmt.bindLong(i++, helper.getLangId());\r
112                         stmt.execute();\r
113                         db.setTransactionSuccessful();\r
114                 } catch (SQLException e){\r
115                                 throw new JmException(e);\r
116                 } finally {\r
117                         db.endTransaction();\r
118                 }\r
119         }\r
120 \r
121         public JmPattern[] get(int type) throws JmException{\r
122                 JmPattern[] list = null;\r
123                 try {\r
124                         DatabaseHelper helper = DatabaseHelper.getInstance();\r
125                         SQLiteDatabase db = helper.getReadableDatabase();\r
126                         String selection = "lang = " + helper.getLangId() + " and type = " + type;\r
127                         Cursor c = db.query(\r
128                                         "pattern",\r
129                                         new String[] {\r
130                                                         "id",\r
131                                                         "type",\r
132                                                         "siteswap",\r
133                                                         "height",\r
134                                                         "dwell",\r
135                                                         "name",\r
136                                                         "motion"},\r
137                                                         selection, null, null, null, null);\r
138                         c.moveToFirst();\r
139                         list = new JmPattern[c.getCount()];\r
140                         for (int i = 0; i < list.length; i++) {\r
141                                 JmPattern jp = new JmPattern(\r
142                                                 c.getInt(0), // id\r
143                                                 c.getInt(1), // type\r
144                                                 c.getString(5), // name\r
145                                                 c.getString(2), // siteswap\r
146                                                 c.getInt(3), // height\r
147                                                 c.getInt(4), // dwell\r
148                                                 JmPattern.getMotion(c.getString(6))); // motions\r
149                             list[i] = jp;\r
150                             c.moveToNext();\r
151                         }\r
152                         c.close();\r
153                 } catch (SQLException e){\r
154                         throw new JmException(e);\r
155                 }\r
156                 return list;\r
157         }\r
158         \r
159         public JmPattern[] getFromId(int id) throws JmException{\r
160                 JmPattern[] list = null;\r
161                 try {\r
162                         DatabaseHelper helper = DatabaseHelper.getInstance();\r
163                         SQLiteDatabase db = helper.getReadableDatabase();\r
164                         String selection = "id = " + id + " and lang = " + helper.getLangId();\r
165                         Cursor c = db.query(\r
166                                         "pattern",\r
167                                         new String[] {\r
168                                                         "id",\r
169                                                         "type",\r
170                                                         "siteswap",\r
171                                                         "height",\r
172                                                         "dwell",\r
173                                                         "name",\r
174                                                         "motion"},\r
175                                                         selection, null, null, null, null);\r
176                         c.moveToFirst();\r
177                         list = new JmPattern[c.getCount()];\r
178                         for (int i = 0; i < list.length; i++) {\r
179                                 JmPattern jp = new JmPattern(\r
180                                                 c.getInt(0), // id\r
181                                                 c.getInt(1), // type\r
182                                                 c.getString(5), // name\r
183                                                 c.getString(2), // siteswap\r
184                                                 c.getInt(3), // height\r
185                                                 c.getInt(4), // dwell\r
186                                                 JmPattern.getMotion(c.getString(6))); // motions\r
187                             list[i] = jp;\r
188                             c.moveToNext();\r
189                         }\r
190                         c.close();\r
191                 } catch (SQLException e){\r
192                         throw new JmException(e);\r
193                 }\r
194                 return list;\r
195         }\r
196 \r
197         public int count() throws JmException{\r
198                 int count = -1;\r
199                 try {\r
200                         DatabaseHelper helper = DatabaseHelper.getInstance();\r
201                         SQLiteDatabase db = helper.getReadableDatabase();\r
202                         String sql = "select count(*) from pattern where lang = " + helper.getLangId() + ";";\r
203                         Cursor c = db.rawQuery(sql, null);\r
204                         c.moveToFirst();\r
205                         count = c.getInt(0); // count;\r
206                         c.close();\r
207                 } catch (SQLException e){\r
208                         throw new JmException(e);\r
209                 }\r
210                 return count;\r
211         }\r
212 \r
213         public int count(int type) throws JmException{\r
214                 int count = -1;\r
215                 try {\r
216                         DatabaseHelper helper = DatabaseHelper.getInstance();\r
217                         SQLiteDatabase db = helper.getReadableDatabase();\r
218                         String sql = "select count(*) from pattern where type = " + type + " and lang = " + helper.getLangId() + ";";\r
219                         Cursor c = db.rawQuery(sql, null);\r
220                         c.moveToFirst();\r
221                         count = c.getInt(0); // count;\r
222                         c.close();\r
223                 } catch (SQLException e){\r
224                         throw new JmException(e);\r
225                 }\r
226                 return count;\r
227         }\r
228 }\r