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
10 import com.jm.JmPattern;
\r
11 import com.jm.utility.JmException;
\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
19 public static Dao getInstance(){
\r
27 public void init(SQLiteDatabase db){
\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
40 //db.execSQL("ALTER TABLE pattern ADD COLUMN lang integer;");
\r
41 //db.execSQL("ALTER TABLE pattern ADD COLUMN idx integer;");
\r
45 public void start(SQLiteDatabase db){
\r
46 insertStmt = db.compileStatement(
\r
47 "insert into pattern ("
\r
48 + "type, siteswap, height, dwell, name, motion, lang, idx"
\r
50 + "?, ?, ?, ?, ?, ?, ?, ?"
\r
52 updateStmt = db.compileStatement(
\r
53 "update pattern set "
\r
54 + "siteswap = ?, height = ?, dwell = ?, name = ?, motion = ? "
\r
55 + "where id = ? and lang = ?;");
\r
56 deleteStmt = db.compileStatement(
\r
57 "delete from pattern where id = ? and lang = ?;");
\r
60 public void add(JmPattern jp, int index) throws JmException{
\r
61 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
62 add(jp, helper.getLangId(), index);
\r
65 public void add(JmPattern jp, int lang, int index) throws JmException{
\r
66 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
67 SQLiteDatabase db = helper.getWritableDatabase();
\r
68 db.beginTransaction();
\r
71 SQLiteStatement stmt = insertStmt;
\r
72 stmt.bindLong(i++, jp.getType());
\r
73 stmt.bindString(i++, jp.getSiteSwap().toString());
\r
74 stmt.bindLong(i++, jp.getHeight());
\r
75 stmt.bindLong(i++, jp.getDwell());
\r
76 stmt.bindString(i++, jp.getName());
\r
77 stmt.bindString(i++, jp.motionToString());
\r
78 stmt.bindLong(i++, lang);
\r
79 stmt.bindLong(i++, index);
\r
80 stmt.executeInsert();
\r
81 db.setTransactionSuccessful();
\r
82 } catch (SQLException e){
\r
83 throw new JmException(e);
\r
85 db.endTransaction();
\r
89 public void set(JmPattern jp) throws JmException{
\r
90 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
91 SQLiteDatabase db = helper.getWritableDatabase();
\r
92 db.beginTransaction();
\r
95 SQLiteStatement stmt = updateStmt;
\r
96 stmt.bindString(i++, jp.getSiteSwap().toString());
\r
97 stmt.bindLong(i++, jp.getHeight());
\r
98 stmt.bindLong(i++, jp.getDwell());
\r
99 stmt.bindString(i++, jp.getName());
\r
100 stmt.bindString(i++, jp.motionToString());
\r
101 stmt.bindLong(i++, jp.getId());
\r
102 stmt.bindLong(i++, helper.getLangId());
\r
104 db.setTransactionSuccessful();
\r
105 } catch (SQLException e){
\r
106 throw new JmException(e);
\r
108 db.endTransaction();
\r
112 public void delete(int id) throws JmException{
\r
113 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
114 SQLiteDatabase db = helper.getWritableDatabase();
\r
115 db.beginTransaction();
\r
118 SQLiteStatement stmt = deleteStmt;
\r
119 stmt.bindLong(i++, id);
\r
120 stmt.bindLong(i++, helper.getLangId());
\r
122 db.setTransactionSuccessful();
\r
123 } catch (SQLException e){
\r
124 throw new JmException(e);
\r
126 db.endTransaction();
\r
130 public JmPattern[] get(int type) throws JmException{
\r
131 JmPattern[] list = null;
\r
133 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
134 SQLiteDatabase db = helper.getReadableDatabase();
\r
135 list = get(db, type);
\r
136 } catch (SQLException e){
\r
137 throw new JmException(e);
\r
142 public JmPattern[] get(SQLiteDatabase db, int type) throws JmException{
\r
143 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
144 String selection = "lang = " + helper.getLangId() + " and type = " + type;
\r
145 String orderBy = "idx";
\r
146 return get(db, selection, orderBy);
\r
149 public JmPattern[] get(SQLiteDatabase db, String selection, String orderBy) throws JmException{
\r
150 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
151 JmPattern[] list = null;
\r
152 Cursor c = db.query(
\r
162 selection, null, null, null, orderBy);
\r
164 list = new JmPattern[c.getCount()];
\r
165 for (int i = 0; i < list.length; i++) {
\r
166 JmPattern jp = new JmPattern(
\r
168 c.getInt(1), // type
\r
169 c.getString(5), // name
\r
170 c.getString(2), // siteswap
\r
171 c.getInt(3), // height
\r
172 c.getInt(4), // dwell
\r
173 JmPattern.getMotion(c.getString(6))); // motions
\r
181 public JmPattern[] getFromId(int id) throws JmException{
\r
182 JmPattern[] list = null;
\r
184 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
185 SQLiteDatabase db = helper.getReadableDatabase();
\r
186 String selection = "id = " + id + " and lang = " + helper.getLangId();
\r
187 Cursor c = db.query(
\r
197 selection, null, null, null, null);
\r
199 list = new JmPattern[c.getCount()];
\r
200 for (int i = 0; i < list.length; i++) {
\r
201 JmPattern jp = new JmPattern(
\r
203 c.getInt(1), // type
\r
204 c.getString(5), // name
\r
205 c.getString(2), // siteswap
\r
206 c.getInt(3), // height
\r
207 c.getInt(4), // dwell
\r
208 JmPattern.getMotion(c.getString(6))); // motions
\r
213 } catch (SQLException e){
\r
214 throw new JmException(e);
\r
219 public int max(int type) throws JmException{
\r
222 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
223 SQLiteDatabase db = helper.getReadableDatabase();
\r
224 String sql = "select max(idx) from pattern where type = " + type + " and lang = " + helper.getLangId();
\r
225 Cursor c = db.rawQuery(sql, null);
\r
229 } catch (SQLException e){
\r
230 throw new JmException(e);
\r
235 public int count() throws JmException{
\r
238 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
239 SQLiteDatabase db = helper.getReadableDatabase();
\r
240 String sql = "select count(*) from pattern where lang = " + helper.getLangId() + ";";
\r
241 Cursor c = db.rawQuery(sql, null);
\r
243 count = c.getInt(0); // count;
\r
245 } catch (SQLException e){
\r
246 throw new JmException(e);
\r
251 public int count(int type) throws JmException{
\r
254 DatabaseHelper helper = DatabaseHelper.getInstance();
\r
255 SQLiteDatabase db = helper.getReadableDatabase();
\r
256 String sql = "select count(*) from pattern where type = " + type + " and lang = " + helper.getLangId() + ";";
\r
257 Cursor c = db.rawQuery(sql, null);
\r
259 count = c.getInt(0); // count;
\r
261 } catch (SQLException e){
\r
262 throw new JmException(e);
\r