From b3710b2e790650708428173205c4707949b346fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Blot=20=28=40U-Exp=29?= Date: Fri, 12 Dec 2014 17:22:16 +0100 Subject: [PATCH] Misc fixes and sync on connectivity works. * Export connectivity monitor. * Sync works properly when data was available, but we need to find why there is more messages than we need when we get them. * add missing files --- ic_launcher-web.png | Bin 0 -> 83622 bytes res/menu/main.xml | 13 ++ res/values-en/strings.xml | 3 +- res/values-fr/strings.xml | 4 +- res/values/strings.xml | 3 +- .../ConnectivityChanged.java | 55 ++++-- .../owncloud_sms/engine/ASyncTask.java | 65 +++++++ .../engine/ConnectivityMonitor.java | 29 ++++ .../engine/OCSMSOwnCloudClient.java | 10 +- .../owncloud_sms/engine/SmsFetcher.java | 160 +++++++++++++----- .../owncloud_sms/enums/MailboxID.java | 1 + .../owncloud_sms/observers/SmsObserver.java | 51 +----- 12 files changed, 289 insertions(+), 105 deletions(-) create mode 100644 ic_launcher-web.png create mode 100644 res/menu/main.xml create mode 100644 src/fr/unix_experience/owncloud_sms/engine/ASyncTask.java create mode 100644 src/fr/unix_experience/owncloud_sms/engine/ConnectivityMonitor.java diff --git a/ic_launcher-web.png b/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..a169e78a3d107d7491441113d61f4252741f510b GIT binary patch literal 83622 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

5>Z@nwC#LXUo$qu<;U^(by~mr)MLX+U=e4 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 I)G+Y>0@ye+_5c6? literal 0 HcmV?d00001 diff --git a/res/menu/main.xml b/res/menu/main.xml new file mode 100644 index 0000000..30213a9 --- /dev/null +++ b/res/menu/main.xml @@ -0,0 +1,13 @@ +

