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
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
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