OSDN Git Service

一応、正常系だけながら同期できるようにした。
authoru6k.yu1 <u6k.yu1@gmail.com>
Thu, 4 Nov 2010 16:46:33 +0000 (01:46 +0900)
committeru6k.yu1 <u6k.yu1@gmail.com>
Thu, 4 Nov 2010 16:46:33 +0000 (01:46 +0900)
andro-memo-android/src/jp/gr/java_conf/u6k/andro_memo/android/EditActivity.java
andro-memo-android/src/jp/gr/java_conf/u6k/andro_memo/android/ListActivity.java
andro-memo-android/src/jp/gr/java_conf/u6k/andro_memo/android/MemoDao.java
andro-memo-web/src/jp/gr/java_conf/u6k/andro_memo/model/MemoModel.java
andro-memo-web/war/res/app/andro-memo-android.apk

index 9d8afd4..856364c 100644 (file)
@@ -99,6 +99,8 @@ public class EditActivity extends Activity {
 \r
                             memoDao.create(this._memo.getMemoKey(), this._memo.getTitle(), this._memo.getTag(), this._memo.getContent(), this._memo.getState(), this._memo.getUpdateDatetime());\r
                         } else {\r
+                            this._memo.setState(MemoStateEnum.UPDATE);\r
+\r
                             memoDao.update(this._memo.getId(), this._memo.getMemoKey(), this._memo.getTitle(), this._memo.getTag(), this._memo.getContent(), this._memo.getState(), this._memo.getUpdateDatetime());\r
                         }\r
 \r
index 29f07a8..21608c6 100644 (file)
@@ -4,10 +4,12 @@ package jp.gr.java_conf.u6k.andro_memo.android;
 import java.util.List;\r
 \r
 import android.app.Activity;\r
+import android.app.AlertDialog;\r
 import android.content.Context;\r
 import android.content.Intent;\r
 import android.database.sqlite.SQLiteDatabase;\r
 import android.os.Bundle;\r
+import android.util.Log;\r
 import android.view.LayoutInflater;\r
 import android.view.Menu;\r
 import android.view.MenuInflater;\r
@@ -61,24 +63,23 @@ public class ListActivity extends Activity {
             this.startActivity(intent);\r
 \r
         } else if (item.getItemId() == R.id.menuSync) {\r
-            this.syncPull();\r
-\r
-            // String result;\r
-            //\r
-            // try {\r
-            // UserServiceClient c = new UserServiceClient(this);\r
-            // result = c.login();\r
-            // } catch (Exception e) {\r
-            // result = "エラー";\r
-            // Log.e("andro-memo", "error", e);\r
-            // }\r
-            //\r
-            // AlertDialog.Builder adb = new AlertDialog.Builder(this);\r
-            // adb.setTitle(R.string.sync);\r
-            // adb.setMessage(result);\r
-            // adb.setPositiveButton("OK", null);\r
-            // AlertDialog ad = adb.create();\r
-            // ad.show();\r
+            String result;\r
+\r
+            try {\r
+                this.syncPull();\r
+                this.syncPush();\r
+                result = "同期成功";\r
+            } catch (Exception e) {\r
+                result = "エラー";\r
+                Log.e("andro-memo", "error", e);\r
+            }\r
+\r
+            AlertDialog.Builder adb = new AlertDialog.Builder(this);\r
+            adb.setTitle(R.string.sync);\r
+            adb.setMessage(result);\r
+            adb.setPositiveButton("OK", null);\r
+            AlertDialog ad = adb.create();\r
+            ad.show();\r
         }\r
 \r
         return super.onOptionsItemSelected(item);\r
