operations = prepareRemoveSharesInFolder(folder, operations);
if (shares != null) {
- Log_OC.d(TAG, "SHARES..............................................");
// prepare operations to insert or update files to save in the given folder
for (OCShare share : shares) {
ContentValues cv = new ContentValues();
// adding a new share resource
operations.add(
ContentProviderOperation.newInsert(ProviderTableMeta.CONTENT_URI_SHARE).
- /* withValue(ProviderTableMeta.OCSHARES_FILE_SOURCE, share.getFileSource()).
- withValue(ProviderTableMeta.OCSHARES_ITEM_SOURCE, share.getItemSource()).
- withValue(ProviderTableMeta.OCSHARES_SHARE_TYPE, share.getShareType().getValue()).
- withValue(ProviderTableMeta.OCSHARES_SHARE_WITH, share.getShareWith()).
- withValue(ProviderTableMeta.OCSHARES_PATH, share.getPath()).
- withValue(ProviderTableMeta.OCSHARES_PERMISSIONS, share.getPermissions()).
- withValue(ProviderTableMeta.OCSHARES_SHARED_DATE, share.getSharedDate()).
- withValue(ProviderTableMeta.OCSHARES_EXPIRATION_DATE, share.getExpirationDate()).
- withValue(ProviderTableMeta.OCSHARES_TOKEN, share.getToken()).
- withValue(ProviderTableMeta.OCSHARES_SHARE_WITH_DISPLAY_NAME,
- share.getSharedWithDisplayName()).
- withValue(ProviderTableMeta.OCSHARES_IS_DIRECTORY, share.isFolder() ? 1 : 0).
- withValue(ProviderTableMeta.OCSHARES_USER_ID, share.getUserId()).
- withValue(ProviderTableMeta.OCSHARES_ID_REMOTE_SHARED, share.getIdRemoteShared()).
- withValue(ProviderTableMeta.OCSHARES_ACCOUNT_OWNER, mAccount.name).*/
- withValues(cv).
+ withValues(cv).
build()
);
- Log_OC.d(TAG, "The VALUES are cv " + cv.toString());
- //}
}
}
}
case SHARES:
- String path = values.getAsString(ProviderTableMeta.OCSHARES_PATH);
- String accountNameShare= values.getAsString(ProviderTableMeta.OCSHARES_ACCOUNT_OWNER);
- String[] projectionShare = new String[] {
- ProviderTableMeta._ID, ProviderTableMeta.OCSHARES_PATH,
- ProviderTableMeta.OCSHARES_ACCOUNT_OWNER
- };
- String whereShare = ProviderTableMeta.OCSHARES_PATH + "=? AND " +
- ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + "=?";
- String[] whereArgsShare = new String[] {path, accountNameShare};
Uri insertedShareUri = null;
- Cursor doubleCheckShare =
- query(db, uri, projectionShare, whereShare, whereArgsShare, null);
- // ugly patch; serious refactorization is needed to reduce work in
- // FileDataStorageManager and bring it to FileContentProvider
- if (doubleCheckShare == null || !doubleCheckShare.moveToFirst()) {
- if (doubleCheckShare != null) {
- doubleCheckShare.close();
- }
- long rowId = db.insert(ProviderTableMeta.OCSHARES_TABLE_NAME, null, values);
- if (rowId >0) {
- insertedShareUri =
- ContentUris.withAppendedId(ProviderTableMeta.CONTENT_URI_SHARE, rowId);
- } else {
- throw new SQLException("ERROR " + uri);
-
- }
+ long rowId = db.insert(ProviderTableMeta.OCSHARES_TABLE_NAME, null, values);
+ if (rowId >0) {
+ insertedShareUri =
+ ContentUris.withAppendedId(ProviderTableMeta.CONTENT_URI_SHARE, rowId);
} else {
- // file is already inserted; race condition, let's avoid a duplicated entry
- insertedShareUri = ContentUris.withAppendedId(
- ProviderTableMeta.CONTENT_URI_SHARE,
- doubleCheckShare.getLong(
- doubleCheckShare.getColumnIndex(ProviderTableMeta._ID)
- )
- );
- doubleCheckShare.close();
+ throw new SQLException("ERROR " + uri);
+
}
updateFilesTableAccordingToShareInsertion(db, values);
return insertedShareUri;