diff --git a/src/com/owncloud/android/lib/common/network/WebdavEntry.java b/src/com/owncloud/android/lib/common/network/WebdavEntry.java index df94f2ec7..1bf2fe155 100644 --- a/src/com/owncloud/android/lib/common/network/WebdavEntry.java +++ b/src/com/owncloud/android/lib/common/network/WebdavEntry.java @@ -25,7 +25,9 @@ package com.owncloud.android.lib.common.network; import android.net.Uri; + import com.owncloud.android.lib.common.utils.Log_OC; + import org.apache.jackrabbit.webdav.MultiStatusResponse; import org.apache.jackrabbit.webdav.property.DavProperty; import org.apache.jackrabbit.webdav.property.DavPropertyName; @@ -46,6 +48,7 @@ public class WebdavEntry { public static final String EXTENDED_PROPERTY_NAME_SIZE = "size"; public static final String EXTENDED_PROPERTY_FAVORITE = "favorite"; public static final String EXTENDED_PROPERTY_IS_ENCRYPTED = "is-encrypted"; + public static final String EXTENDED_PROPERTY_MOUNT_TYPE = "mount-type"; public static final String PROPERTY_QUOTA_USED_BYTES = "quota-used-bytes"; public static final String PROPERTY_QUOTA_AVAILABLE_BYTES = "quota-available-bytes"; @@ -63,9 +66,12 @@ public class WebdavEntry { private String mRemoteId; private boolean mIsFavorite; private boolean mIsEncrypted; + private MountType mMountType; private long mContentLength, mCreateTimestamp, mModifiedTimestamp, mSize; private BigDecimal mQuotaUsedBytes, mQuotaAvailableBytes; + public enum MountType {INTERNAL, EXTERNAL} + public WebdavEntry(MultiStatusResponse ms, String splitElement) { resetData(); if (ms.getStatus().length != 0) { @@ -218,6 +224,19 @@ public WebdavEntry(MultiStatusResponse ms, String splitElement) { mIsEncrypted = false; } + // NC mount-type property + prop = propSet.get(EXTENDED_PROPERTY_MOUNT_TYPE, Namespace.getNamespace(NAMESPACE_NC)); + if (prop != null) { + String mountTypeValue = (String) prop.getValue(); + if ("external".equals(mountTypeValue)) { + mMountType = MountType.EXTERNAL; + } else { + mMountType = MountType.INTERNAL; + } + } else { + mMountType = MountType.INTERNAL; + } + } else { Log_OC.e("WebdavEntry", "General fuckup, no status for webdav response"); } @@ -295,6 +314,10 @@ public BigDecimal quotaAvailableBytes() { return mQuotaAvailableBytes; } + public MountType getMountType() { + return mMountType; + } + private void resetData() { mName = mUri = mContentType = mPermissions = null; mRemoteId = null; mContentLength = mCreateTimestamp = mModifiedTimestamp = 0; diff --git a/src/com/owncloud/android/lib/common/network/WebdavUtils.java b/src/com/owncloud/android/lib/common/network/WebdavUtils.java index a4a57fd39..2b05d3d1a 100644 --- a/src/com/owncloud/android/lib/common/network/WebdavUtils.java +++ b/src/com/owncloud/android/lib/common/network/WebdavUtils.java @@ -104,6 +104,7 @@ public static DavPropertyNameSet getAllPropSet(){ propSet.add(WebdavEntry.EXTENDED_PROPERTY_NAME_SIZE, Namespace.getNamespace(WebdavEntry.NAMESPACE_OC)); propSet.add(WebdavEntry.EXTENDED_PROPERTY_FAVORITE, Namespace.getNamespace(WebdavEntry.NAMESPACE_OC)); propSet.add(WebdavEntry.EXTENDED_PROPERTY_IS_ENCRYPTED, Namespace.getNamespace(WebdavEntry.NAMESPACE_NC)); + propSet.add(WebdavEntry.EXTENDED_PROPERTY_MOUNT_TYPE, Namespace.getNamespace(WebdavEntry.NAMESPACE_NC)); return propSet; } diff --git a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java index 6f6b595c1..ce5974d87 100644 --- a/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java +++ b/src/com/owncloud/android/lib/resources/files/ReadRemoteFolderOperation.java @@ -79,10 +79,8 @@ protected RemoteOperationResult run(OwnCloudClient client) { int status = client.executeMethod(query); // check and process response - boolean isSuccess = ( - status == HttpStatus.SC_MULTI_STATUS || - status == HttpStatus.SC_OK - ); + boolean isSuccess = (status == HttpStatus.SC_MULTI_STATUS || status == HttpStatus.SC_OK); + if (isSuccess) { // get data from remote folder MultiStatus dataInServer = query.getResponseBodyAsMultiStatus(); @@ -172,6 +170,7 @@ private RemoteFile fillOCFile(WebdavEntry we) { file.setSize(we.size()); file.setFavorite(we.isFavorite()); file.setIsEncrypted(we.isEncrypted()); + file.setMountType(we.getMountType()); 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 f1680e85e..c3c8567f4 100644 --- a/src/com/owncloud/android/lib/resources/files/RemoteFile.java +++ b/src/com/owncloud/android/lib/resources/files/RemoteFile.java @@ -54,6 +54,7 @@ public class RemoteFile implements Parcelable, Serializable { private long mSize; private boolean mIsFavorite; private boolean mIsEncrypted; + WebdavEntry.MountType mMountType; /** * Getters and Setters. @@ -147,6 +148,14 @@ public void setSize(long size) { mSize = size; } + public WebdavEntry.MountType getMountType() { + return mMountType; + } + + public void setMountType(WebdavEntry.MountType mountType) { + this.mMountType = mountType; + } + public RemoteFile() { resetData(); } @@ -177,6 +186,7 @@ public RemoteFile(WebdavEntry we) { this.setRemoteId(we.remoteId()); this.setSize(we.size()); this.setFavorite(we.isFavorite()); + this.setMountType(we.getMountType()); } /** @@ -234,6 +244,7 @@ public void readFromParcel(Parcel source) { mSize = source.readLong(); mIsFavorite = Boolean.parseBoolean(source.readString()); mIsEncrypted = Boolean.parseBoolean(source.readString()); + mMountType = (WebdavEntry.MountType) source.readSerializable(); } @Override @@ -254,5 +265,6 @@ public void writeToParcel(Parcel dest, int flags) { dest.writeLong(mSize); dest.writeString(Boolean.toString(mIsFavorite)); dest.writeString(Boolean.toString(mIsEncrypted)); + dest.writeSerializable(mMountType); } }