OSDN Git Service

addNT
authorYuji Konishi <yuji.k64613@gmail.com>
Thu, 28 Feb 2013 11:57:14 +0000 (20:57 +0900)
committerYuji Konishi <yuji.k64613@gmail.com>
Thu, 28 Feb 2013 11:57:14 +0000 (20:57 +0900)
19 files changed:
workspace/JuggleMaster/bin/JuggleMaster.apk
workspace/JuggleMaster/bin/classes.dex
workspace/JuggleMaster/bin/classes/com/jm/GenPattern.class
workspace/JuggleMaster/bin/classes/com/jm/Menu1$1.class
workspace/JuggleMaster/bin/classes/com/jm/Menu1.class
workspace/JuggleMaster/bin/classes/com/jm/PatternList.class
workspace/JuggleMaster/bin/classes/com/jm/db/Dao.class
workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand$1.class
workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand$2.class
workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand.class
workspace/JuggleMaster/bin/resources.ap_
workspace/JuggleMaster/src/com/jm/GenPattern.java
workspace/JuggleMaster/src/com/jm/Menu1.java
workspace/JuggleMaster/src/com/jm/PatternList.java
workspace/JuggleMaster/src/com/jm/db/Dao.java
workspace/JuggleMaster/src/com/jm/db/DatabaseHelper.java
workspace/JuggleMaster/src/com/jm/db/InitDB.java [new file with mode: 0644]
workspace/JuggleMaster/src/com/jm/utility/AsyncTaskCommand.java
workspace/JuggleMaster/src/com/jm/utility/BaseActivity.java

index 3fbae8b..b094712 100644 (file)
Binary files a/workspace/JuggleMaster/bin/JuggleMaster.apk and b/workspace/JuggleMaster/bin/JuggleMaster.apk differ
index f690c78..b6c2a52 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes.dex and b/workspace/JuggleMaster/bin/classes.dex differ
index 7e98c6c..86aa3a1 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes/com/jm/GenPattern.class and b/workspace/JuggleMaster/bin/classes/com/jm/GenPattern.class differ
index c8d2496..a27c606 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes/com/jm/Menu1$1.class and b/workspace/JuggleMaster/bin/classes/com/jm/Menu1$1.class differ
index ebba998..ce8f731 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes/com/jm/Menu1.class and b/workspace/JuggleMaster/bin/classes/com/jm/Menu1.class differ
index a140295..3782203 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes/com/jm/PatternList.class and b/workspace/JuggleMaster/bin/classes/com/jm/PatternList.class differ
index ef46527..cdb5b11 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes/com/jm/db/Dao.class and b/workspace/JuggleMaster/bin/classes/com/jm/db/Dao.class differ
index 4c23823..ee98593 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand$1.class and b/workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand$1.class differ
index 5264859..ad1af62 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand$2.class and b/workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand$2.class differ
index 2d4e1ff..d29c719 100644 (file)
Binary files a/workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand.class and b/workspace/JuggleMaster/bin/classes/com/jm/utility/AsyncTaskCommand.class differ
index e40422b..32138d6 100644 (file)
Binary files a/workspace/JuggleMaster/bin/resources.ap_ and b/workspace/JuggleMaster/bin/resources.ap_ differ
index 9a4844a..3c5354f 100644 (file)
@@ -146,7 +146,7 @@ public class GenPattern extends BaseActivity {
                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
index 57f09c0..b2eb944 100644 (file)
@@ -1,6 +1,7 @@
 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
@@ -8,46 +9,73 @@ import android.widget.AdapterView.OnItemClickListener;
 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
index 786df68..c8f502e 100644 (file)
@@ -32,11 +32,12 @@ public class PatternList {
                \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
@@ -197,18 +198,18 @@ public class PatternList {
 //             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
@@ -561,7 +562,7 @@ public class PatternList {
        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
@@ -835,7 +836,7 @@ public class PatternList {
        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
@@ -1110,7 +1111,7 @@ public class PatternList {
        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
index 1e3a1e9..b0b4b79 100644 (file)
@@ -62,6 +62,11 @@ public class Dao {
                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
@@ -86,6 +91,24 @@ public class Dao {
                }\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
@@ -232,6 +255,22 @@ public class Dao {
                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
index aea639a..137aa6e 100644 (file)
@@ -11,44 +11,51 @@ import com.jm.utility.Debug;
 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
@@ -69,48 +76,87 @@ public class DatabaseHelper extends SQLiteOpenHelper {
        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
diff --git a/workspace/JuggleMaster/src/com/jm/db/InitDB.java b/workspace/JuggleMaster/src/com/jm/db/InitDB.java
new file mode 100644 (file)
index 0000000..f5b4f1f
--- /dev/null
@@ -0,0 +1,66 @@
+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
+
+       }
+
+}
index 28bee70..95d8391 100644 (file)
@@ -16,32 +16,38 @@ public class AsyncTaskCommand extends AsyncTask<String, Integer, String> {
        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
@@ -56,62 +62,66 @@ public class AsyncTaskCommand extends AsyncTask<String, Integer, String> {
                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
index aa8b247..5d7f8c9 100644 (file)
@@ -20,7 +20,7 @@ public class BaseActivity extends Activity {
     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