From f104d6842e7fcb6f0b81b5167f07e38d9ebbb62d Mon Sep 17 00:00:00 2001 From: davigonz Date: Thu, 14 Nov 2019 14:35:19 +0100 Subject: [PATCH] Clean up remote objects (code review) --- .../lib/resources/shares/RemoteShare.kt | 160 +++--------------- .../lib/resources/status/RemoteCapability.kt | 107 ++++-------- 2 files changed, 53 insertions(+), 214 deletions(-) diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/RemoteShare.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/RemoteShare.kt index a088ebc5..a0a4afea 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/RemoteShare.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/RemoteShare.kt @@ -24,11 +24,7 @@ package com.owncloud.android.lib.resources.shares -import android.os.Parcel -import android.os.Parcelable -import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.files.FileUtils -import java.io.Serializable /** * Contains the data of a Share from the Share API @@ -37,124 +33,27 @@ import java.io.Serializable * @author David A. Velasco * @author David González Verdugo */ -class RemoteShare : Parcelable, Serializable { - var id: Long = 0 - var shareWith: String = "" - var path: String = "" - var token: String = "" - var sharedWithDisplayName: String = "" - var sharedWithAdditionalInfo: String = "" - var name: String = "" - var shareLink: String = "" - var fileSource: Long = 0 - var itemSource: Long = 0 - var shareType: ShareType? = null - var permissions: Int = DEFAULT_PERMISSION - var sharedDate: Long = INIT_SHARED_DATE - var expirationDate: Long = INIT_EXPIRATION_DATE_IN_MILLIS - var isFolder: Boolean = path.endsWith(FileUtils.PATH_SEPARATOR) - var userId: Long = 0 - +data class RemoteShare( + var id: Long = 0, + var shareWith: String = "", + var path: String = "", + var token: String = "", + var sharedWithDisplayName: String = "", + var sharedWithAdditionalInfo: String = "", + var name: String = "", + var shareLink: String = "", + var fileSource: Long = 0, + var itemSource: Long = 0, + var shareType: ShareType? = ShareType.UNKNOWN, + var permissions: Int = DEFAULT_PERMISSION, + var sharedDate: Long = INIT_SHARED_DATE, + var expirationDate: Long = INIT_EXPIRATION_DATE_IN_MILLIS, + var isFolder: Boolean = path.endsWith(FileUtils.PATH_SEPARATOR), + var userId: Long = 0, val isValid: Boolean = id > -1 - - constructor() : super() { - resetData() - } - - constructor(path: String?) { - resetData() - if (path.isNullOrEmpty() || !path.startsWith(FileUtils.PATH_SEPARATOR)) { - Log_OC.e(TAG, "Trying to create a RemoteShare with a non valid path") - throw IllegalArgumentException("Trying to create a RemoteShare with a non valid path: " + path!!) - } - this.path = path - } - - /** - * Used internally. Reset all file properties - */ - private fun resetData() { - id = -1 - shareWith = "" - path = "" - token = "" - sharedWithDisplayName = "" - sharedWithAdditionalInfo = "" - name = "" - shareLink = "" - fileSource = 0 - itemSource = 0 - shareType = ShareType.NO_SHARED - permissions = DEFAULT_PERMISSION - sharedDate = INIT_SHARED_DATE - expirationDate = INIT_EXPIRATION_DATE_IN_MILLIS - sharedWithAdditionalInfo = "" - isFolder = false - userId = -1 - } - - /** - * Reconstruct from parcel - * - * @param source The source parcel - */ - protected constructor(source: Parcel) { - readFromParcel(source) - } - - fun readFromParcel(source: Parcel) { - id = source.readLong() - shareWith = source.readString().toString() - path = source.readString().toString() - token = source.readString().toString() - sharedWithDisplayName = source.readString().toString() - sharedWithAdditionalInfo = source.readString().toString() - name = source.readString().toString() - shareLink = source.readString().toString() - fileSource = source.readLong() - itemSource = source.readLong() - shareType = ShareType.NO_SHARED - try { - shareType = source.readString()?.let { ShareType.valueOf(it) } - } catch (x: IllegalArgumentException) { - } - permissions = source.readInt() - sharedDate = source.readLong() - expirationDate = source.readLong() - isFolder = source.readInt() == 0 - userId = source.readLong() - } - - override fun describeContents(): Int = this.hashCode() - - override fun writeToParcel(dest: Parcel, flags: Int) { - dest.writeLong(id) - dest.writeString(shareWith) - dest.writeString(path) - dest.writeString(token) - dest.writeString(sharedWithDisplayName) - dest.writeString(sharedWithAdditionalInfo) - dest.writeString(name) - dest.writeString(shareLink) - dest.writeLong(fileSource) - dest.writeLong(itemSource) - dest.writeString(shareType?.name ?: "") - dest.writeInt(permissions) - dest.writeLong(sharedDate) - dest.writeLong(expirationDate) - dest.writeInt(if (isFolder) 1 else 0) - dest.writeLong(userId) - } +) { companion object { - - /** - * Generated - should be refreshed every time the class changes!! - */ - private const val serialVersionUID = 4124975224281327921L - - private val TAG = RemoteShare::class.java.simpleName - const val DEFAULT_PERMISSION = -1 const val READ_PERMISSION_FLAG = 1 const val UPDATE_PERMISSION_FLAG = 2 @@ -180,30 +79,14 @@ class RemoteShare : Parcelable, Serializable { const val INIT_EXPIRATION_DATE_IN_MILLIS: Long = 0 const val INIT_SHARED_DATE: Long = 0 - - /** - * Parcelable Methods - */ - @JvmField - val CREATOR: Parcelable.Creator = object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): RemoteShare { - return RemoteShare(source) - } - - override fun newArray(size: Int): Array { - return arrayOfNulls(size) - } - } } - - } /** * // TODO This type is already included in the domain but we still need it here since the parsing takes place in this library for the moment * * Enum for Share Type, with values: - * -1 - No shared + * -1 - Unknown * 0 - Shared by user * 1 - Shared by group * 3 - Shared by public link @@ -213,8 +96,9 @@ class RemoteShare : Parcelable, Serializable { * * @author masensio */ + enum class ShareType constructor(val value: Int) { - NO_SHARED(-1), + UNKNOWN(-1), USER(0), GROUP(1), PUBLIC_LINK(3), @@ -225,7 +109,7 @@ enum class ShareType constructor(val value: Int) { companion object { fun fromValue(value: Int): ShareType? { return when (value) { - -1 -> NO_SHARED + -1 -> UNKNOWN 0 -> USER 1 -> GROUP 3 -> PUBLIC_LINK diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/RemoteCapability.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/RemoteCapability.kt index c9997c73..5d4f6e77 100644 --- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/RemoteCapability.kt +++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/status/RemoteCapability.kt @@ -29,81 +29,45 @@ package com.owncloud.android.lib.resources.status /** * Contains data of the Capabilities for an account, from the Capabilities API */ -class RemoteCapability { - var accountName: String +data class RemoteCapability( + var accountName: String = "", // Server version - var versionMayor: Int - var versionMinor: Int - var versionMicro: Int - var versionString: String - var versionEdition: String + var versionMayor: Int = 0, + var versionMinor: Int = 0, + var versionMicro: Int = 0, + var versionString: String = "", + var versionEdition: String = "", // Core PollInterval - var corePollinterval: Int + var corePollinterval: Int = 0, // Files Sharing - var filesSharingApiEnabled: CapabilityBooleanType - var filesSharingSearchMinLength: CapabilityBooleanType - var filesSharingMinLength: Int - var filesSharingPublicEnabled: CapabilityBooleanType - var filesSharingPublicPasswordEnforced: CapabilityBooleanType - var filesSharingPublicPasswordEnforcedReadOnly: CapabilityBooleanType - var filesSharingPublicPasswordEnforcedReadWrite: CapabilityBooleanType - var filesSharingPublicPasswordEnforcedUploadOnly: CapabilityBooleanType - var filesSharingPublicExpireDateEnabled: CapabilityBooleanType - var filesSharingPublicExpireDateDays: Int - var filesSharingPublicExpireDateEnforced: CapabilityBooleanType - var filesSharingPublicSendMail: CapabilityBooleanType - var filesSharingPublicUpload: CapabilityBooleanType - var filesSharingPublicMultiple: CapabilityBooleanType - var filesSharingPublicSupportsUploadOnly: CapabilityBooleanType - var filesSharingUserSendMail: CapabilityBooleanType - var filesSharingResharing: CapabilityBooleanType - var filesSharingFederationOutgoing: CapabilityBooleanType - var filesSharingFederationIncoming: CapabilityBooleanType + var filesSharingApiEnabled: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingSearchMinLength: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingMinLength: Int = 0, + var filesSharingPublicEnabled: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicPasswordEnforced: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicPasswordEnforcedReadOnly: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicPasswordEnforcedReadWrite: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicPasswordEnforcedUploadOnly: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicExpireDateEnabled: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicExpireDateDays: Int = 0, + var filesSharingPublicExpireDateEnforced: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicSendMail: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicUpload: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicMultiple: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingPublicSupportsUploadOnly: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingUserSendMail: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingResharing: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingFederationOutgoing: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesSharingFederationIncoming: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, // Files - var filesBigFileChunking: CapabilityBooleanType - var filesUndelete: CapabilityBooleanType - var filesVersioning: CapabilityBooleanType - - init { - accountName = "" - - versionMayor = 0 - versionMinor = 0 - versionMicro = 0 - versionString = "" - versionEdition = "" - - corePollinterval = 0 - - filesSharingApiEnabled = CapabilityBooleanType.UNKNOWN - filesSharingSearchMinLength = CapabilityBooleanType.UNKNOWN - filesSharingMinLength = 4 - filesSharingPublicEnabled = CapabilityBooleanType.UNKNOWN - filesSharingPublicPasswordEnforced = CapabilityBooleanType.UNKNOWN - filesSharingPublicPasswordEnforcedReadOnly = CapabilityBooleanType.UNKNOWN - filesSharingPublicPasswordEnforcedReadWrite = CapabilityBooleanType.UNKNOWN - filesSharingPublicPasswordEnforcedUploadOnly = CapabilityBooleanType.UNKNOWN - filesSharingPublicExpireDateEnabled = CapabilityBooleanType.UNKNOWN - filesSharingPublicExpireDateDays = 0 - filesSharingPublicExpireDateEnforced = CapabilityBooleanType.UNKNOWN - filesSharingPublicSendMail = CapabilityBooleanType.UNKNOWN - filesSharingPublicUpload = CapabilityBooleanType.UNKNOWN - filesSharingPublicMultiple = CapabilityBooleanType.UNKNOWN - filesSharingPublicSupportsUploadOnly = CapabilityBooleanType.UNKNOWN - filesSharingUserSendMail = CapabilityBooleanType.UNKNOWN - filesSharingResharing = CapabilityBooleanType.UNKNOWN - filesSharingFederationOutgoing = CapabilityBooleanType.UNKNOWN - filesSharingFederationIncoming = CapabilityBooleanType.UNKNOWN - - filesBigFileChunking = CapabilityBooleanType.UNKNOWN - filesUndelete = CapabilityBooleanType.UNKNOWN - filesVersioning = CapabilityBooleanType.UNKNOWN - } -} + var filesBigFileChunking: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesUndelete: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN, + var filesVersioning: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN +) /** * Enum for Boolean Type in capabilities, with values: @@ -116,15 +80,6 @@ enum class CapabilityBooleanType constructor(val value: Int) { FALSE(0), TRUE(1); - val isUnknown: Boolean - get() = value == -1 - - val isFalse: Boolean - get() = value == 0 - - val isTrue: Boolean - get() = value == 1 - companion object { fun fromValue(value: Int): CapabilityBooleanType? { return when (value) {