- * Instruct the file to save itself to the database
- */
- public void save() {
- ContentValues cv = new ContentValues();
- cv.put(ProviderTableMeta.FILE_MODIFIED, modified_timestamp_);
- cv.put(ProviderTableMeta.FILE_CREATION, creation_timestamp_);
- cv.put(ProviderTableMeta.FILE_CONTENT_LENGTH, length_);
- cv.put(ProviderTableMeta.FILE_CONTENT_TYPE, mimetype_);
- cv.put(ProviderTableMeta.FILE_NAME, getFileName());
- if (parent_id_ != 0)
- cv.put(ProviderTableMeta.FILE_PARENT, parent_id_);
- cv.put(ProviderTableMeta.FILE_PATH, path_);
- cv.put(ProviderTableMeta.FILE_STORAGE_PATH, storage_path_);
- cv.put(ProviderTableMeta.FILE_ACCOUNT_OWNER, account_.name);
-
- if (fileExists()) {
- if (providerClient_ != null) {
- try {
- providerClient_.update(ProviderTableMeta.CONTENT_URI, cv,
- ProviderTableMeta._ID + "=?",
- new String[] { String.valueOf(id_) });
- } catch (RemoteException e) {
- Log.e(TAG, e.getMessage());
- return;
- }
- } else {
- contentResolver_.update(ProviderTableMeta.CONTENT_URI, cv,
- ProviderTableMeta._ID + "=?",
- new String[] { String.valueOf(id_) });
- }
- } else {
- Uri new_entry = null;
- if (providerClient_ != null) {
- try {
- new_entry = providerClient_.insert(ProviderTableMeta.CONTENT_URI_FILE,
- cv);
- } catch (RemoteException e) {
- Log.e(TAG, e.getMessage());
- id_ = -1;
- return;
- }
- } else {
- new_entry = contentResolver_.insert(
- ProviderTableMeta.CONTENT_URI_FILE, cv);
- }
- try {
- String p = new_entry.getEncodedPath();
- id_ = Integer.parseInt(p.substring(p.lastIndexOf('/') + 1));
- } catch (NumberFormatException e) {
- Log.e(TAG,
- "Can't retrieve file id from uri: "
- + new_entry.toString() + ", reason: "
- + e.getMessage());
- id_ = -1;
- }
- }
- }
-
- /**
- * List the directory content
- *
- * @return The directory content or null, if the file is not a directory
- */
- public Vector<OCFile> getDirectoryContent() {
- if (isDirectory() && id_ != -1) {
- Vector<OCFile> ret = new Vector<OCFile>();
-
- Uri req_uri = Uri.withAppendedPath(
- ProviderTableMeta.CONTENT_URI_DIR, String.valueOf(id_));
- Cursor c = null;
- if (providerClient_ != null) {
- try {
- c = providerClient_.query(req_uri, null, null, null, null);
- } catch (RemoteException e) {
- Log.e(TAG, e.getMessage());
- return ret;
- }
- } else {
- c = contentResolver_.query(req_uri, null, null, null, null);
- }
-
- if (c.moveToFirst())
- do {
- OCFile child = new OCFile(providerClient_, account_);
- child.setFileData(c);
- ret.add(child);
- } while (c.moveToNext());
-
- c.close();
- return ret;
- }
- return null;
- }
-
- /**