From: masensio Date: Mon, 19 Oct 2015 07:16:19 +0000 (+0200) Subject: Get shares from Database (WIP) X-Git-Tag: oc-android-1.9^2~30^2~52 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/72987c296f85226179b1796cf2b727c1399cbcf8 Get shares from Database (WIP) --- diff --git a/src/com/owncloud/android/datamodel/FileDataStorageManager.java b/src/com/owncloud/android/datamodel/FileDataStorageManager.java index 7c94ca26..c4f02084 100644 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@ -31,6 +31,7 @@ import java.util.Set; import java.util.Vector; import android.accounts.Account; +import android.content.ContentProvider; import android.content.ContentProviderClient; import android.content.ContentProviderOperation; import android.content.ContentProviderResult; @@ -1335,6 +1336,7 @@ public class FileDataStorageManager { 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(); @@ -1359,9 +1361,25 @@ public class FileDataStorageManager { // adding a new share resource operations.add( ContentProviderOperation.newInsert(ProviderTableMeta.CONTENT_URI_SHARE). - withValues(cv). - build() + /* 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). + build() ); + Log_OC.d(TAG, "The VALUES are cv " + cv.toString()); //} } } @@ -1409,6 +1427,46 @@ public class FileDataStorageManager { return preparedOperations; } + public ArrayList getSharesWithForAFile(String filePath, String accountName){ + // Condition + String where = ProviderTableMeta.OCSHARES_PATH + "=?" + " AND " + + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + "=?"+ "AND" + + " (" + ProviderTableMeta.OCSHARES_SHARE_TYPE + "=? OR " + + ProviderTableMeta.OCSHARES_SHARE_TYPE + "=? ) "; + String [] whereArgs = new String[]{ filePath, accountName , + Integer.toString(ShareType.USER.getValue()), + Integer.toString(ShareType.GROUP.getValue()) }; + + Cursor c = null; + if (getContentResolver() != null) { + c = getContentResolver().query( + ProviderTableMeta.CONTENT_URI_SHARE, + null, where, whereArgs, null); + } else { + try { + c = getContentProviderClient().query( + ProviderTableMeta.CONTENT_URI_SHARE, + null, where, whereArgs, null); + + } catch (RemoteException e) { + Log_OC.e(TAG, "Could not get list of shares with: " + e.getMessage()); + c = null; + } + } + ArrayList shares = new ArrayList<>(); + OCShare share = null; + if (c.moveToFirst()) { + do { + share = createShareInstance(c); + shares.add(share); + // } + } while (c.moveToNext()); + } + c.close(); + + return shares; + } + public void triggerMediaScan(String path) { Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); intent.setData(Uri.fromFile(new File(path))); diff --git a/src/com/owncloud/android/ui/fragment/ShareFileFragment.java b/src/com/owncloud/android/ui/fragment/ShareFileFragment.java index 3a194a84..90304d25 100644 --- a/src/com/owncloud/android/ui/fragment/ShareFileFragment.java +++ b/src/com/owncloud/android/ui/fragment/ShareFileFragment.java @@ -206,13 +206,22 @@ public class ShareFileFragment extends Fragment RemoteOperationResult result = null; // Show loading - ( (ShareActivity) getActivity()).showWaitingLoadDialog(); + // TODO: Activate loading +// ( (ShareActivity) getActivity()).showWaitingLoadDialog(); // Get Users and Groups GetShareWithUserAsyncTask getTask = new GetShareWithUserAsyncTask(this); FileDataStorageManager fileDataStorageManager = new FileDataStorageManager(mAccount, getActivity().getContentResolver()); - Object[] params = { mFile, mAccount, fileDataStorageManager}; - getTask.execute(params); + mShares = fileDataStorageManager.getSharesWithForAFile(mFile.getRemotePath(), mAccount.name); + +// Object[] params = { mFile, mAccount, fileDataStorageManager}; +// getTask.execute(params); + +// // Remove loading +// ((ShareActivity) getActivity()).dismissWaitingLoadDialog(); + + // Update list of users/groups + updateListOfUserGroups(); } @Override @@ -229,27 +238,32 @@ public class ShareFileFragment extends Fragment } // Update list of users/groups - mUserGroupsAdapter = new ShareUserListAdapter(getActivity().getApplicationContext(), - R.layout.share_user_item, mShares); + updateListOfUserGroups(); + + } else { + Toast.makeText(getActivity(), result.getLogMessage(), Toast.LENGTH_SHORT).show(); + } - // Show data - TextView noShares = (TextView) getView().findViewById(R.id.shareNoUsers); - ListView usersList = (ListView) getView().findViewById(R.id.shareUsersList); + } - if (mShares.size() > 0) { - noShares.setVisibility(View.GONE); - usersList.setVisibility(View.VISIBLE); - usersList.setAdapter(mUserGroupsAdapter); + private void updateListOfUserGroups(){ + // Update list of users/groups + mUserGroupsAdapter = new ShareUserListAdapter(getActivity().getApplicationContext(), + R.layout.share_user_item, mShares); - } else { - noShares.setVisibility(View.VISIBLE); - usersList.setVisibility(View.GONE); - } + // Show data + TextView noShares = (TextView) getView().findViewById(R.id.shareNoUsers); + ListView usersList = (ListView) getView().findViewById(R.id.shareUsersList); + + if (mShares.size() > 0) { + noShares.setVisibility(View.GONE); + usersList.setVisibility(View.VISIBLE); + usersList.setAdapter(mUserGroupsAdapter); } else { - Toast.makeText(getActivity(), result.getLogMessage(), Toast.LENGTH_SHORT).show(); + noShares.setVisibility(View.VISIBLE); + usersList.setVisibility(View.GONE); } - } // TODO: review if it is necessary