diff --git a/src/com/owncloud/android/lib/common/network/WebdavEntry.java b/src/com/owncloud/android/lib/common/network/WebdavEntry.java index b7ac35b5..d6fe7a54 100644 --- a/src/com/owncloud/android/lib/common/network/WebdavEntry.java +++ b/src/com/owncloud/android/lib/common/network/WebdavEntry.java @@ -30,18 +30,20 @@ import org.apache.jackrabbit.webdav.MultiStatusResponse; import org.apache.jackrabbit.webdav.property.DavProperty; import org.apache.jackrabbit.webdav.property.DavPropertyName; import org.apache.jackrabbit.webdav.property.DavPropertySet; - - - +import org.apache.jackrabbit.webdav.xml.Namespace; import android.net.Uri; import android.util.Log; public class WebdavEntry { - private String mName, mPath, mUri, mContentType, mEtag; - private long mContentLength, mCreateTimestamp, mModifiedTimestamp; + private static final String NAMESPACE_OC = "http://owncloud.org/ns"; + private static final String EXTENDED_PROPERTY_NAME_PERMISSIONS = "permissions"; + private static final String EXTENDED_PROPERTY_NAME_REMOTE_ID = "id"; - public WebdavEntry(MultiStatusResponse ms, String splitElement) { + private String mName, mPath, mUri, mContentType, mEtag, mPermissions, mRemoteId; + private long mContentLength, mCreateTimestamp, mModifiedTimestamp; + + public WebdavEntry(MultiStatusResponse ms, String splitElement) { resetData(); if (ms.getStatus().length != 0) { mUri = ms.getHref(); @@ -106,6 +108,22 @@ public class WebdavEntry { mEtag = mEtag.substring(1, mEtag.length()-1); } + // OC permissions property + prop = propSet.get( + EXTENDED_PROPERTY_NAME_PERMISSIONS, Namespace.getNamespace(NAMESPACE_OC) + ); + if (prop != null) { + mPermissions = prop.getValue().toString(); + } + + // OC remote id property + prop = propSet.get( + EXTENDED_PROPERTY_NAME_REMOTE_ID, Namespace.getNamespace(NAMESPACE_OC) + ); + if (prop != null) { + mRemoteId = prop.getValue().toString(); + } + } else { Log.e("WebdavEntry", "General fuckup, no status for webdav response"); @@ -152,8 +170,16 @@ public class WebdavEntry { return mEtag; } + public String permissions() { + return mPermissions; + } + + public String remoteId() { + return mRemoteId; + } + private void resetData() { - mName = mUri = mContentType = null; + mName = mUri = mContentType = mPermissions = null; mRemoteId = null; mContentLength = mCreateTimestamp = mModifiedTimestamp = 0; } } diff --git a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java index 4a1c33a6..922b7c9f 100644 --- a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java @@ -163,6 +163,8 @@ public class ReadRemoteFolderOperation extends RemoteOperation { file.setMimeType(we.contentType()); file.setModifiedTimestamp(we.modifiedTimestamp()); file.setEtag(we.etag()); + file.setPermissions(we.permissions()); + file.setRemoteId(we.remoteId()); return file; } } diff --git a/src/com/owncloud/android/lib/resources/files/RemoteFile.java b/src/com/owncloud/android/lib/resources/files/RemoteFile.java index 0b96584c..0db4e591 100644 --- a/src/com/owncloud/android/lib/resources/files/RemoteFile.java +++ b/src/com/owncloud/android/lib/resources/files/RemoteFile.java @@ -48,7 +48,9 @@ public class RemoteFile implements Parcelable, Serializable { private long mCreationTimestamp; private long mModifiedTimestamp; private String mEtag; - + private String mPermissions; + private String mRemoteId; + /** * Getters and Setters */ @@ -101,6 +103,22 @@ public class RemoteFile implements Parcelable, Serializable { this.mEtag = etag; } + public String getPermissions() { + return mPermissions; + } + + public void setPermissions(String permissions) { + this.mPermissions = permissions; + } + + public String getRemoteId() { + return mRemoteId; + } + + public void setRemoteId(String remoteId) { + this.mRemoteId = remoteId; + } + public RemoteFile() { resetData(); } @@ -127,6 +145,8 @@ public class RemoteFile implements Parcelable, Serializable { this.setMimeType(we.contentType()); this.setModifiedTimestamp(we.modifiedTimestamp()); this.setEtag(we.etag()); + this.setPermissions(we.permissions()); + this.setRemoteId(we.remoteId()); } /** @@ -139,6 +159,8 @@ public class RemoteFile implements Parcelable, Serializable { mCreationTimestamp = 0; mModifiedTimestamp = 0; mEtag = null; + mPermissions = null; + mRemoteId = null; } /** @@ -173,6 +195,8 @@ public class RemoteFile implements Parcelable, Serializable { mCreationTimestamp = source.readLong(); mModifiedTimestamp = source.readLong(); mEtag = source.readString(); + mPermissions= source.readString(); + mRemoteId = source.readString(); } @Override @@ -187,7 +211,9 @@ public class RemoteFile implements Parcelable, Serializable { dest.writeLong(mLength); dest.writeLong(mCreationTimestamp); dest.writeLong(mModifiedTimestamp); - dest.writeString(mEtag); + dest.writeString(mEtag); + dest.writeString(mPermissions); + dest.writeString(mRemoteId); }