Skip to content

Commit

Permalink
- add ShareeUser, with userId and displayName
Browse files Browse the repository at this point in the history
- add tests
- add group support

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
  • Loading branch information
tobiasKaminsky committed Aug 7, 2019
1 parent ed1103d commit 2e7b50d
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 31 deletions.
15 changes: 9 additions & 6 deletions src/androidTest/java/com/owncloud/android/FileIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ public void testShareToGroupSharees() {
assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess());
assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess());

ShareeUser sharee = new ShareeUser("users", "", ShareType.GROUP);

// share folder
assertTrue(new CreateShareRemoteOperation(path,
ShareType.GROUP,
Expand All @@ -161,7 +163,8 @@ public void testShareToGroupSharees() {
RemoteFile child = (RemoteFile) result.getData().get(i);

if (path.equals(child.getRemotePath())) {
assertEquals(0, child.getSharees().length);
assertEquals(1, child.getSharees().length);
assertEquals(sharee, child.getSharees()[0]);
}
}
}
Expand All @@ -173,7 +176,7 @@ public void testOneSharees() {
assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess());
assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess());

ShareeUser sharee = new ShareeUser("user1", "User One");
ShareeUser sharee = new ShareeUser("user1", "User One", ShareType.USER);

// share folder
assertTrue(new CreateShareRemoteOperation(path,
Expand Down Expand Up @@ -209,8 +212,8 @@ public void testTwoShareesOnParent() {
assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess());

List<ShareeUser> sharees = new ArrayList<>();
sharees.add(new ShareeUser("user1", "User One"));
sharees.add(new ShareeUser("user2", "User Two"));
sharees.add(new ShareeUser("user1", "User One", ShareType.USER));
sharees.add(new ShareeUser("user2", "User Two", ShareType.USER));

// share folder
assertTrue(new CreateShareRemoteOperation(path,
Expand Down Expand Up @@ -257,8 +260,8 @@ public void testTwoSharees() {
assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess());

List<ShareeUser> sharees = new ArrayList<>();
sharees.add(new ShareeUser("user1", "User One"));
sharees.add(new ShareeUser("user2", "User Two"));
sharees.add(new ShareeUser("user1", "User One", ShareType.USER));
sharees.add(new ShareeUser("user2", "User Two", ShareType.USER));

// share folder
assertTrue(new CreateShareRemoteOperation(path,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import android.net.Uri;

import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.lib.resources.shares.ShareType;
import com.owncloud.android.lib.resources.shares.ShareeUser;

import org.apache.jackrabbit.webdav.MultiStatusResponse;
Expand Down Expand Up @@ -70,6 +71,7 @@ public class WebdavEntry {
public static final String TRASHBIN_DELETION_TIME = "trashbin-deletion-time";
public static final String SHAREES_DISPLAY_NAME = "display-name";
public static final String SHAREES_ID = "id";
public static final String SHAREES_SHARE_TYPE = "type";

public static final String PROPERTY_QUOTA_USED_BYTES = "quota-used-bytes";
public static final String PROPERTY_QUOTA_AVAILABLE_BYTES = "quota-available-bytes";
Expand Down Expand Up @@ -362,9 +364,10 @@ public WebdavEntry(MultiStatusResponse ms, String splitElement) {
ShareeUser createShareeUser(Element element) {
String displayName = extractDisplayName(element);
String userId = extractUserId(element);
ShareType shareType = extractShareType(element);

if (!displayName.isEmpty() && !userId.isEmpty()) {
return new ShareeUser(userId, displayName);
if ((ShareType.GROUP.equals(shareType) || !displayName.isEmpty()) && !userId.isEmpty()) {
return new ShareeUser(userId, displayName, shareType);
} else {
return null;
}
Expand All @@ -387,6 +390,17 @@ private String extractUserId(Element element) {

return "";
}

private ShareType extractShareType(Element element) {
Node shareType = element.getElementsByTagNameNS(NAMESPACE_NC, SHAREES_SHARE_TYPE).item(0);
if (shareType != null && shareType.getFirstChild() != null) {
int value = Integer.parseInt(shareType.getFirstChild().getNodeValue());

return ShareType.fromValue(value);
}

return ShareType.NO_SHARED;
}

public String decodedPath() {
return Uri.decode(path);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,29 +58,27 @@ public enum ShareType {
public int getValue() {
return value;
}

public static ShareType fromValue(int value)
{
switch (value)
{
case -1:
return NO_SHARED;
case 0:
return USER;
case 1:
return GROUP;
case 3:
return PUBLIC_LINK;
case 4:
return EMAIL;
case 5:
return CONTACT;
case 6:
return FEDERATED;

public static ShareType fromValue(int value) {
switch (value) {
case -1:
return NO_SHARED;
case 0:
return USER;
case 1:
return GROUP;
case 3:
return PUBLIC_LINK;
case 4:
return EMAIL;
case 5:
return CONTACT;
case 6:
return FEDERATED;
case 10:
return ROOM;
default:
return NO_SHARED;
return ROOM;
default:
return NO_SHARED;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
public class ShareeUser implements Parcelable {
@Getter private String userId;
@Getter private String displayName;
@Getter private ShareType shareType;


public static final Creator<ShareeUser> CREATOR = new Creator<ShareeUser>() {
Expand All @@ -56,6 +57,7 @@ public ShareeUser[] newArray(int size) {
protected ShareeUser(Parcel in) {
userId = in.readString();
displayName = in.readString();
shareType = ShareType.fromValue(in.readInt());
}

@Override
Expand All @@ -67,6 +69,7 @@ public int describeContents() {
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(userId);
dest.writeString(displayName);
dest.writeInt(shareType.getValue());
}

@Override
Expand All @@ -76,6 +79,8 @@ public boolean equals(@Nullable Object obj) {
}
ShareeUser that = (ShareeUser) obj;

return this.userId.equals(that.userId) && this.displayName.equals(that.displayName);
return this.userId.equals(that.userId) &&
this.displayName.equals(that.displayName) &&
this.shareType.equals(that.shareType);
}
}

0 comments on commit 2e7b50d

Please sign in to comment.