-
Notifications
You must be signed in to change notification settings - Fork 149
[New arch] Fetch list of files #335
[New arch] Fetch list of files #335
Conversation
.../main/java/com/owncloud/android/lib/resources/files/services/implementation/OCFileService.kt
Outdated
Show resolved
Hide resolved
@@ -85,6 +85,7 @@ public RemoteFile createFromParcel(Parcel source) { | |||
private BigDecimal mQuotaUsedBytes; | |||
private BigDecimal mQuotaAvailableBytes; | |||
private String mPrivateLink; | |||
private String mOwner; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this is needed because the account name and user name is not always the same, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not at all, i just want to have it earlier. Previously it was included in FileDataStorageManager, and i think it is easier to handle it here, so localdatasource won't need to ask the current account to add this attribute.
override fun run(client: OwnCloudClient): RemoteOperationResult<ArrayList<RemoteFile>> { | ||
try { | ||
val propfindMethod = PropfindMethod( | ||
URL(client.userFilesWebDavUri.toString() + WebdavUtils.encodePath(remotePath)), | ||
DavConstants.DEPTH_1, | ||
DavUtils.getAllPropset() | ||
) | ||
client.setFollowRedirects(true) | ||
|
||
val status = client.executeHttpMethod(propfindMethod) | ||
|
||
if (isSuccess(status)) { | ||
val mFolderAndFiles = ArrayList<RemoteFile>() | ||
|
||
// parse data from remote folder | ||
val remoteFolder = RemoteFile(propfindMethod.root, AccountUtils.getUserId(mAccount, mContext)).apply { | ||
owner = mAccount.name | ||
} | ||
mFolderAndFiles.add(remoteFolder) | ||
|
||
// loop to update every child | ||
propfindMethod.members.forEach { resource -> | ||
val file = RemoteFile(resource, AccountUtils.getUserId(mAccount, mContext)) | ||
file.owner = mAccount.name | ||
mFolderAndFiles.add(file) | ||
} | ||
|
||
// Result of the operation | ||
return RemoteOperationResult<ArrayList<RemoteFile>>(ResultCode.OK).apply { | ||
data = mFolderAndFiles | ||
Timber.i("Synchronized $remotePath with ${mFolderAndFiles.size} files. ${this.logMessage}") | ||
} | ||
} else { // synchronization failed | ||
return RemoteOperationResult<ArrayList<RemoteFile>>(propfindMethod).also { | ||
Timber.w("Synchronized $remotePath ${it.logMessage}") | ||
} | ||
} | ||
} catch (e: Exception) { | ||
return RemoteOperationResult<ArrayList<RemoteFile>>(e).also { | ||
Timber.e(it.exception, "Synchronized $remotePath") | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
override fun run(client: OwnCloudClient): RemoteOperationResult<ArrayList<RemoteFile>> { | |
try { | |
val propfindMethod = PropfindMethod( | |
URL(client.userFilesWebDavUri.toString() + WebdavUtils.encodePath(remotePath)), | |
DavConstants.DEPTH_1, | |
DavUtils.getAllPropset() | |
) | |
client.setFollowRedirects(true) | |
val status = client.executeHttpMethod(propfindMethod) | |
if (isSuccess(status)) { | |
val mFolderAndFiles = ArrayList<RemoteFile>() | |
// parse data from remote folder | |
val remoteFolder = RemoteFile(propfindMethod.root, AccountUtils.getUserId(mAccount, mContext)).apply { | |
owner = mAccount.name | |
} | |
mFolderAndFiles.add(remoteFolder) | |
// loop to update every child | |
propfindMethod.members.forEach { resource -> | |
val file = RemoteFile(resource, AccountUtils.getUserId(mAccount, mContext)) | |
file.owner = mAccount.name | |
mFolderAndFiles.add(file) | |
} | |
// Result of the operation | |
return RemoteOperationResult<ArrayList<RemoteFile>>(ResultCode.OK).apply { | |
data = mFolderAndFiles | |
Timber.i("Synchronized $remotePath with ${mFolderAndFiles.size} files. ${this.logMessage}") | |
} | |
} else { // synchronization failed | |
return RemoteOperationResult<ArrayList<RemoteFile>>(propfindMethod).also { | |
Timber.w("Synchronized $remotePath ${it.logMessage}") | |
} | |
} | |
} catch (e: Exception) { | |
return RemoteOperationResult<ArrayList<RemoteFile>>(e).also { | |
Timber.e(it.exception, "Synchronized $remotePath") | |
} | |
} | |
} | |
override fun run(client: OwnCloudClient): RemoteOperationResult<ArrayList<RemoteFile>> = | |
try { | |
val propfindMethod = PropfindMethod( | |
URL(client.userFilesWebDavUri.toString() + WebdavUtils.encodePath(remotePath)), | |
DavConstants.DEPTH_1, | |
DavUtils.getAllPropset() | |
) | |
client.setFollowRedirects(true) | |
val status = client.executeHttpMethod(propfindMethod) | |
if (isSuccess(status)) { | |
// Result of the operation | |
RemoteOperationResult<ArrayList<RemoteFile>>(ResultCode.OK).apply { | |
val remoteFolder = RemoteFile(propfindMethod.root, AccountUtils.getUserId(mAccount, mContext)).apply { | |
owner = mAccount.name | |
} | |
data.add(remoteFolder) | |
propfindMethod.members.forEach { resource -> | |
val file = RemoteFile(resource, AccountUtils.getUserId(mAccount, mContext)) | |
file.owner = mAccount.name | |
data.add(file) | |
} | |
}.also { | |
Timber.i("Synchronized $remotePath with ${it.data.size} files. ${it.logMessage}") | |
} | |
} else { // synchronization failed | |
RemoteOperationResult<ArrayList<RemoteFile>>(propfindMethod).also { | |
Timber.w("Synchronized $remotePath ${it.logMessage}") | |
} | |
} | |
} catch (e: Exception) { | |
RemoteOperationResult<ArrayList<RemoteFile>>(e).also { | |
Timber.e(it.exception, "Synchronized $remotePath") | |
} | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I understand your point of view and it is less verbose, but i think we lose readability using it that way.
Implements: owncloud/android#2873
Needed for owncloud/android#2918