OSDN Git Service

T29621
authorYuji Konishi <yuji.k64613@gmail.com>
Fri, 21 Sep 2012 02:47:24 +0000 (11:47 +0900)
committerYuji Konishi <yuji.k64613@gmail.com>
Fri, 21 Sep 2012 02:47:24 +0000 (11:47 +0900)
source/workspace/EverFolder/gen/com/yuji/ef/R.java
source/workspace/EverFolder/res/values-ja/strings.xml
source/workspace/EverFolder/res/values/strings.xml
source/workspace/EverFolder/src/com/yuji/ef/Initialize.java
source/workspace/EverFolder/src/com/yuji/ef/SettingActivity.java
source/workspace/EverFolder/src/com/yuji/ef/dao/DatabaseHelper.java
source/workspace/EverFolder/src/com/yuji/ef/dao/LockDao.java
source/workspace/EverFolder/src/com/yuji/ef/task/NoteUpdateTask.java

index 8dcfb14..45c8678 100644 (file)
@@ -68,8 +68,9 @@ public final class R {
         public static final int setting=0x7f030004;
     }
     public static final class string {
-        public static final int ErrorLogin=0x7f06002c;
-        public static final int ErrorSystem=0x7f06002d;
+        public static final int ErrorLogin=0x7f06002d;
+        public static final int ErrorNetwork=0x7f06002c;
+        public static final int ErrorSystem=0x7f06002e;
         public static final int ErrorUpdate=0x7f06002b;
         public static final int MenuAdd=0x7f060020;
         public static final int MenuCut=0x7f06001e;
index 698442a..2c56cf5 100644 (file)
@@ -66,6 +66,7 @@
     <string name="toastSystem">予期せぬエラーが発生しました</string>
     
     <string name="ErrorUpdate">データの更新に失敗しました</string>
+    <string name="ErrorNetwork">ネットワークエラーが発生しました</string>
     <string name="ErrorLogin">ログインに失敗しました</string>
     <string name="ErrorSystem">予期せぬエラーが発生しました</string>
 </resources>
\ No newline at end of file
index 3eeb65c..ee9405d 100644 (file)
@@ -66,6 +66,7 @@
     <string name="toastSystem">An unexpected error has occurred</string>
     
     <string name="ErrorUpdate">Failed to update the data</string>
+    <string name="ErrorNetwork">A network error occurred</string>
     <string name="ErrorLogin">Failed to login</string>
     <string name="ErrorSystem">An unexpected error has occurred</string>        
 </resources>
\ No newline at end of file
index c56ddac..a4679b4 100644 (file)
@@ -4,8 +4,10 @@ import android.app.Activity;
 import android.content.Context;
 
 import com.yuji.ef.common.Constant;
+import com.yuji.ef.dao.BookDao;
 import com.yuji.ef.dao.DatabaseHelper;
 import com.yuji.ef.dao.LockDao;
+import com.yuji.ef.dao.NodeCacheDao;
 import com.yuji.ef.exception.EfError;
 import com.yuji.ef.exception.EfException;
 import com.yuji.ef.pref.EditPrefUtil;
@@ -34,7 +36,12 @@ public class Initialize {
                        
                        EvernoteUtil util = EvernoteUtil.getInstance();
                        util.setConfig("yuji-k64613", "TODO");
-                       DatabaseHelper.init(context);
+
+                       DatabaseHelper.addDao(NodeCacheDao.getInstance());
+                       DatabaseHelper.addDao(BookDao.getInstance());
+                       DatabaseHelper.init(context, "EverFolder.db");
+                       DatabaseHelper.addDao(LockDao.getInstance());                                   
+                       DatabaseHelper.init(context, "Lock.db");
                        
                        // #29573
                        if (activity != null && activity.getClass() == EverFolderActivity.class){
index e58b6d6..652645e 100644 (file)
@@ -26,6 +26,7 @@ import com.yuji.ef.dao.LockDao;
 import com.yuji.ef.dao.Node;
 import com.yuji.ef.dao.NodeCacheDao;
 import com.yuji.ef.dao.NodeDao;
+import com.yuji.ef.exception.EfException;
 import com.yuji.ef.pref.EditPrefUtil;
 import com.yuji.ef.service.NoteUpdatorService;
 import com.yuji.ef.task.NoteUpdateTask;
@@ -57,6 +58,26 @@ public class SettingActivity extends BaseActivity implements LockListener {
        private boolean lock = false;
        private boolean isInit = true;
        private boolean isInCycle = false;
+
+       private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
+               @Override
+               public void onReceive(Context context, Intent intent) {
+                       String action = intent.getAction();
+
+                       if (action.equals(Constant.ACTION_MESSAGE)) {
+                               String msg = intent
+                                               .getStringExtra(Constant.ACTION_MESSAGE_MESSAGE);
+                               EfException.msg(SettingActivity.this, msg);
+                       } else if (action.equals(Constant.ACTION_UPDATE)) {
+                               if (isInCycle && !lock) {
+                                       LockDao lockDao = (LockDao) LockDao.getInstance();
+                                       lock = lockDao.lock(SettingActivity.this,
+                                                       Constant.LOCK_UPDATE_NOTE);
+                                       setStatus();
+                               }
+                       }
+               }
+       };
        
        private class NoteUpdatorReceiver extends BroadcastReceiver {
 
@@ -85,6 +106,11 @@ public class SettingActivity extends BaseActivity implements LockListener {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.setting);
 
+               IntentFilter intentFilter = new IntentFilter();
+               intentFilter.addAction(Constant.ACTION_UPDATE);
+               intentFilter.addAction(Constant.ACTION_MESSAGE);
+               registerReceiver(broadcastReceiver, intentFilter);
+
                msgLayout = (LinearLayout) findViewById(R.id.settingMsgLayout);
                confirmMsg = (TextView) findViewById(R.id.settingConfirmMsg);
                loginButton = (Button) findViewById(R.id.settingLoginButton);
index 522eb57..2c5c914 100644 (file)
@@ -10,38 +10,50 @@ import android.database.sqlite.SQLiteOpenHelper;
 import com.yuji.ef.utility.Debug;
 
 public class DatabaseHelper extends SQLiteOpenHelper {
-       private static DatabaseHelper instance = null;
-       private static List<IDao<?>> daoList = null;
-
+       private static List<DatabaseHelper> instances = new ArrayList<DatabaseHelper>();
+       private static List<List<IDao<?>>> daoLists = new ArrayList<List<IDao<?>>>();
+       private int id;
+       
        public static DatabaseHelper getInstance() {
-               return instance;
+               return getInstance(0);
        }
 
-       public static void init(Context context) {
-               if (instance != null) {
-                       return;
-               }
-               daoList = new ArrayList<IDao<?>>();
-               daoList.add(NodeCacheDao.getInstance());
-               daoList.add(BookDao.getInstance());
-               daoList.add(LockDao.getInstance());
+       public static DatabaseHelper getInstance(int id) {
+               return instances.get(id);
+       }
 
-               DatabaseHelper helper = new DatabaseHelper(context);
+       public static void addDao(IDao<?> dao){
+               int id = instances.size();
+               while (daoLists.size() < id + 1){
+                       daoLists.add(new ArrayList<IDao<?>>());
+               }
+               List<IDao<?>> daoList = daoLists.get(id);
+               daoList.add(dao);
+       }
+       
+       public static void init(Context context, String name) {
+               int id = instances.size();
+               DatabaseHelper helper = new DatabaseHelper(context, name, id);
                SQLiteDatabase db = helper.getWritableDatabase();
+               instances.add(helper);
 
+               List<IDao<?>> daoList = daoLists.get(id);
                for (IDao<?> dao : daoList) {
                        dao.init(db);
                }
        }
 
-       public DatabaseHelper(Context context) {
-               super(context, "EverFolder.db", null, 1);
-               instance = this;
+       private DatabaseHelper(Context context, String name, int id) {
+//             super(context, "EverFolder.db", null, 1);
+               super(context, name, null, 1);
+               this.id = id;
        }
 
        @Override
        public void onCreate(SQLiteDatabase db) {
                try {
+                       List<IDao<?>> daoList = daoLists.get(id);
+                       
                        for (IDao<?> dao : daoList) {
                                dao.onCreate(db);
                                dao.init(db);
@@ -67,7 +79,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
        }
 
        public SQLiteDatabase getSQLiteDatabase() {
-               DatabaseHelper helper = DatabaseHelper.getInstance();
+               DatabaseHelper helper = DatabaseHelper.getInstance(id);
                SQLiteDatabase db = helper.getWritableDatabase();
                return db;
        }       
index 6df626e..08a76fd 100644 (file)
@@ -76,7 +76,7 @@ public class LockDao implements IDao<Lock> {
 
        private List<Lock> search(String selection, String[] selectionArgs,
                        String orderBy) {
-               return search(DatabaseHelper.getInstance().getSQLiteDatabase(),
+               return search(getSQLiteDatabase(),
                                selection, selectionArgs, orderBy);
        }
 
@@ -117,7 +117,7 @@ public class LockDao implements IDao<Lock> {
        }
 
        public long add(Lock lock) {
-               return add(DatabaseHelper.getInstance().getSQLiteDatabase(), lock);
+               return add(getSQLiteDatabase(), lock);
        }
 
        private long add(SQLiteDatabase db, Lock lock) {
@@ -161,7 +161,7 @@ public class LockDao implements IDao<Lock> {
        }
 
        public long delete(String key, String clazz) {
-               return delete(DatabaseHelper.getInstance().getSQLiteDatabase(), key,
+               return delete(getSQLiteDatabase(), key,
                                clazz);
        }
 
@@ -249,4 +249,8 @@ public class LockDao implements IDao<Lock> {
        public boolean isLock(Object obj, String key) {
                return searchByKey(key) != null;
        }
+       
+       public SQLiteDatabase getSQLiteDatabase(){
+               return DatabaseHelper.getInstance(1).getSQLiteDatabase();
+       }
 }
index 64b7231..a35f214 100644 (file)
@@ -38,7 +38,7 @@ public class NoteUpdateTask implements AsyncTaskIF {
                } catch (RollbackException e) {
                        if (e.getError() == EfError.NETWORK){
                                // TODO
-                               EfException.msg(com.yuji.ef.R.string.ErrorUpdate);                              
+                               EfException.msg(com.yuji.ef.R.string.ErrorNetwork);                             
                        }
                        else {
                                EfException.msg(com.yuji.ef.R.string.ErrorUpdate);