Testing observance on parent folders to deal with apps that replace a favorite file (delete it) when updating it

This commit is contained in:
David A. Velasco 2014-06-27 12:06:49 +02:00
parent 014096ab2d
commit 6647790620

View file

@ -69,7 +69,7 @@ public class FileObserverService extends Service {
private static String TAG = FileObserverService.class.getSimpleName();
private static Map<String, OwnCloudFileObserver> mObserversMap;
//private static Map<String, OwnCloudFileObserver> mObserverParentsMap;
private static Map<String, OwnCloudFileObserver> mObserverParentsMap;
private static DownloadCompletedReceiver mDownloadReceiver;
@ -125,7 +125,7 @@ public class FileObserverService extends Service {
registerReceiver(mDownloadReceiver, filter);
mObserversMap = new HashMap<String, OwnCloudFileObserver>();
//mObserverParentsMap = new HashMap<String, OwnCloudFileObserver>();
mObserverParentsMap = new HashMap<String, OwnCloudFileObserver>();
}
@ -142,7 +142,12 @@ public class FileObserverService extends Service {
mObserversMap.clear();
mObserversMap = null;
//mObserverParentsMap = null;
it = mObserverParentsMap.values().iterator();
while (it.hasNext()) {
it.next().stopWatching();
}
mObserverParentsMap.clear();
mObserverParentsMap = null;
super.onDestroy();
}
@ -243,21 +248,18 @@ public class FileObserverService extends Service {
}
}
/*
String parentPath = (new File(localPath)).getParent();
OwnCloudFileObserver observerParent =
new OwnCloudFileObserver( parentPath,
account,
getApplicationContext());
mObserverParentsMap.put(parentPath, observer);
if (new File(localPath).exists()) {
observer.startWatching();
Log_OC.d(TAG, "Started watching file " + localPath);
observerParent.startWatching();
Log_OC.d(TAG, "Started watching parent file " + parentPath);
OwnCloudFileObserver observerParent = mObserverParentsMap.get(parentPath);
if (observerParent == null) {
observerParent = new OwnCloudFileObserver(
parentPath, account, getApplicationContext()
);
mObserverParentsMap.put(parentPath, observer);
if (new File(parentPath).exists()) {
observerParent.startWatching();
Log_OC.d(TAG, "Started watching parent folder " + parentPath);
}
}
*/
} while (cursorOnKeptInSync.moveToNext());
@ -299,32 +301,35 @@ public class FileObserverService extends Service {
OwnCloudFileObserver observer = mObserversMap.get(localPath);
if (observer == null) {
/// the local file was never registered to observe before
observer = new OwnCloudFileObserver( localPath,
account,
getApplicationContext(),
mHandler);
observer = new OwnCloudFileObserver(
localPath, account, getApplicationContext()
);
mObserversMap.put(localPath, observer);
Log_OC.d(TAG, "Observer added for path " + localPath);
/*
String parentPath = (new File(localPath)).getParent();
OwnCloudFileObserver observerParent =
new OwnCloudFileObserver( parentPath,
account,
getApplicationContext());
mObserverParentsMap.put(parentPath, observer);
*/
if (file.isDown()) {
observer.startWatching();
Log_OC.d(TAG, "Started watching " + localPath);
/*observerParent.startWatching();
Log_OC.d(TAG, "Started watching parent file " + parentPath);*/
}
// else - the observance can't be started on a file not already down;
// mDownloadReceiver will get noticed when the download of the file finishes
}
String parentPath = (new File(localPath)).getParent();
OwnCloudFileObserver observerParent = mObserverParentsMap.get(parentPath);
if (observerParent == null) {
observerParent = new OwnCloudFileObserver(
parentPath, account, getApplicationContext()
);
mObserverParentsMap.put(parentPath, observerParent);
Log_OC.d(TAG, "Observer added for parent folder " + localPath);
if (file.isDown()) {
observerParent.startWatching();
Log_OC.d(TAG, "Started watching parent folder " + parentPath);
}
}
}
@ -381,16 +386,12 @@ public class FileObserverService extends Service {
String downloadPath = intent.getStringExtra(FileDownloader.EXTRA_FILE_PATH);
OwnCloudFileObserver observer = mObserversMap.get(downloadPath);
if (observer != null) {
/*String parentPath = (new File(downloadPath)).getParent();
OwnCloudFileObserver observerParent = mObserverParentsMap.get(parentPath); */
if (intent.getAction().equals(FileDownloader.getDownloadFinishMessage()) &&
new File(downloadPath).exists()) {
// no matter is the download was be successful or not; the file could be down,
// anyway due to a former download or upload
observer.startWatching();
Log_OC.d(TAG, "Resuming observance of " + downloadPath);
/*observerParent.startWatching();
Log_OC.d(TAG, "Watching parent again " + parentPath); */
} else if (intent.getAction().equals(FileDownloader.getDownloadAddedMessage())) {
observer.stopWatching();