@@ -103,10 +104,68 @@ public class ListActivity extends Activity {
                     for (MemoEntity memoTemp : memoList) {\r
                         MemoEntity memo = memoDao.findByKey(memoTemp.getMemoKey());\r
 \r
-                        if (memo == null || memoTemp.getUpdateDatetime().compareTo(memo.getUpdateDatetime()) > 0) {\r
-                            memo = memoService.findByKey(loginTicketKey, memoTemp.getMemoKey());\r
+                        if (memo == null) {\r
+                            memoTemp = memoService.findByKey(loginTicketKey, memoTemp.getMemoKey());\r
+\r
+                            memoDao.create(memoTemp.getMemoKey(), memoTemp.getTitle(), memoTemp.getTag(), memoTemp.getContent(), MemoStateEnum.SYNC, memoTemp.getUpdateDatetime());\r
+                        } else if (memoTemp.getUpdateDatetime().compareTo(memo.getUpdateDatetime()) > 0) {\r
+                            memoTemp = memoService.findByKey(loginTicketKey, memoTemp.getMemoKey());\r
+\r
+                            memoDao.update(memo.getId(), memoTemp.getMemoKey(), memoTemp.getTitle(), memoTemp.getTag(), memoTemp.getContent(), MemoStateEnum.SYNC, memoTemp.getUpdateDatetime());\r
+                        }\r
+                    }\r
+\r
+                    db.setTransactionSuccessful();\r
+                } finally {\r
+                    db.endTransaction();\r
+                }\r
+            } finally {\r
+                db.close();\r
+            }\r
+        } finally {\r
+            con.close();\r
+        }\r
+\r
+        userService.logout(loginTicketKey);\r
+\r
+        this.selectMemo();\r
+    }\r
+\r
+    private void syncPush() {\r
+        UserServiceClient userService = new UserServiceClient(this);\r
+        MemoServiceClient memoService = new MemoServiceClient(this);\r
+\r
+        String loginTicketKey = userService.login();\r
+\r
+        SQLiteOpenHelperImpl con = new SQLiteOpenHelperImpl(this);\r
+        try {\r
+            SQLiteDatabase db = con.getWritableDatabase();\r
+            try {\r
+                db.beginTransaction();\r
+                try {\r
+                    MemoDao memoDao = new MemoDao(db);\r
+\r
+                    List<MemoEntity> memoList = memoDao.findNotSync();\r
+\r
+                    for (MemoEntity memo : memoList) {\r
+                        switch (memo.getState()) {\r
+                            case CREATE:\r
+                                String memoKey = memoService.create(loginTicketKey, memo.getTitle(), memo.getTag(), memo.getContent(), memo.getUpdateDatetime());\r
+                                memoDao.update(memo.getId(), memoKey, memo.getTitle(), memo.getTag(), memo.getContent(), MemoStateEnum.SYNC, memo.getUpdateDatetime());\r
+                                break;\r
+\r
+                            case UPDATE:\r
+                                memoService.update(loginTicketKey, memo.getMemoKey(), memo.getTitle(), memo.getTag(), memo.getContent(), memo.getUpdateDatetime());\r
+                                memoDao.update(memo.getId(), memo.getMemoKey(), memo.getTitle(), memo.getTag(), memo.getContent(), MemoStateEnum.SYNC, memo.getUpdateDatetime());\r
+                                break;\r
+\r
+                            case DELETE:\r
+                                memoService.delete(loginTicketKey, memo.getMemoKey());\r
+                                memoDao.delete(memo.getId());\r
+                                break;\r
 \r
-                            memoDao.create(memo.getMemoKey(), memo.getTitle(), memo.getTag(), memo.getContent(), MemoStateEnum.SYNC, memo.getUpdateDatetime());\r
+                            default:\r
+                                throw new RuntimeException();\r
                         }\r
                     }\r
 \r
index c4ff8d4..bbb2bb2 100644 (file)
@@ -105,6 +105,28 @@ public class MemoDao {
         return l;\r
     }\r
 \r
+    public List<MemoEntity> findNotSync() {\r
+        List<MemoEntity> l = new ArrayList<MemoEntity>();\r
+\r
+        String sql = MemoDao.SELECT + " where state != ?";\r
+\r
+        Cursor cursor = this._db.rawQuery(sql, new String[] { Integer.toString(MemoStateEnum.SYNC.getValue()) });\r
+        try {\r
+            if (cursor.moveToFirst()) {\r
+                while (!cursor.isAfterLast()) {\r
+                    MemoEntity memo = this.cursorToMemoEntity(cursor);\r
+                    l.add(memo);\r
+\r
+                    cursor.moveToNext();\r
+                }\r
+            }\r
+        } finally {\r
+            cursor.close();\r
+        }\r
+\r
+        return l;\r
+    }\r
+\r
     public List<MemoEntity> findByKeyword(String keyword) {\r
         List<MemoEntity> l = new ArrayList<MemoEntity>();\r
 \r
index 60b13e0..40a4bb0 100644 (file)
@@ -41,7 +41,9 @@ public class MemoModel {
         MemoEntity memo = new MemoEntity();\r
         memo.setTitle(title);\r
         memo.setTag(tag);\r
-        memo.setContent(new Text(content));\r
+        if (content != null) {\r
+            memo.setContent(new Text(content));\r
+        }\r
         memo.setUpdateDatetime(updateDatetime);\r
         memo.setState(MemoStateEnum.LIVES);\r
         memo.setUser(user);\r
index 0ff4206..bea39b4 100644 (file)
Binary files a/andro-memo-web/war/res/app/andro-memo-android.apk and b/andro-memo-web/war/res/app/andro-memo-android.apk differ