Two way synchronization for files
[pub/Android/ownCloud.git] / src / com / owncloud / android / files / OwnCloudFileObserver.java
1 package com.owncloud.android.files;
2
3 import com.owncloud.android.datamodel.FileDataStorageManager;
4 import com.owncloud.android.datamodel.OCFile;
5 import com.owncloud.android.files.services.FileUploader;
6
7 import android.accounts.Account;
8 import android.content.Context;
9 import android.content.Intent;
10 import android.os.FileObserver;
11 import android.util.Log;
12
13 public class OwnCloudFileObserver extends FileObserver {
14
15 public static int CHANGES_ONLY = CLOSE_WRITE | MOVED_FROM | MODIFY;
16
17 private static String TAG = "OwnCloudFileObserver";
18 private String mPath;
19 private int mMask;
20 FileDataStorageManager mStorage;
21 Account mOCAccount;
22 OCFile mFile;
23 static Context mContext;
24
25 public OwnCloudFileObserver(String path) {
26 this(path, ALL_EVENTS);
27 }
28
29 public OwnCloudFileObserver(String path, int mask) {
30 super(path, mask);
31 mPath = path;
32 mMask = mask;
33 }
34
35 public void setAccount(Account account) {
36 mOCAccount = account;
37 }
38
39 public void setStorageManager(FileDataStorageManager manager) {
40 mStorage = manager;
41 }
42
43 public void setOCFile(OCFile file) {
44 mFile = file;
45 }
46
47 public void setContext(Context context) {
48 mContext = context;
49 }
50
51 public String getPath() {
52 return mPath;
53 }
54
55 public String getRemotePath() {
56 return mFile.getRemotePath();
57 }
58
59 @Override
60 public void onEvent(int event, String path) {
61 Log.d(TAG, "Got file modified with event " + event + " and path " + path);
62 if ((event & mMask) == 0) {
63 Log.wtf(TAG, "Incorrect event " + event + " sent for file " + path +
64 " with registered for " + mMask + " and original path " +
65 mPath);
66 return;
67 }
68 Intent i = new Intent(mContext, FileUploader.class);
69 i.putExtra(FileUploader.KEY_ACCOUNT, mOCAccount);
70 i.putExtra(FileUploader.KEY_REMOTE_FILE, mFile.getRemotePath());
71 i.putExtra(FileUploader.KEY_LOCAL_FILE, mPath);
72 i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE);
73 i.putExtra(FileUploader.KEY_FORCE_OVERWRITE, true);
74 mContext.startService(i);
75 }
76
77 }