import eu.alefzero.owncloud.db.ProviderMeta.ProviderTableMeta;
import android.accounts.Account;
+import android.content.ContentProvider;
import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.ContentValues;
}
}
+ public OCFile(ContentProviderClient cp, Account account, String path) {
+ cp_ = cp;
+ account_ = account;
+
+ try {
+ Cursor c = cp_.query(ProviderTableMeta.CONTENT_URI_FILE, null,
+ ProviderTableMeta.FILE_ACCOUNT_OWNER + "=? AND "
+ + ProviderTableMeta.FILE_PATH + "=?", new String[]{account_.name,
+ path}, null);
+ if (c.moveToFirst()) {
+ setFileData(c);
+ if (path_ != null)
+ path_ = path;
+ }
+ } catch (RemoteException e) {
+ Log.d(TAG , e.getMessage());
+ }
+ }
+
public long getFileId() {
return id_;
}
import android.content.Context;\r
import android.net.Uri;\r
import android.text.TextUtils;\r
+import android.util.Log;\r
import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
import eu.alefzero.owncloud.datamodel.OCFile;\r
import eu.alefzero.webdav.HttpPropFind;\r
private HttpHost mHost;
private WebdavClient mClient = null;
-
+ private static String TAG = "AbstractOwnCloudSyncAdapter";\r
+
public AbstractOwnCloudSyncAdapter(Context context, boolean autoInitialize) {
super(context, autoInitialize);
this.setAccountManager(AccountManager.get(context));
continue;\r
}
String path = n.stripPathFromFilename(uri.getPath());\r
- OCFile new_file = OCFile.createNewFile(getContentProvider(),\r
- getAccount(),\r
- n.getProperty(NodeProperty.PATH),\r
- 0,//Long.parseLong(n.getProperty(NodeProperty.CONTENT_LENGTH)),\r
- 0,//Long.parseLong(n.getProperty(NodeProperty.CREATE_DATE)),\r
- 0,//Long.parseLong(n.getProperty(NodeProperty.LAST_MODIFIED_DATE)),\r
- n.getProperty(NodeProperty.RESOURCE_TYPE),\r
- parent_id);\r
- new_file.save();\r
- if (override_parent) {\r
- parent_id = new_file.getFileId();\r
- override_parent = false;\r
- }
+ \r
+ long mod = n.getProperty(NodeProperty.LAST_MODIFIED_DATE) == null ?\r
+ 0 :\r
+ Long.parseLong(n.getProperty(NodeProperty.LAST_MODIFIED_DATE));\r
+ OCFile file = new OCFile(getContentProvider(), getAccount(), n.getProperty(NodeProperty.PATH));\r
+ if (file.fileExtist() && file.getModificationTimestamp() >= mod) {\r
+ Log.d(TAG, "No update for file/dir " + file.getFileName() + " is needed");\r
+ } else {\r
+ Log.d(TAG, "File " + n.getProperty(NodeProperty.PATH) + " will be " + (file.fileExtist() ? "updated" : "created"));\r
+ long len = n.getProperty(NodeProperty.CONTENT_LENGTH) == null ?\r
+ 0 :\r
+ Long.parseLong(n.getProperty(NodeProperty.CONTENT_LENGTH));\r
+ long create = n.getProperty(NodeProperty.CREATE_DATE) == null ?\r
+ 0 :\r
+ Long.parseLong(n.getProperty(NodeProperty.CREATE_DATE));\r
+ file = OCFile.createNewFile(getContentProvider(),\r
+ getAccount(),\r
+ n.getProperty(NodeProperty.PATH),\r
+ len,\r
+ create,\r
+ mod,\r
+ n.getProperty(NodeProperty.RESOURCE_TYPE),\r
+ parent_id);\r
+ file.save();\r
+ if (override_parent) {\r
+ parent_id = file.getFileId();\r
+ override_parent = false;\r
+ }\r
+ }
if (!TextUtils.isEmpty(n.getProperty(NodeProperty.NAME)) &&
n.getProperty(NodeProperty.RESOURCE_TYPE).equals("DIR")) {
HttpPropFind method = new HttpPropFind(uri.getPath() + path + n.getProperty(NodeProperty.NAME).replace(" ", "%20") + "/");
HttpResponse response = fireRawRequest(method);
- parseResponse(response, uri, client, targetHost, n.getChildList(), true, new_file.getFileId());
+ parseResponse(response, uri, client, targetHost, n.getChildList(), true, file.getFileId());
}
}
}