String periodStr = "" + period1Str + "-" + period2Str;\r
\r
gen = new MainGen(this, mode, balls, height, periodStr, max);\r
- command = new AsyncTaskCommand(this, gen);\r
+ command = new AsyncTaskCommand(this, gen, true);\r
command.execute((String[])null);\r
setEnabled(false);\r
}\r
package com.jm;\r
\r
import android.content.Intent;\r
+import android.database.sqlite.SQLiteDatabase;\r
import android.os.Bundle;\r
import android.view.View;\r
import android.widget.AdapterView;\r
import android.widget.ArrayAdapter;\r
import android.widget.ListView;\r
\r
+import com.jm.db.Dao;\r
+import com.jm.db.DatabaseHelper;\r
+import com.jm.db.InitDB;\r
+import com.jm.utility.AsyncTaskCommand;\r
import com.jm.utility.BaseActivity;\r
+import com.jm.utility.JmException;\r
\r
public class Menu1 extends BaseActivity {\r
public static final int INDEX6 = 6;\r
public static final int INDEX7 = 7;\r
- \r
- @Override\r
- public void onCreate(Bundle savedInstanceState) {\r
- super.onCreate(savedInstanceState);\r
- setContentView(R.layout.menu1);\r
-\r
- //CharSequence[] list = PatternList.PACKAGE_INDEX;\r
- CharSequence[] list = {\r
- getString(R.string.list0_1),\r
- getString(R.string.list0_2),\r
- getString(R.string.list0_3),\r
- getString(R.string.list0_4),\r
- getString(R.string.list0_5),\r
- getString(R.string.list0_6),\r
- getString(R.string.list0_7),\r
- getString(R.string.list0_8)\r
- };\r
- ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_1, list);\r
- ListView listView = (ListView)findViewById(R.id.Menu1);\r
+\r
+ @Override\r
+ public void onCreate(Bundle savedInstanceState) {\r
+ super.onCreate(savedInstanceState);\r
+ setContentView(R.layout.menu1);\r
+\r
+ if (init()) {\r
+ return;\r
+ }\r
+\r
+ // CharSequence[] list = PatternList.PACKAGE_INDEX;\r
+ CharSequence[] list = { getString(R.string.list0_1),\r
+ getString(R.string.list0_2), getString(R.string.list0_3),\r
+ getString(R.string.list0_4), getString(R.string.list0_5),\r
+ getString(R.string.list0_6), getString(R.string.list0_7),\r
+ getString(R.string.list0_8) };\r
+ ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(\r
+ this, android.R.layout.simple_list_item_1, list);\r
+ ListView listView = (ListView) findViewById(R.id.Menu1);\r
listView.setAdapter(adapter);\r
\r
listView.setOnItemClickListener(new OnItemClickListener() {\r
@Override\r
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {\r
- if (position == INDEX7){\r
- Intent intent = new Intent(Menu1.this, (Class<?>)GenPattern.class);\r
+ public void onItemClick(AdapterView<?> parent, View view,\r
+ int position, long id) {\r
+ if (position == INDEX7) {\r
+ Intent intent = new Intent(Menu1.this,\r
+ (Class<?>) GenPattern.class);\r
intent.putExtra("INDEX", position);\r
- startActivityForResult(intent, -1); \r
- }\r
- else {\r
- Intent intent = new Intent(Menu1.this, (Class<?>)Menu2.class);\r
+ startActivityForResult(intent, -1);\r
+ } else {\r
+ Intent intent = new Intent(Menu1.this,\r
+ (Class<?>) Menu2.class);\r
intent.putExtra("INDEX", position);\r
startActivityForResult(intent, -1);\r
}\r
- } \r
+ }\r
});\r
- } \r
+ }\r
+\r
+ private boolean init() {\r
+ try {\r
+ DatabaseHelper helper = DatabaseHelper.getInstance();\r
+ boolean convFlag = helper.getConvFlag();\r
+ int count;\r
+ count = Dao.getInstance().countAll();\r
+ if (count <= 0 || convFlag) {\r
+ InitDB idb = new InitDB(this.getApplicationContext());\r
+ AsyncTaskCommand command = new AsyncTaskCommand(this, idb, false);\r
+ command.execute((String[])null);\r
+ return false;\r
+ }\r
+ } catch (JmException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
+ return true;\r
+ }\r
+ return false;\r
+ }\r
}\r
\r
}\r
\r
- public void create() throws JmException {\r
+ public void create(int langId) throws JmException {\r
//言語別設定追加\r
\r
- DatabaseHelper helper = DatabaseHelper.getInstance();\r
- switch (helper.getLangId()){\r
+ //DatabaseHelper helper = DatabaseHelper.getInstance();\r
+ //switch (helper.getLangId()){\r
+ switch (langId){\r
case DatabaseHelper.JAPANEASE_ID:\r
setPackage00();\r
setPackage01();\r
// patternList.append(jp.getName(), null);\r
// }\r
// patterns.addElement(jp);\r
- Dao.getInstance().add(jp, idx++);\r
+ Dao.getInstance().addNT(jp, idx++);\r
// }\r
}\r
\r
- private void addJp(JmPattern jp) throws JmException {\r
- if (jp.getSiteSwap() == null) return;\r
- Dao.getInstance().add(jp, DatabaseHelper.JAPANEASE_ID, idx++);\r
- }\r
+// private void addJp(JmPattern jp) throws JmException {\r
+// if (jp.getSiteSwap() == null) return;\r
+// Dao.getInstance().addNT(jp, DatabaseHelper.JAPANEASE_ID, idx++);\r
+// }\r
\r
- private int count(int type) throws JmException {\r
- return Dao.getInstance().count(type); \r
- }\r
+// private int count(int type) throws JmException {\r
+// return Dao.getInstance().count(type); \r
+// }\r
\r
// edit {\r
// private boolean delete(int index) {\r
public void setPackage06En() throws JmException {\r
clearIndex();\r
int type = 6;\r
- addJp(new JmPattern(type, "[New]", "1"));\r
+ add(new JmPattern(type, "[New]", "1"));\r
}\r
\r
public void setPackage00Fr() throws JmException {\r
public void setPackage06Fr() throws JmException {\r
clearIndex();\r
int type = 6;\r
- addJp(new JmPattern(type, "[Nouveau]", "1"));\r
+ add(new JmPattern(type, "[Nouveau]", "1"));\r
} \r
\r
public void setPackage00() throws JmException {\r
public void setPackage06() throws JmException {\r
clearIndex();\r
int type = 6;\r
- addJp(new JmPattern(type, "[新規作成]", "1"));\r
+ add(new JmPattern(type, "[新規作成]", "1"));\r
} \r
\r
}\r
add(jp, helper.getLangId(), index);\r
}\r
\r
+ public void addNT(JmPattern jp, int index) throws JmException{\r
+ DatabaseHelper helper = DatabaseHelper.getInstance();\r
+ addNT(jp, helper.getLangId(), index);\r
+ }\r
+ \r
public void add(JmPattern jp, int lang, int index) throws JmException{\r
DatabaseHelper helper = DatabaseHelper.getInstance();\r
SQLiteDatabase db = helper.getWritableDatabase();\r
}\r
}\r
\r
+ public void addNT(JmPattern jp, int lang, int index) throws JmException{\r
+ try {\r
+ int i = 1;\r
+ SQLiteStatement stmt = insertStmt;\r
+ stmt.bindLong(i++, jp.getType());\r
+ stmt.bindString(i++, jp.getSiteSwap().toString());\r
+ stmt.bindLong(i++, jp.getHeight());\r
+ stmt.bindLong(i++, jp.getDwell());\r
+ stmt.bindString(i++, jp.getName());\r
+ stmt.bindString(i++, jp.motionToString());\r
+ stmt.bindLong(i++, lang);\r
+ stmt.bindLong(i++, index);\r
+ stmt.executeInsert();\r
+ } catch (SQLException e){\r
+ throw new JmException(e);\r
+ }\r
+ }\r
+\r
public void set(JmPattern jp) throws JmException{\r
DatabaseHelper helper = DatabaseHelper.getInstance();\r
SQLiteDatabase db = helper.getWritableDatabase();\r
return m;\r
}\r
\r
+ public int countAll() throws JmException{\r
+ int count = -1;\r
+ try {\r
+ DatabaseHelper helper = DatabaseHelper.getInstance();\r
+ SQLiteDatabase db = helper.getReadableDatabase();\r
+ String sql = "select count(*) from pattern;";\r
+ Cursor c = db.rawQuery(sql, null);\r
+ c.moveToFirst();\r
+ count = c.getInt(0); // count;\r
+ c.close();\r
+ } catch (SQLException e){\r
+ throw new JmException(e);\r
+ }\r
+ return count;\r
+ }\r
+\r
public int count() throws JmException{\r
int count = -1;\r
try {\r
import com.jm.utility.JmException;\r
\r
public class DatabaseHelper extends SQLiteOpenHelper {\r
+ public final static int NONE_ID = -1;\r
public final static int ENGLISH_ID = 1;\r
public final static int JAPANEASE_ID = 2;\r
public final static int FRENCH_ID = 3;\r
- private static int langId = -1;\r
+ private static int langId = NONE_ID;\r
+ private Context context;\r
private static boolean convFlag = false;\r
- \r
+\r
private static DatabaseHelper instance = null;\r
- \r
+\r
public static DatabaseHelper getInstance() {\r
return instance;\r
}\r
\r
public static void init(Context context) throws JmException {\r
- if (instance != null){\r
+ if (instance != null) {\r
return;\r
}\r
+ \r
DatabaseHelper helper = new DatabaseHelper(context);\r
SQLiteDatabase db = helper.getWritableDatabase();\r
- int count;\r
- int type = 0;\r
- count = Dao.getInstance().count(type);\r
Dao.getInstance().start(db);\r
- PatternList p = new PatternList();\r
- if (count <= 0) {\r
- p.create();\r
- }\r
- if (convFlag){\r
- p.update(); \r
- convFlag = false;\r
- }\r
+ // TODO\r
+ // SQLiteDatabase db = helper.getWritableDatabase();\r
+ // int count;\r
+ // int type = 0;\r
+ // count = Dao.getInstance().count(type);\r
+ // Dao.getInstance().start(db);\r
+ // PatternList p = new PatternList();\r
+ // if (count <= 0) {\r
+ // p.create();\r
+ // }\r
+ // if (convFlag){\r
+ // p.update();\r
+ // convFlag = false;\r
+ // }\r
}\r
\r
public DatabaseHelper(Context context) {\r
- //super(context, "JuggleMaster.db", null, 1);\r
+ // super(context, "JuggleMaster.db", null, 1);\r
super(context, "JuggleMaster.db", null, 2);\r
instance = this;\r
- \r
- setLangId(context);\r
+\r
+ // setLangId(context);\r
+ this.context = context;\r
}\r
\r
@Override\r
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {\r
try {\r
if (oldVersion == 1 && newVersion == 2) {\r
- db.execSQL("ALTER TABLE pattern ADD COLUMN lang integer;");\r
- db.execSQL("ALTER TABLE pattern ADD COLUMN idx integer;");\r
- \r
- Dao dao = Dao.getInstance();\r
- for (int i = 0; i < 7; i++){\r
- JmPattern[] list = dao.get(db, "type = " + i, null);\r
- int size = list.length;\r
- for (int j = 0; j < size; j++){\r
- JmPattern item = list[j];\r
- int id = item.getId();\r
- db.execSQL("UPDATE pattern set idx = " + j + " WHERE id = " + id + ";");\r
- }\r
- }\r
- \r
- // 既存のデータは、日本語のデータに変換\r
- db.execSQL("UPDATE pattern set LANG = " + JAPANEASE_ID + " WHERE TYPE <> 6;");\r
- db.execSQL("DELETE FROM pattern WHERE NAME = '[新規作成]';");\r
- // ただし、マイパターンは、システムの言語に\r
- db.execSQL("UPDATE pattern set LANG = " + langId + " WHERE TYPE = 6;");\r
- db.execSQL("create index langindex on pattern(lang);");\r
- db.execSQL("create index idxindex on pattern(idx);");\r
- \r
+ // db.execSQL("ALTER TABLE pattern ADD COLUMN lang integer;");\r
+ // db.execSQL("ALTER TABLE pattern ADD COLUMN idx integer;");\r
+ //\r
+ // Dao dao = Dao.getInstance();\r
+ // for (int i = 0; i < 7; i++){\r
+ // JmPattern[] list = dao.get(db, "type = " + i, null);\r
+ // int size = list.length;\r
+ // for (int j = 0; j < size; j++){\r
+ // JmPattern item = list[j];\r
+ // int id = item.getId();\r
+ // db.execSQL("UPDATE pattern set idx = " + j + " WHERE id = " +\r
+ // id + ";");\r
+ // }\r
+ // }\r
+ //\r
+ // int langId = getLangId();\r
+ //\r
+ // // 既存のデータは、日本語のデータに変換\r
+ // db.execSQL("UPDATE pattern set LANG = " + JAPANEASE_ID +\r
+ // " WHERE TYPE <> 6;");\r
+ // db.execSQL("DELETE FROM pattern WHERE NAME = '[新規作成]';");\r
+ // // ただし、マイパターンは、システムの言語に\r
+ // db.execSQL("UPDATE pattern set LANG = " + langId +\r
+ // " WHERE TYPE = 6;");\r
+ // db.execSQL("create index langindex on pattern(lang);");\r
+ // db.execSQL("create index idxindex on pattern(idx);");\r
+\r
convFlag = true;\r
}\r
} catch (Exception e) {\r
e.printStackTrace(); // TODO\r
}\r
- } \r
- \r
- public void setLangId(Context context){\r
- if (langId < 0){\r
- String id = context.getString(com.jm.R.string.lang);\r
- try {\r
- langId = Integer.valueOf(id).intValue();\r
- }\r
- catch (Exception e){\r
- langId = ENGLISH_ID;\r
+ }\r
+\r
+ public void convert(SQLiteDatabase db, int langId) {\r
+ try {\r
+ db.execSQL("ALTER TABLE pattern ADD COLUMN lang integer;");\r
+ db.execSQL("ALTER TABLE pattern ADD COLUMN idx integer;");\r
+\r
+ Dao dao = Dao.getInstance();\r
+ for (int i = 0; i < 7; i++) {\r
+ JmPattern[] list;\r
+ list = dao.get(db, "type = " + i, null);\r
+ int size = list.length;\r
+ for (int j = 0; j < size; j++) {\r
+ JmPattern item = list[j];\r
+ int id = item.getId();\r
+ db.execSQL("UPDATE pattern set idx = " + j + " WHERE id = "\r
+ + id + ";");\r
+ }\r
}\r
+\r
+ // 既存のデータは、日本語のデータに変換\r
+ db.execSQL("UPDATE pattern set LANG = " + JAPANEASE_ID\r
+ + " WHERE TYPE <> 6;");\r
+ db.execSQL("DELETE FROM pattern WHERE NAME = '[新規作成]';");\r
+ // ただし、マイパターンは、システムの言語に\r
+ db.execSQL("UPDATE pattern set LANG = " + langId\r
+ + " WHERE TYPE = 6;");\r
+ db.execSQL("create index langindex on pattern(lang);");\r
+ db.execSQL("create index idxindex on pattern(idx);");\r
+ } catch (JmException e) {\r
+ // TODO Auto-generated catch block\r
+ e.printStackTrace();\r
}\r
+ convFlag = false;\r
+ }\r
+\r
+ public boolean getConvFlag(){\r
+ return convFlag;\r
}\r
\r
- public int getLangId(){\r
- return langId;\r
+ public void setLangId(int id) {\r
+ langId = id;\r
+ }\r
+\r
+ public int getLangId() {\r
+ if (langId != NONE_ID) {\r
+ return langId;\r
+ }\r
+ String id = context.getString(com.jm.R.string.lang);\r
+ return Integer.valueOf(id).intValue();\r
}\r
}\r
--- /dev/null
+package com.jm.db;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+
+import com.jm.PatternList;
+import com.jm.utility.AsyncTaskIF;
+import com.jm.utility.JmException;
+
+public class InitDB implements AsyncTaskIF {
+ // TODO
+ private Context context;
+
+ public InitDB(Context context) {
+ this.context = context;
+ }
+
+ @Override
+ public void doExecute() {
+ DatabaseHelper helper = DatabaseHelper.getInstance();
+ PatternList p = new PatternList();
+ SQLiteDatabase db = helper.getWritableDatabase();
+
+ try {
+ helper.setLangId(DatabaseHelper.NONE_ID);
+ int langId = helper.getLangId();
+
+ db.beginTransaction();
+
+ helper.setLangId(DatabaseHelper.ENGLISH_ID);
+ p.create(DatabaseHelper.ENGLISH_ID);
+
+ helper.setLangId(DatabaseHelper.FRENCH_ID);
+ p.create(DatabaseHelper.FRENCH_ID);
+
+ if (helper.getConvFlag()){
+ helper.convert(db, langId);
+ p.update();
+ }
+ else {
+ helper.setLangId(DatabaseHelper.JAPANEASE_ID);
+ p.create(DatabaseHelper.JAPANEASE_ID);
+ }
+ db.setTransactionSuccessful();
+ } catch (JmException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } finally {
+ db.endTransaction();
+ }
+ helper.setLangId(DatabaseHelper.NONE_ID);
+ }
+
+ @Override
+ public void cancel() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void done(boolean isCancel) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
private AsyncTaskIF command;\r
private ProgressDialog dialog;\r
private boolean isCancel = false;\r
- \r
+ private boolean isCancelable;\r
+\r
@SuppressWarnings({ "rawtypes", "unchecked" })\r
- public AsyncTaskCommand(Activity activity, AsyncTaskIF command){\r
+ public AsyncTaskCommand(Activity activity, AsyncTaskIF command,\r
+ boolean isCancelable) {\r
this.activityRef = new WeakReference(activity);\r
this.command = command;\r
+ this.isCancelable = isCancelable;\r
}\r
\r
@Override\r
- protected void onPreExecute(){\r
+ protected void onPreExecute() {\r
Debug.d(this, "onPreExecute start");\r
- \r
+\r
Activity activity = activityRef.get();\r
- if (activity == null){\r
+ if (activity == null) {\r
return;\r
}\r
dialog = new ProgressDialog(activity);\r
dialog.setIndeterminate(true);\r
- dialog.setCancelable(false);\r
+ dialog.setCancelable(isCancelable);\r
dialog.setTitle(activity.getString(R.string.calculating));\r
- dialog.setButton(activity.getString(R.string.cancel), new DialogInterface.OnClickListener() {\r
- @Override\r
- public void onClick(DialogInterface dialog, int which) {\r
- dialog.cancel();\r
- AsyncTaskCommand.this.cancel(true);\r
- }\r
- });\r
+ if (isCancelable) {\r
+ dialog.setButton(activity.getString(R.string.cancel),\r
+ new DialogInterface.OnClickListener() {\r
+ @Override\r
+ public void onClick(DialogInterface dialog, int which) {\r
+ dialog.cancel();\r
+ AsyncTaskCommand.this.cancel(true);\r
+ }\r
+ });\r
+ }\r
dialog.setOnKeyListener(new OnKeyListener() {\r
@Override\r
public boolean onKey(DialogInterface dialog, int keyCode,\r
dialog.show();\r
Debug.d(this, "onPreExecute end");\r
}\r
- \r
+\r
@Override\r
protected String doInBackground(String... arg0) {\r
Debug.d(this, "doInBackground start");\r
command.doExecute();\r
Debug.d(this, "doInBackground end");\r
- \r
+\r
return null;\r
}\r
- \r
+\r
@Override\r
- protected void onCancelled(){\r
+ protected void onCancelled() {\r
Debug.d(this, "onCancelled start");\r
- \r
+\r
isCancel = true;\r
- \r
- if (command != null){\r
+\r
+ if (command != null) {\r
command.cancel();\r
- } \r
+ }\r
onPostExecute(null);\r
Debug.d(this, "onCancelled end");\r
}\r
\r
@Override\r
- protected void onPostExecute(String result){\r
+ protected void onPostExecute(String result) {\r
Debug.d(this, "onPostExecute start");\r
\r
try {\r
- if (command != null){\r
+ if (command != null) {\r
command.done(isCancel);\r
- command = null; \r
+ command = null;\r
}\r
- if (dialog != null){\r
- dialog.dismiss();\r
+ if (dialog != null) {\r
+ try {\r
+ dialog.dismiss();\r
+ }\r
+ catch (IllegalArgumentException e){\r
+ ;\r
+ }\r
dialog = null;\r
}\r
activityRef = null;\r
- }\r
- catch (RuntimeException e){\r
+ } catch (RuntimeException e) {\r
Debug.d(this, null, e);\r
throw e;\r
}\r
Debug.d(this, "onPostExecute end");\r
}\r
- \r
- public void stop(){\r
+\r
+ public void stop() {\r
Debug.d(this, "stop start");\r
- \r
- if (command != null){\r
+\r
+ if (command != null) {\r
isCancel = true;\r
command.cancel();\r
}\r
// onPostExecute()のdialog.dismiss();でエラーとなるため\r
// 本質的な解決策ではない\r
-// dialog = null;\r
- if (dialog != null){\r
+ // dialog = null;\r
+ if (dialog != null) {\r
dialog.dismiss();\r
dialog = null;\r
}\r
public void onCreate(Bundle savedInstanceState) {\r
super.onCreate(savedInstanceState);\r
Debug.d(this, Debug.ON_CREATE);\r
- \r
+\r
try {\r
DatabaseHelper.init(getApplicationContext());\r
} catch (JmException e) {\r