null,\r
null);\r
mCursor.moveToFirst();\r
- pathToUpload = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH)) +\r
- mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_NAME)).replace(" ", "%20");\r
+ pathToUpload = mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta.FILE_PATH)).replace(" ", "%20");\r
}\r
+ Log.d(TAG, "Uploading file to dir " + pathToUpload);\r
\r
showDialog(DIALOG_WAITING);\r
mUploadThread = new Thread(new BackgroundUploader(pathToUpload, mStreamsToUpload, mHandler));\r
mUsername = mAccount.name.substring(0, mAccount.name.indexOf('@'));\r
mPassword = mAccountManager.getPassword(mAccount);\r
setContentView(R.layout.uploader_layout);\r
+ \r
mCursor = managedQuery(ProviderMeta.ProviderTableMeta.CONTENT_URI,\r
null,\r
- ProviderTableMeta.FILE_CONTENT_TYPE+"=? AND " + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=?",\r
- new String[]{"DIR", mAccount.name},\r
+ ProviderTableMeta.FILE_NAME+"=? AND " +ProviderTableMeta.FILE_ACCOUNT_OWNER+"=?",\r
+ new String[]{"/", mAccount.name},\r
null);\r
-\r
- ListView lv = getListView();\r
- lv.setOnItemClickListener(this);\r
- SimpleCursorAdapter sca = new SimpleCursorAdapter(this,\r
- R.layout.uploader_list_item_layout,\r
- mCursor,\r
- new String[]{ProviderTableMeta.FILE_NAME},\r
- new int[]{R.id.textView1});\r
- setListAdapter(sca);\r
- Button btn = (Button) findViewById(R.id.uploader_choose_folder);\r
- btn.setOnClickListener(this);\r
- // insert create new directory for multiple items uploading\r
- if (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) {\r
- Button createDirBtn = new Button(this);\r
- createDirBtn.setId(android.R.id.button1);\r
- createDirBtn.setText(R.string.uploader_btn_create_dir_text);\r
- createDirBtn.setOnClickListener(this);\r
- ((LinearLayout)findViewById(R.id.linearLayout1)).addView(createDirBtn, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);\r
+ \r
+ if (mCursor.moveToFirst()) {\r
+ mCursor = managedQuery(ProviderMeta.ProviderTableMeta.CONTENT_URI,\r
+ null,\r
+ ProviderTableMeta.FILE_CONTENT_TYPE+"=? AND " + ProviderTableMeta.FILE_ACCOUNT_OWNER + "=? AND " +ProviderTableMeta.FILE_PARENT+"=?",\r
+ new String[]{"DIR", mAccount.name, mCursor.getString(mCursor.getColumnIndex(ProviderTableMeta._ID))},\r
+ null); \r
+ \r
+ ListView lv = getListView();\r
+ lv.setOnItemClickListener(this);\r
+ SimpleCursorAdapter sca = new SimpleCursorAdapter(this,\r
+ R.layout.uploader_list_item_layout,\r
+ mCursor,\r
+ new String[]{ProviderTableMeta.FILE_NAME},\r
+ new int[]{R.id.textView1});\r
+ setListAdapter(sca);\r
+ Button btn = (Button) findViewById(R.id.uploader_choose_folder);\r
+ btn.setOnClickListener(this);\r
+ // insert create new directory for multiple items uploading\r
+ if (getIntent().getAction().equals(Intent.ACTION_SEND_MULTIPLE)) {\r
+ Button createDirBtn = new Button(this);\r
+ createDirBtn.setId(android.R.id.button1);\r
+ createDirBtn.setText(R.string.uploader_btn_create_dir_text);\r
+ createDirBtn.setOnClickListener(this);\r
+ ((LinearLayout)findViewById(R.id.linearLayout1)).addView(createDirBtn, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);\r
+ }\r
}\r
}\r
\r
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_;
}
\r
switch (mUriMatcher.match(uri)) {\r
case ROOT_DIRECTORY:\r
- sqlQuery.appendWhere(ProviderTableMeta.FILE_PARENT + " is null");\r
break;\r
case DIRECTORY:\r
sqlQuery.appendWhere(ProviderTableMeta.FILE_PARENT + "="+uri.getPathSegments().get(1));\r
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());
}
}
}
propertyMap_.put(NodeProperty.NAME, name);
propertyMap_.remove(NodeProperty.PATH);
propertyMap_.put(NodeProperty.PATH, name2);
- Log.i("TreeNode", toString());
return path;
}
return null;
parseDisplayName(currentNode, resultNode, davPrefix);
rList.add(resultNode);
}
-
-
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
if (currentElement.getElementsByTagName(davPrefix + CREATE_DATE).getLength() != 0) {
Date date = parseResponseDate(
currentElement.getElementsByTagName(davPrefix + CREATE_DATE).item(0).getFirstChild().getNodeValue());
- resultNode.setProperty(NodeProperty.CREATE_DATE, String.valueOf(date));
+ resultNode.setProperty(NodeProperty.CREATE_DATE, String.valueOf(date.getTime()));
}
}