+ + + + + diff --git a/res/values-en/strings.xml b/res/values-en/strings.xml index 9011565..45750f6 100644 --- a/res/values-en/strings.xml +++ b/res/values-en/strings.xml @@ -27,7 +27,7 @@ --> - 2 + 3 @@ -131,5 +131,6 @@ Error #13: Unable to perform a connection to ownCloud instance Error #14: Unable to parse server response Error #15: Unable to parse server response + Error #16: No data connection available diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index c8b2a76..433b0ea 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -27,7 +27,7 @@ --> - 2 + 3 @@ -90,4 +90,6 @@ Processus de synchronisation Synchonisation en cours... Erreur fatale ! + + Erreur #16: Aucune connexion data disponible diff --git a/res/values/strings.xml b/res/values/strings.xml index d6cfa6c..adcabad 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -27,7 +27,7 @@ --> - 2 + 3 ownCloud-SMS @@ -142,5 +142,6 @@ Error #13: Unable to perform a connection to ownCloud instance Error #14: Unable to parse server response Error #15: Unable to parse server response + Error #16: No data connection available diff --git a/src/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java b/src/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java index 335d970..55fe4fa 100644 --- a/src/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java +++ b/src/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java @@ -1,30 +1,63 @@ package fr.unix_experience.owncloud_sms.broadcast_receivers; +/* + * Copyright (c) 2014, Loic Blot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import org.json.JSONArray; + +import fr.unix_experience.owncloud_sms.engine.ASyncTask; +import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor; +import fr.unix_experience.owncloud_sms.engine.SmsFetcher; +import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.util.Log; -public class ConnectivityChanged extends BroadcastReceiver { +public class ConnectivityChanged extends BroadcastReceiver implements ASyncTask { @Override - public void onReceive(Context context, Intent intent) { - // Check the connectivity - final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - - final android.net.NetworkInfo niWiFi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); - final android.net.NetworkInfo niMobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); - + public void onReceive(Context context, Intent intent) { + ConnectivityMonitor cMon = new ConnectivityMonitor(context); // If data is available and previous dataConnectionState was false, then we need to sync - if ((niWiFi.isAvailable() || niMobile.isAvailable()) && dataConnectionAvailable == false) { + if (cMon.isValid() && dataConnectionAvailable == false) { dataConnectionAvailable = true; Log.d(TAG,"ConnectivityChanged.onReceive, data conn available"); - // @TODO: check if last message is last synced msg (shared preference) + checkMessagesToSent(context); } // No data available and previous dataConnectionState was true - else if (dataConnectionAvailable == true && !niWiFi.isAvailable() && !niMobile.isAvailable()) { + else if (dataConnectionAvailable == true && !cMon.isValid()) { dataConnectionAvailable = false; + Log.d(TAG,"ConnectivityChanges.onReceive: data conn is off"); + } + } + + private void checkMessagesToSent(Context context) { + // Get last message synced from preferences + Long lastMessageSynced = (new OCSMSSharedPrefs(context)).getLastMessageDate(); + Log.d(TAG,"Synced Last:" + lastMessageSynced); + + // Now fetch messages since last stored date + JSONArray smsList = new SmsFetcher(context).bufferizeMessagesSinceDate(lastMessageSynced); + Log.d(TAG,"smsList " + smsList.toString()); + + if (smsList != null) { + new SyncTask(context, smsList).execute(); } } diff --git a/src/fr/unix_experience/owncloud_sms/engine/ASyncTask.java b/src/fr/unix_experience/owncloud_sms/engine/ASyncTask.java new file mode 100644 index 0000000..e8a6ed3 --- /dev/null +++ b/src/fr/unix_experience/owncloud_sms/engine/ASyncTask.java @@ -0,0 +1,65 @@ +package fr.unix_experience.owncloud_sms.engine; + +/* + * Copyright (c) 2014, Loic Blot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import org.json.JSONArray; + +import android.accounts.Account; +import android.accounts.AccountManager; +import android.content.Context; +import android.net.Uri; +import android.os.AsyncTask; +import android.util.Log; +import fr.unix_experience.owncloud_sms.R; +import fr.unix_experience.owncloud_sms.exceptions.OCSyncException; + +public interface ASyncTask { + class SyncTask extends AsyncTask{ + public SyncTask(Context context, JSONArray smsList) { + _context = context; + _smsList = smsList; + } + + @Override + protected Void doInBackground(Void... params) { + // Get ownCloud SMS account list + AccountManager _accountMgr = AccountManager.get(_context); + + Account[] myAccountList = _accountMgr.getAccountsByType(_context.getString(R.string.account_type)); + for (int i = 0; i < myAccountList.length; i++) { + Uri serverURI = Uri.parse(_accountMgr.getUserData(myAccountList[i], "ocURI")); + + OCSMSOwnCloudClient _client = new OCSMSOwnCloudClient(_context, + serverURI, _accountMgr.getUserData(myAccountList[i], "ocLogin"), + _accountMgr.getPassword(myAccountList[i])); + + try { + _client.doPushRequest(_smsList); + } catch (OCSyncException e) { + Log.e(TAG, _context.getString(e.getErrorId())); + } + } + return null; + } + + private Context _context; + private JSONArray _smsList; + } + + static final String TAG = ASyncTask.class.getSimpleName(); +} diff --git a/src/fr/unix_experience/owncloud_sms/engine/ConnectivityMonitor.java b/src/fr/unix_experience/owncloud_sms/engine/ConnectivityMonitor.java new file mode 100644 index 0000000..e5101a9 --- /dev/null +++ b/src/fr/unix_experience/owncloud_sms/engine/ConnectivityMonitor.java @@ -0,0 +1,29 @@ +package fr.unix_experience.owncloud_sms.engine; + +import android.content.Context; +import android.net.ConnectivityManager; + +public class ConnectivityMonitor { + public ConnectivityMonitor(Context context) { + _context = context; + } + + // Valid connection = WiFi or Mobile data + public boolean isValid() { + if (_cMgr == null) { + _cMgr = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); + } + + final android.net.NetworkInfo niWiFi = _cMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + final android.net.NetworkInfo niMobile = _cMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); + + if (niWiFi.isAvailable() || niMobile.isAvailable()) { + return true; + } + + return false; + } + + private ConnectivityManager _cMgr; + private Context _context; +} diff --git a/src/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java b/src/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java index 9440aea..4dc2272 100644 --- a/src/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java +++ b/src/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java @@ -32,7 +32,6 @@ import org.json.JSONException; import org.json.JSONObject; import android.content.Context; -import android.content.SharedPreferences; import android.net.Uri; import android.util.Log; @@ -274,10 +273,19 @@ public class OCSMSOwnCloudClient { // We try maximumHttpReqTries because sometimes network is slow or unstable int tryNb = 0; + ConnectivityMonitor cMon = new ConnectivityMonitor(_context); while (tryNb < maximumHttpReqTries) { tryNb++; + if (!cMon.isValid()) { + if (tryNb == maximumHttpReqTries) { + req.releaseConnection(); + throw new OCSyncException(R.string.err_sync_no_connection_available, OCSyncErrorType.IO); + } + continue; + } + try { status = _ocClient.executeMethod(req); diff --git a/src/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java b/src/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java index 9d8f466..2873664 100644 --- a/src/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java +++ b/src/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java @@ -17,7 +17,6 @@ package fr.unix_experience.owncloud_sms.engine; * along with this program. If not, see . */ -import java.util.Date; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -40,47 +39,34 @@ public class SmsFetcher { public JSONArray fetchAllMessages() { _jsonDataDump = new JSONArray(); - fetchInboxMessages(); - fetchSentMessages(); - fetchDraftMessages(); + bufferizeMailboxMessages(MailboxID.INBOX); + bufferizeMailboxMessages(MailboxID.SENT); + bufferizeMailboxMessages(MailboxID.DRAFTS); return _jsonDataDump; } - public void fetchInboxMessages() { - bufferizeMailboxMessages("content://sms/inbox", MailboxID.INBOX); - } - - public void fetchSentMessages() { - bufferizeMailboxMessages("content://sms/sent", MailboxID.SENT); - } - - public void fetchDraftMessages() { - bufferizeMailboxMessages("content://sms/drafts", MailboxID.DRAFTS); - } - - private void bufferizeMailboxMessages(String _mb, MailboxID _mbID) { - if (_context == null || _mb.length() == 0) { + private void bufferizeMailboxMessages(MailboxID mbID) { + String mbURI = mapMailboxIDToURI(mbID); + + if (_context == null || mbURI == null) { return; } - if (_mbID != MailboxID.INBOX && _mbID != MailboxID.SENT && - _mbID != MailboxID.DRAFTS) { - Log.e(TAG,"Unhandled MailboxID " + _mbID.ordinal()); + if (mbID != MailboxID.INBOX && mbID != MailboxID.SENT && + mbID != MailboxID.DRAFTS) { + Log.e(TAG,"Unhandled MailboxID " + mbID.ordinal()); return; } - - Date startDate = new Date(); - // Fetch Sent SMS Message from Built-in Content Provider - + // We generate a ID list for this message box - String existingIDs = buildExistingMessagesString(_mbID); + String existingIDs = buildExistingMessagesString(mbID); Cursor c = null; if (existingIDs.length() > 0) { - c = (new SmsDataProvider(_context)).query(_mb, "_id NOT IN (" + existingIDs + ")"); + c = (new SmsDataProvider(_context)).query(mbURI, "_id NOT IN (" + existingIDs + ")"); } else { - c = (new SmsDataProvider(_context)).query(_mb); + c = (new SmsDataProvider(_context)).query(mbURI); } // Reading mailbox @@ -90,8 +76,6 @@ public class SmsFetcher { JSONObject entry = new JSONObject(); try { - // Reading each mail element - int msgId = -1; for(int idx=0;idxgetMailboxMessages() Time spent: " + diffInMs + "ms"); } // Used by Content Observer - public JSONArray getLastMessage(String _mb) { - if (_context == null || _mb.length() == 0) { + public JSONArray getLastMessage(MailboxID mbID) { + String mbURI = mapMailboxIDToURI(mbID); + + if (_context == null || mbURI == null) { return null; } - + // Fetch Sent SMS Message from Built-in Content Provider - Cursor c = (new SmsDataProvider(_context)).query(_mb); + Cursor c = (new SmsDataProvider(_context)).query(mbURI); c.moveToNext(); @@ -184,11 +165,8 @@ public class SmsFetcher { } // Mailbox ID is required by server - switch (entry.getInt("type")) { - case 1: entry.put("mbox", MailboxID.INBOX.ordinal()); break; - case 2: entry.put("mbox", MailboxID.SENT.ordinal()); break; - case 3: entry.put("mbox", MailboxID.DRAFTS.ordinal()); break; - } + entry.put("mbox", mbID.ordinal()); + results.put(entry); } catch (JSONException e) { Log.e(TAG, "JSON Exception when reading SMS Mailbox", e); @@ -200,6 +178,96 @@ public class SmsFetcher { return results; } + // Used by ConnectivityChanged Event + public JSONArray bufferizeMessagesSinceDate(Long sinceDate) { + _jsonDataDump = new JSONArray(); + bufferizeMessagesSinceDate(MailboxID.INBOX, sinceDate); + bufferizeMessagesSinceDate(MailboxID.SENT, sinceDate); + bufferizeMessagesSinceDate(MailboxID.DRAFTS, sinceDate); + return _jsonDataDump; + } + + // Used by ConnectivityChanged Event + public void bufferizeMessagesSinceDate(MailboxID mbID, Long sinceDate) { + String mbURI = mapMailboxIDToURI(mbID); + + if (_context == null || mbURI == null) { + return; + } + + Cursor c = (new SmsDataProvider(_context)).query(mbURI, "date > " + sinceDate); + + // Reading mailbox + if (c != null && c.getCount() > 0) { + c.moveToFirst(); + do { + JSONObject entry = new JSONObject(); + + try { + for(int idx=0;idx 0 ? "true" : "false"); + } + else { + // Special case for date, we need to record last without searching + if (colName.equals(new String("date"))) { + final Long tmpDate = c.getLong(idx); + if (tmpDate > _lastMsgDate) { + _lastMsgDate = tmpDate; + } + } + entry.put(colName, c.getString(idx)); + } + } + + // Mailbox ID is required by server + entry.put("mbox", mbID.ordinal()); + + _jsonDataDump.put(entry); + + } catch (JSONException e) { + Log.e(TAG, "JSON Exception when reading SMS Mailbox", e); + c.close(); + } + } + while(c.moveToNext()); + + Log.d(TAG, c.getCount() + " messages read from " + mbURI); + + c.close(); + } + } + + private String mapMailboxIDToURI(MailboxID mbID) { + if (mbID == MailboxID.INBOX) { + return "content://sms/inbox"; + } + else if (mbID == MailboxID.DRAFTS) { + return "content://sms/drafts"; + } + else if (mbID == MailboxID.SENT) { + return "content://sms/sent"; + } + else if (mbID == MailboxID.ALL) { + return "content://sms"; + } + + return null; + } + private String buildExistingMessagesString(MailboxID _mbID) { JSONArray existingMessages = null; if (_mbID == MailboxID.INBOX) { diff --git a/src/fr/unix_experience/owncloud_sms/enums/MailboxID.java b/src/fr/unix_experience/owncloud_sms/enums/MailboxID.java index f77f84d..b6dbe01 100644 --- a/src/fr/unix_experience/owncloud_sms/enums/MailboxID.java +++ b/src/fr/unix_experience/owncloud_sms/enums/MailboxID.java @@ -29,4 +29,5 @@ public enum MailboxID { INBOX, SENT, DRAFTS, + ALL, } diff --git a/src/fr/unix_experience/owncloud_sms/observers/SmsObserver.java b/src/fr/unix_experience/owncloud_sms/observers/SmsObserver.java index 6768b0d..0be1ca7 100644 --- a/src/fr/unix_experience/owncloud_sms/observers/SmsObserver.java +++ b/src/fr/unix_experience/owncloud_sms/observers/SmsObserver.java @@ -19,20 +19,16 @@ package fr.unix_experience.owncloud_sms.observers; import org.json.JSONArray; -import fr.unix_experience.owncloud_sms.R; +import fr.unix_experience.owncloud_sms.engine.ASyncTask; import fr.unix_experience.owncloud_sms.engine.OCSMSOwnCloudClient; import fr.unix_experience.owncloud_sms.engine.SmsFetcher; -import fr.unix_experience.owncloud_sms.exceptions.OCSyncException; -import android.accounts.Account; -import android.accounts.AccountManager; +import fr.unix_experience.owncloud_sms.enums.MailboxID; import android.content.Context; import android.database.ContentObserver; -import android.net.Uri; -import android.os.AsyncTask; import android.os.Handler; import android.util.Log; -public class SmsObserver extends ContentObserver { +public class SmsObserver extends ContentObserver implements ASyncTask { public SmsObserver(Handler handler) { super(handler); @@ -46,53 +42,20 @@ public class SmsObserver extends ContentObserver { public void onChange(boolean selfChange) { super.onChange(selfChange); Log.d(TAG, "onChange SmsObserver"); - - if (_accountMgr == null && _context != null) { - _accountMgr = AccountManager.get(_context); - } - String smsURI = "content://sms"; - - SmsFetcher sFetch = new SmsFetcher(_context); - JSONArray smsList = sFetch.getLastMessage(smsURI); + + SmsFetcher fetcher = new SmsFetcher(_context); + JSONArray smsList = fetcher.getLastMessage(MailboxID.ALL); if (smsList != null) { - new SyncTask(smsList).execute(); + new SyncTask(_context, smsList).execute(); } } - - private class SyncTask extends AsyncTask{ - public SyncTask(JSONArray smsList) { - _smsList = smsList; - } - @Override - protected Void doInBackground(Void... params) { - // Get ownCloud SMS account list - Account[] myAccountList = _accountMgr.getAccountsByType(_context.getString(R.string.account_type)); - for (int i = 0; i < myAccountList.length; i++) { - Log.d(TAG, "int i = 0; i < myAccountList.length; i++" + myAccountList[i] + " SmsObserver"); - Uri serverURI = Uri.parse(_accountMgr.getUserData(myAccountList[i], "ocURI")); - - OCSMSOwnCloudClient _client = new OCSMSOwnCloudClient(_context, - serverURI, _accountMgr.getUserData(myAccountList[i], "ocLogin"), - _accountMgr.getPassword(myAccountList[i])); - - try { - _client.doPushRequest(_smsList); - } catch (OCSyncException e) { - Log.e(TAG, _context.getString(e.getErrorId())); - } - } - return null; - } - private JSONArray _smsList; - } public void setContext(Context context) { _context = context; } private Context _context; - private static AccountManager _accountMgr; private static final String TAG = OCSMSOwnCloudClient.class.getSimpleName(); }