diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java index 631af0ee..9faeff67 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.java @@ -214,7 +214,7 @@ public class CreateRemoteShareOperation extends RemoteOperation { if (mPassword != null && mPassword.length() > 0) { formBodyBuilder.add(PARAM_PASSWORD, mPassword); } - if (OCShare.DEFAULT_PERMISSION != mPermissions) { + if (RemoteShare.DEFAULT_PERMISSION != mPermissions) { formBodyBuilder.add(PARAM_PERMISSIONS, Integer.toString(mPermissions)); } @@ -245,7 +245,7 @@ public class CreateRemoteShareOperation extends RemoteOperation { // TODO Use executeHttpMethod // retrieve more info - POST only returns the index of the new share - OCShare emptyShare = result.getData().getShares().get(0); + RemoteShare emptyShare = result.getData().getShares().get(0); GetRemoteShareOperation getInfo = new GetRemoteShareOperation( emptyShare.getRemoteId() ); diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/OCShare.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/RemoteShare.java similarity index 91% rename from owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/OCShare.java rename to owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/RemoteShare.java index 72bccd50..2a01e71a 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/OCShare.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/RemoteShare.java @@ -34,6 +34,7 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.files.FileUtils; + /** * Contains the data of a Share from the Share API * @@ -41,7 +42,14 @@ import com.owncloud.android.lib.resources.files.FileUtils; * @author David A. Velasco * @author David González Verdugo */ -public class OCShare implements Parcelable, Serializable { +public class RemoteShare implements Parcelable, Serializable { + + /** + * Generated - should be refreshed every time the class changes!! + */ + private static final long serialVersionUID = 4124975224281327921L; + + private static final String TAG = RemoteShare.class.getSimpleName(); /** * Generated - should be refreshed every time the class changes!! @@ -80,7 +88,6 @@ public class OCShare implements Parcelable, Serializable { FEDERATED_PERMISSIONS_FOR_FOLDER_UP_TO_OC9 + SHARE_PERMISSION_FLAG; - private long mId; private long mFileSource; private long mItemSource; private ShareType mShareType; @@ -98,16 +105,16 @@ public class OCShare implements Parcelable, Serializable { private long mRemoteId; private String mShareLink; - public OCShare() { + public RemoteShare() { super(); resetData(); } - public OCShare(String path) { + public RemoteShare(String path) { resetData(); if (path == null || path.length() <= 0 || !path.startsWith(FileUtils.PATH_SEPARATOR)) { - Log_OC.e(TAG, "Trying to create a OCShare with a non valid path"); - throw new IllegalArgumentException("Trying to create a OCShare with a non valid path: " + path); + Log_OC.e(TAG, "Trying to create a RemoteShare with a non valid path"); + throw new IllegalArgumentException("Trying to create a RemoteShare with a non valid path: " + path); } mPath = path; } @@ -116,7 +123,6 @@ public class OCShare implements Parcelable, Serializable { * Used internally. Reset all file properties */ private void resetData() { - mId = -1; mFileSource = 0; mItemSource = 0; mShareType = ShareType.NO_SHARED; @@ -136,15 +142,6 @@ public class OCShare implements Parcelable, Serializable { } /// Getters and Setters - - public long getId() { - return mId; - } - - public void setId(long id) { - mId = id; - } - public long getFileSource() { return mFileSource; } @@ -280,15 +277,15 @@ public class OCShare implements Parcelable, Serializable { /** * Parcelable Methods */ - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override - public OCShare createFromParcel(Parcel source) { - return new OCShare(source); + public RemoteShare createFromParcel(Parcel source) { + return new RemoteShare(source); } @Override - public OCShare[] newArray(int size) { - return new OCShare[size]; + public RemoteShare[] newArray(int size) { + return new RemoteShare[size]; } }; @@ -297,13 +294,11 @@ public class OCShare implements Parcelable, Serializable { * * @param source The source parcel */ - protected OCShare(Parcel source) { + protected RemoteShare(Parcel source) { readFromParcel(source); } public void readFromParcel(Parcel source) { - mId = source.readLong(); - mFileSource = source.readLong(); mItemSource = source.readLong(); try { @@ -335,7 +330,6 @@ public class OCShare implements Parcelable, Serializable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeLong(mId); dest.writeLong(mFileSource); dest.writeLong(mItemSource); dest.writeString((mShareType == null) ? "" : mShareType.name()); @@ -353,4 +347,4 @@ public class OCShare implements Parcelable, Serializable { dest.writeString(mShareLink); dest.writeString(mName); } -} \ No newline at end of file +} diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareParserResult.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareParserResult.java index c98fd6e3..a03a5839 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareParserResult.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareParserResult.java @@ -28,15 +28,15 @@ package com.owncloud.android.lib.resources.shares; import java.util.ArrayList; public class ShareParserResult { - private ArrayList shares; + private ArrayList shares; private String parserMessage; - public ShareParserResult(ArrayList shares, String parserMessage) { + public ShareParserResult(ArrayList shares, String parserMessage) { this.shares = shares; this.parserMessage = parserMessage; } - public ArrayList getShares() { + public ArrayList getShares() { return shares; } diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/SharePermissionsBuilder.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/SharePermissionsBuilder.java index 2b0682dd..a38d7970 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/SharePermissionsBuilder.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/SharePermissionsBuilder.java @@ -31,10 +31,8 @@ package com.owncloud.android.lib.resources.shares; */ public class SharePermissionsBuilder { - /** - * Set of permissions - */ - private int mPermissions = OCShare.READ_PERMISSION_FLAG; // READ is minimum permission + /** Set of permissions */ + private int mPermissions = RemoteShare.READ_PERMISSION_FLAG; // READ is minimum permission /** * Sets or clears permission to reshare a file or folder. @@ -43,7 +41,7 @@ public class SharePermissionsBuilder { * @return Instance to builder itself, to allow consecutive calls to setters */ public SharePermissionsBuilder setSharePermission(boolean enabled) { - updatePermission(OCShare.SHARE_PERMISSION_FLAG, enabled); + updatePermission(RemoteShare.SHARE_PERMISSION_FLAG, enabled); return this; } @@ -54,7 +52,7 @@ public class SharePermissionsBuilder { * @return Instance to builder itself, to allow consecutive calls to setters */ public SharePermissionsBuilder setUpdatePermission(boolean enabled) { - updatePermission(OCShare.UPDATE_PERMISSION_FLAG, enabled); + updatePermission(RemoteShare.UPDATE_PERMISSION_FLAG, enabled); return this; } @@ -65,7 +63,7 @@ public class SharePermissionsBuilder { * @return Instance to builder itself, to allow consecutive calls to setters */ public SharePermissionsBuilder setCreatePermission(boolean enabled) { - updatePermission(OCShare.CREATE_PERMISSION_FLAG, enabled); + updatePermission(RemoteShare.CREATE_PERMISSION_FLAG, enabled); return this; } @@ -76,7 +74,7 @@ public class SharePermissionsBuilder { * @return Instance to builder itself, to allow consecutive calls to setters */ public SharePermissionsBuilder setDeletePermission(boolean enabled) { - updatePermission(OCShare.DELETE_PERMISSION_FLAG, enabled); + updatePermission(RemoteShare.DELETE_PERMISSION_FLAG, enabled); return this; } diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareToRemoteOperationResultParser.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareToRemoteOperationResultParser.java index 5b6aa671..8292ca02 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareToRemoteOperationResultParser.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareToRemoteOperationResultParser.java @@ -71,7 +71,7 @@ public class ShareToRemoteOperationResultParser { } RemoteOperationResult result; - final ArrayList resultData = new ArrayList<>(); + final ArrayList resultData = new ArrayList<>(); try { // Parse xml response and obtain the list of shares @@ -80,13 +80,13 @@ public class ShareToRemoteOperationResultParser { Log_OC.w(TAG, "No ShareXmlParser provided, creating new instance "); mShareXmlParser = new ShareXMLParser(); } - List shares = mShareXmlParser.parseXMLResponse(is); + List shares = mShareXmlParser.parseXMLResponse(is); if (mShareXmlParser.isSuccess()) { if ((shares != null && shares.size() > 0) || !mOneOrMoreSharesRequired) { result = new RemoteOperationResult<>(RemoteOperationResult.ResultCode.OK); if (shares != null) { - for (OCShare share : shares) { + for (RemoteShare share : shares) { resultData.add(share); // build the share link if not in the response // (needed for OC servers < 9.0.0, see ShareXMLParser.java#line256) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareXMLParser.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareXMLParser.java index a6265e1a..fb8e877c 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareXMLParser.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/ShareXMLParser.java @@ -78,375 +78,364 @@ public class ShareXMLParser { private static final String NODE_SHARE_WITH_DISPLAY_NAME = "share_with_displayname"; private static final String NODE_SHARE_WITH_ADDITIONAL_INFO = "share_with_additional_info"; private static final String NODE_NAME = "name"; + + private static final String NODE_URL = "url"; - private static final String NODE_URL = "url"; + private static final String TYPE_FOLDER = "folder"; + + private static final int SUCCESS = 200; + private static final int ERROR_WRONG_PARAMETER = 400; + private static final int ERROR_FORBIDDEN = 403; + private static final int ERROR_NOT_FOUND = 404; - private static final String TYPE_FOLDER = "folder"; + private String mStatus; + private int mStatusCode; + private String mMessage; - private static final int SUCCESS = 200; - private static final int ERROR_WRONG_PARAMETER = 400; - private static final int ERROR_FORBIDDEN = 403; - private static final int ERROR_NOT_FOUND = 404; + // Getters and Setters + public String getStatus() { + return mStatus; + } - private String mStatus; - private int mStatusCode; - private String mMessage; + public void setStatus(String status) { + this.mStatus = status; + } - // Getters and Setters - public String getStatus() { - return mStatus; - } + public int getStatusCode() { + return mStatusCode; + } - public void setStatus(String status) { - this.mStatus = status; - } + public void setStatusCode(int statusCode) { + this.mStatusCode = statusCode; + } - public int getStatusCode() { - return mStatusCode; - } + public String getMessage() { + return mMessage; + } - public void setStatusCode(int statusCode) { - this.mStatusCode = statusCode; - } + public void setMessage(String message) { + this.mMessage = message; + } - public String getMessage() { - return mMessage; - } + // Constructor + public ShareXMLParser() { + mStatusCode = -1; + } - public void setMessage(String message) { - this.mMessage = message; - } + public boolean isSuccess() { + return mStatusCode == SUCCESS; + } - // Constructor - public ShareXMLParser() { - mStatusCode = -1; - } + public boolean isForbidden() { + return mStatusCode == ERROR_FORBIDDEN; + } - public boolean isSuccess() { - return mStatusCode == SUCCESS; - } + public boolean isNotFound() { + return mStatusCode == ERROR_NOT_FOUND; + } - public boolean isForbidden() { - return mStatusCode == ERROR_FORBIDDEN; - } + public boolean isWrongParameter() { + return mStatusCode == ERROR_WRONG_PARAMETER; + } - public boolean isNotFound() { - return mStatusCode == ERROR_NOT_FOUND; - } + /** + * Parse is as response of Share API + * @param is + * @return List of ShareRemoteFiles + * @throws XmlPullParserException + * @throws IOException + */ + public ArrayList parseXMLResponse(InputStream is) throws XmlPullParserException, + IOException { - public boolean isWrongParameter() { - return mStatusCode == ERROR_WRONG_PARAMETER; - } + try { + // XMLPullParser + XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); + factory.setNamespaceAware(true); - /** - * Parse is as response of Share API - * - * @param is - * @return List of ShareRemoteFiles - * @throws XmlPullParserException - * @throws IOException - */ - public ArrayList parseXMLResponse(InputStream is) throws XmlPullParserException, - IOException { + XmlPullParser parser = Xml.newPullParser(); + parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); + parser.setInput(is, null); + parser.nextTag(); + return readOCS(parser); - try { - // XMLPullParser - XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); - factory.setNamespaceAware(true); + } finally { + is.close(); + } + } - XmlPullParser parser = Xml.newPullParser(); - parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); - parser.setInput(is, null); - parser.nextTag(); - return readOCS(parser); + /** + * Parse OCS node + * @param parser + * @return List of ShareRemoteFiles + * @throws XmlPullParserException + * @throws IOException + */ + private ArrayList readOCS (XmlPullParser parser) throws XmlPullParserException, + IOException { + ArrayList shares = new ArrayList<>(); + parser.require(XmlPullParser.START_TAG, ns , NODE_OCS); + while (parser.next() != XmlPullParser.END_TAG) { + if (parser.getEventType() != XmlPullParser.START_TAG) { + continue; + } + String name = parser.getName(); + // read NODE_META and NODE_DATA + if (name.equalsIgnoreCase(NODE_META)) { + readMeta(parser); + } else if (name.equalsIgnoreCase(NODE_DATA)) { + shares = readData(parser); + } else { + skip(parser); + } - } finally { - is.close(); - } - } + } + return shares; + } - /** - * Parse OCS node - * - * @param parser - * @return List of ShareRemoteFiles - * @throws XmlPullParserException - * @throws IOException - */ - private ArrayList readOCS(XmlPullParser parser) throws XmlPullParserException, - IOException { - ArrayList shares = new ArrayList<>(); - parser.require(XmlPullParser.START_TAG, ns, NODE_OCS); - while (parser.next() != XmlPullParser.END_TAG) { - if (parser.getEventType() != XmlPullParser.START_TAG) { - continue; - } - String name = parser.getName(); - // read NODE_META and NODE_DATA - if (name.equalsIgnoreCase(NODE_META)) { - readMeta(parser); - } else if (name.equalsIgnoreCase(NODE_DATA)) { - shares = readData(parser); - } else { - skip(parser); - } + /** + * Parse Meta node + * @param parser + * @throws XmlPullParserException + * @throws IOException + */ + private void readMeta(XmlPullParser parser) throws XmlPullParserException, IOException { + parser.require(XmlPullParser.START_TAG, ns, NODE_META); + //Log_OC.d(TAG, "---- NODE META ---"); + while (parser.next() != XmlPullParser.END_TAG) { + if (parser.getEventType() != XmlPullParser.START_TAG) { + continue; + } + String name = parser.getName(); - } - return shares; - } + if (name.equalsIgnoreCase(NODE_STATUS)) { + setStatus(readNode(parser, NODE_STATUS)); - /** - * Parse Meta node - * - * @param parser - * @throws XmlPullParserException - * @throws IOException - */ - private void readMeta(XmlPullParser parser) throws XmlPullParserException, IOException { - parser.require(XmlPullParser.START_TAG, ns, NODE_META); - //Log_OC.d(TAG, "---- NODE META ---"); - while (parser.next() != XmlPullParser.END_TAG) { - if (parser.getEventType() != XmlPullParser.START_TAG) { - continue; - } - String name = parser.getName(); + } else if (name.equalsIgnoreCase(NODE_STATUS_CODE)) { + setStatusCode(Integer.parseInt(readNode(parser, NODE_STATUS_CODE))); - if (name.equalsIgnoreCase(NODE_STATUS)) { - setStatus(readNode(parser, NODE_STATUS)); + } else if (name.equalsIgnoreCase(NODE_MESSAGE)) { + setMessage(readNode(parser, NODE_MESSAGE)); - } else if (name.equalsIgnoreCase(NODE_STATUS_CODE)) { - setStatusCode(Integer.parseInt(readNode(parser, NODE_STATUS_CODE))); + } else { + skip(parser); + } - } else if (name.equalsIgnoreCase(NODE_MESSAGE)) { - setMessage(readNode(parser, NODE_MESSAGE)); + } + } - } else { - skip(parser); - } + /** + * Parse Data node + * @param parser + * @return + * @throws XmlPullParserException + * @throws IOException + */ + private ArrayList readData(XmlPullParser parser) throws XmlPullParserException, + IOException { + ArrayList shares = new ArrayList(); + RemoteShare share = null; - } - } + parser.require(XmlPullParser.START_TAG, ns, NODE_DATA); + //Log_OC.d(TAG, "---- NODE DATA ---"); + while (parser.next() != XmlPullParser.END_TAG) { + if (parser.getEventType() != XmlPullParser.START_TAG) { + continue; + } + String name = parser.getName(); + if (name.equalsIgnoreCase(NODE_ELEMENT)) { + readElement(parser, shares); + + } else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response + share = new RemoteShare(); + String value = readNode(parser, NODE_ID); + share.setIdRemoteShared(Integer.parseInt(value)); - /** - * Parse Data node - * - * @param parser - * @return - * @throws XmlPullParserException - * @throws IOException - */ - private ArrayList readData(XmlPullParser parser) throws XmlPullParserException, - IOException { - ArrayList shares = new ArrayList(); - OCShare share = null; + } else if (name.equalsIgnoreCase(NODE_URL)) { + // NOTE: this field is received in all the public shares from OC 9.0.0 + // in previous versions, it's received in the result of POST requests, but not + // in GET requests + share.setShareType(ShareType.PUBLIC_LINK); + String value = readNode(parser, NODE_URL); + share.setShareLink(value); - parser.require(XmlPullParser.START_TAG, ns, NODE_DATA); - //Log_OC.d(TAG, "---- NODE DATA ---"); - while (parser.next() != XmlPullParser.END_TAG) { - if (parser.getEventType() != XmlPullParser.START_TAG) { - continue; - } - String name = parser.getName(); - if (name.equalsIgnoreCase(NODE_ELEMENT)) { - readElement(parser, shares); + } else if (name.equalsIgnoreCase(NODE_TOKEN)) { + share.setToken(readNode(parser, NODE_TOKEN)); - } else if (name.equalsIgnoreCase(NODE_ID)) {// Parse Create XML Response - share = new OCShare(); - String value = readNode(parser, NODE_ID); - share.setIdRemoteShared(Integer.parseInt(value)); + } else { + skip(parser); + + } + } + + if (share != null) { + // this is the response of a request for creation; don't pass to isValidShare() + shares.add(share); + } - } else if (name.equalsIgnoreCase(NODE_URL)) { - // NOTE: this field is received in all the public shares from OC 9.0.0 - // in previous versions, it's received in the result of POST requests, but not - // in GET requests - share.setShareType(ShareType.PUBLIC_LINK); - String value = readNode(parser, NODE_URL); - share.setShareLink(value); + return shares; - } else if (name.equalsIgnoreCase(NODE_TOKEN)) { - share.setToken(readNode(parser, NODE_TOKEN)); - - } else { - skip(parser); - - } - } - - if (share != null) { - // this is the response of a request for creation; don't pass to isValidShare() - shares.add(share); - } - - return shares; - - } + } - /** - * Parse Element node - * - * @param parser - * @return - * @throws XmlPullParserException - * @throws IOException - */ - private void readElement(XmlPullParser parser, ArrayList shares) - throws XmlPullParserException, IOException { - parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT); + /** + * Parse Element node + * @param parser + * @return + * @throws XmlPullParserException + * @throws IOException + */ + private void readElement(XmlPullParser parser, ArrayList shares) + throws XmlPullParserException, IOException { + parser.require(XmlPullParser.START_TAG, ns, NODE_ELEMENT); + + RemoteShare share = new RemoteShare(); + + //Log_OC.d(TAG, "---- NODE ELEMENT ---"); + while (parser.next() != XmlPullParser.END_TAG) { + if (parser.getEventType() != XmlPullParser.START_TAG) { + continue; + } + + String name = parser.getName(); - OCShare share = new OCShare(); + if (name.equalsIgnoreCase(NODE_ELEMENT)) { + // patch to work around servers responding with extra surrounding all + // the shares on the same file before + // https://github.com/owncloud/core/issues/6992 was fixed + readElement(parser, shares); - //Log_OC.d(TAG, "---- NODE ELEMENT ---"); - while (parser.next() != XmlPullParser.END_TAG) { - if (parser.getEventType() != XmlPullParser.START_TAG) { - continue; - } + } else if (name.equalsIgnoreCase(NODE_ID)) { + share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID))); - String name = parser.getName(); + } else if (name.equalsIgnoreCase(NODE_ITEM_TYPE)) { + share.setIsFolder(readNode(parser, NODE_ITEM_TYPE).equalsIgnoreCase(TYPE_FOLDER)); + fixPathForFolder(share); - if (name.equalsIgnoreCase(NODE_ELEMENT)) { - // patch to work around servers responding with extra surrounding all - // the shares on the same file before - // https://github.com/owncloud/core/issues/6992 was fixed - readElement(parser, shares); + } else if (name.equalsIgnoreCase(NODE_ITEM_SOURCE)) { + share.setItemSource(Long.parseLong(readNode(parser, NODE_ITEM_SOURCE))); - } else if (name.equalsIgnoreCase(NODE_ID)) { - share.setIdRemoteShared(Integer.parseInt(readNode(parser, NODE_ID))); + } else if (name.equalsIgnoreCase(NODE_PARENT)) { + readNode(parser, NODE_PARENT); - } else if (name.equalsIgnoreCase(NODE_ITEM_TYPE)) { - share.setIsFolder(readNode(parser, NODE_ITEM_TYPE).equalsIgnoreCase(TYPE_FOLDER)); - fixPathForFolder(share); + } else if (name.equalsIgnoreCase(NODE_SHARE_TYPE)) { + int value = Integer.parseInt(readNode(parser, NODE_SHARE_TYPE)); + share.setShareType(ShareType.fromValue(value)); - } else if (name.equalsIgnoreCase(NODE_ITEM_SOURCE)) { - share.setItemSource(Long.parseLong(readNode(parser, NODE_ITEM_SOURCE))); + } else if (name.equalsIgnoreCase(NODE_SHARE_WITH)) { + share.setShareWith(readNode(parser, NODE_SHARE_WITH)); - } else if (name.equalsIgnoreCase(NODE_PARENT)) { - readNode(parser, NODE_PARENT); + } else if (name.equalsIgnoreCase(NODE_FILE_SOURCE)) { + share.setFileSource(Long.parseLong(readNode(parser, NODE_FILE_SOURCE))); - } else if (name.equalsIgnoreCase(NODE_SHARE_TYPE)) { - int value = Integer.parseInt(readNode(parser, NODE_SHARE_TYPE)); - share.setShareType(ShareType.fromValue(value)); + } else if (name.equalsIgnoreCase(NODE_PATH)) { + share.setPath(readNode(parser, NODE_PATH)); + fixPathForFolder(share); - } else if (name.equalsIgnoreCase(NODE_SHARE_WITH)) { - share.setShareWith(readNode(parser, NODE_SHARE_WITH)); + } else if (name.equalsIgnoreCase(NODE_PERMISSIONS)) { + share.setPermissions(Integer.parseInt(readNode(parser, NODE_PERMISSIONS))); - } else if (name.equalsIgnoreCase(NODE_FILE_SOURCE)) { - share.setFileSource(Long.parseLong(readNode(parser, NODE_FILE_SOURCE))); + } else if (name.equalsIgnoreCase(NODE_STIME)) { + share.setSharedDate(Long.parseLong(readNode(parser, NODE_STIME))); - } else if (name.equalsIgnoreCase(NODE_PATH)) { - share.setPath(readNode(parser, NODE_PATH)); - fixPathForFolder(share); + } else if (name.equalsIgnoreCase(NODE_EXPIRATION)) { + String value = readNode(parser, NODE_EXPIRATION); + if (!(value.length() == 0)) { + share.setExpirationDate(WebdavUtils.parseResponseDate(value).getTime()); + } - } else if (name.equalsIgnoreCase(NODE_PERMISSIONS)) { - share.setPermissions(Integer.parseInt(readNode(parser, NODE_PERMISSIONS))); + } else if (name.equalsIgnoreCase(NODE_TOKEN)) { + share.setToken(readNode(parser, NODE_TOKEN)); - } else if (name.equalsIgnoreCase(NODE_STIME)) { - share.setSharedDate(Long.parseLong(readNode(parser, NODE_STIME))); + } else if (name.equalsIgnoreCase(NODE_STORAGE)) { + readNode(parser, NODE_STORAGE); + } else if (name.equalsIgnoreCase(NODE_MAIL_SEND)) { + readNode(parser, NODE_MAIL_SEND); - } else if (name.equalsIgnoreCase(NODE_EXPIRATION)) { - String value = readNode(parser, NODE_EXPIRATION); - if (!(value.length() == 0)) { - share.setExpirationDate(WebdavUtils.parseResponseDate(value).getTime()); - } + } else if (name.equalsIgnoreCase(NODE_SHARE_WITH_DISPLAY_NAME)) { + share.setSharedWithDisplayName(readNode(parser, NODE_SHARE_WITH_DISPLAY_NAME)); - } else if (name.equalsIgnoreCase(NODE_TOKEN)) { - share.setToken(readNode(parser, NODE_TOKEN)); - - } else if (name.equalsIgnoreCase(NODE_STORAGE)) { - readNode(parser, NODE_STORAGE); - } else if (name.equalsIgnoreCase(NODE_MAIL_SEND)) { - readNode(parser, NODE_MAIL_SEND); - - } else if (name.equalsIgnoreCase(NODE_SHARE_WITH_DISPLAY_NAME)) { - share.setSharedWithDisplayName(readNode(parser, NODE_SHARE_WITH_DISPLAY_NAME)); - - } else if (name.equalsIgnoreCase(NODE_SHARE_WITH_ADDITIONAL_INFO)) { - share.setSharedWithAdditionalInfo(readNode(parser, NODE_SHARE_WITH_ADDITIONAL_INFO)); - - } else if (name.equalsIgnoreCase(NODE_URL)) { - String value = readNode(parser, NODE_URL); - share.setShareLink(value); + } else if (name.equalsIgnoreCase(NODE_URL)) { + String value = readNode(parser, NODE_URL); + share.setShareLink(value); } else if (name.equalsIgnoreCase(NODE_NAME)) { share.setName(readNode(parser, NODE_NAME)); } else { - skip(parser); - } - } + skip(parser); + } + } - if (isValidShare(share)) { - shares.add(share); - } - } + if (isValidShare(share)) { + shares.add(share); + } + } - private boolean isValidShare(OCShare share) { - return (share.getRemoteId() > -1); - } + private boolean isValidShare(RemoteShare share) { + return (share.getRemoteId() > -1); + } - private void fixPathForFolder(OCShare share) { - if (share.isFolder() && share.getPath() != null && share.getPath().length() > 0 && - !share.getPath().endsWith(FileUtils.PATH_SEPARATOR)) { - share.setPath(share.getPath() + FileUtils.PATH_SEPARATOR); - } - } + private void fixPathForFolder(RemoteShare share) { + if (share.isFolder() && share.getPath() != null && share.getPath().length() > 0 && + !share.getPath().endsWith(FileUtils.PATH_SEPARATOR)) { + share.setPath(share.getPath() + FileUtils.PATH_SEPARATOR); + } + } - /** - * Parse a node, to obtain its text. Needs readText method - * - * @param parser - * @param node - * @return Text of the node - * @throws XmlPullParserException - * @throws IOException - */ - private String readNode(XmlPullParser parser, String node) throws XmlPullParserException, - IOException { - parser.require(XmlPullParser.START_TAG, ns, node); - String value = readText(parser); - //Log_OC.d(TAG, "node= " + node + ", value= " + value); - parser.require(XmlPullParser.END_TAG, ns, node); - return value; - } + /** + * Parse a node, to obtain its text. Needs readText method + * @param parser + * @param node + * @return Text of the node + * @throws XmlPullParserException + * @throws IOException + */ + private String readNode (XmlPullParser parser, String node) throws XmlPullParserException, + IOException{ + parser.require(XmlPullParser.START_TAG, ns, node); + String value = readText(parser); + //Log_OC.d(TAG, "node= " + node + ", value= " + value); + parser.require(XmlPullParser.END_TAG, ns, node); + return value; + } + + /** + * Read the text from a node + * @param parser + * @return Text of the node + * @throws IOException + * @throws XmlPullParserException + */ + private String readText(XmlPullParser parser) throws IOException, XmlPullParserException { + String result = ""; + if (parser.next() == XmlPullParser.TEXT) { + result = parser.getText(); + parser.nextTag(); + } + return result; + } - /** - * Read the text from a node - * - * @param parser - * @return Text of the node - * @throws IOException - * @throws XmlPullParserException - */ - private String readText(XmlPullParser parser) throws IOException, XmlPullParserException { - String result = ""; - if (parser.next() == XmlPullParser.TEXT) { - result = parser.getText(); - parser.nextTag(); - } - return result; - } - - /** - * Skip tags in parser procedure - * - * @param parser - * @throws XmlPullParserException - * @throws IOException - */ - private void skip(XmlPullParser parser) throws XmlPullParserException, IOException { - if (parser.getEventType() != XmlPullParser.START_TAG) { - throw new IllegalStateException(); - } - int depth = 1; - while (depth != 0) { - switch (parser.next()) { - case XmlPullParser.END_TAG: - depth--; - break; - case XmlPullParser.START_TAG: - depth++; - break; - } - } - } + /** + * Skip tags in parser procedure + * @param parser + * @throws XmlPullParserException + * @throws IOException + */ + private void skip(XmlPullParser parser) throws XmlPullParserException, IOException { + if (parser.getEventType() != XmlPullParser.START_TAG) { + throw new IllegalStateException(); + } + int depth = 1; + while (depth != 0) { + switch (parser.next()) { + case XmlPullParser.END_TAG: + depth--; + break; + case XmlPullParser.START_TAG: + depth++; + break; + } + } + } } \ No newline at end of file diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.java b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.java index 0122d86e..83bb4d37 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.java +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/UpdateRemoteShareOperation.java @@ -99,7 +99,7 @@ public class UpdateRemoteShareOperation extends RemoteOperation