X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/043d2128ad89e3386f2ea13e21f69bedd88db3b6..080a8ab7af2bc48e3c5fa1334ae91d21073e26c2:/src/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java diff --git a/src/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java b/src/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java index a3ded103..54d78fd6 100644 --- a/src/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java +++ b/src/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java @@ -31,7 +31,6 @@ import android.database.MatrixCursor; import android.net.Uri; import android.provider.BaseColumns; import android.support.annotation.Nullable; -import android.util.Pair; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; @@ -39,6 +38,9 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.shares.GetRemoteShareesOperation; +import org.json.JSONException; +import org.json.JSONObject; + import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -128,37 +130,45 @@ public class UsersAndGroupsSearchProvider extends ContentProvider { userQuery, REQUESTED_PAGE, RESULTS_PER_PAGE ); RemoteOperationResult result = searchRequest.execute(account, getContext()); - List> names = new ArrayList>(); + List names = new ArrayList(); if (result.isSuccess()) { for (Object o : result.getData()) { - names.add((Pair) o); + // Get JSonObjects from response + names.add((JSONObject) o); } } /// convert the responses from the OC server to the expected format if (names.size() > 0) { response = new MatrixCursor(COLUMNS); - Iterator> namesIt = names.iterator(); + Iterator namesIt = names.iterator(); int count = 0; - Pair item; + JSONObject item; String displayName; Uri dataUri; Uri userBaseUri = new Uri.Builder().scheme("content").authority(DATA_USER).build(); Uri groupBaseUri = new Uri.Builder().scheme("content").authority(DATA_GROUP).build(); - - while (namesIt.hasNext()) { - item = namesIt.next(); - if (GetRemoteShareesOperation.GROUP_TYPE.equals(item.second)) { - displayName = getContext().getString(R.string.share_group_clarification, item.first); - dataUri = Uri.withAppendedPath(groupBaseUri, item.first); - } else { - displayName = item.first; - dataUri = Uri.withAppendedPath(userBaseUri, item.first); + try { + while (namesIt.hasNext()) { + item = namesIt.next(); + String userName = item.getString(GetRemoteShareesOperation.PROPERTY_LABEL); + JSONObject value = item.getJSONObject(GetRemoteShareesOperation.NODE_VALUE); + byte type = (byte) value.getInt(GetRemoteShareesOperation.PROPERTY_SHARE_TYPE); + String shareWith = value.getString(GetRemoteShareesOperation.PROPERTY_SHARE_WITH); + if (GetRemoteShareesOperation.GROUP_TYPE.equals(type)) { + displayName = getContext().getString(R.string.share_group_clarification, userName); + dataUri = Uri.withAppendedPath(groupBaseUri, shareWith); + } else { + displayName = userName; + dataUri = Uri.withAppendedPath(userBaseUri, shareWith); + } + response.newRow() + .add(count++) // BaseColumns._ID + .add(displayName) // SearchManager.SUGGEST_COLUMN_TEXT_1 + .add(dataUri); } - response.newRow() - .add(count++) // BaseColumns._ID - .add(displayName) // SearchManager.SUGGEST_COLUMN_TEXT_1 - .add(dataUri); + } catch (JSONException e) { + Log_OC.e(TAG, "Exception while parsing data of users/groups", e); } }