Skip to content

Commit

Permalink
Rename some files and fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
abelgardep committed Feb 17, 2020
1 parent 1078d75 commit cb740b5
Show file tree
Hide file tree
Showing 36 changed files with 449 additions and 549 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,8 @@
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory;
import com.owncloud.android.lib.common.network.RedirectionPath;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.lib.resources.server.CheckPathExistenceRemoteOperation;
import com.owncloud.android.lib.resources.files.CheckPathExistenceRemoteOperation;
import com.owncloud.android.lib.resources.users.GetRemoteUserInfoOperation;
import com.owncloud.android.operations.common.UseCaseHelper;

import java.lang.ref.WeakReference;

Expand All @@ -44,13 +43,11 @@
public class AuthenticatorAsyncTask extends AsyncTask<Object, Void, RemoteOperationResult> {

private Context mContext;
private UseCaseHelper mUseCaseHelper;
private final WeakReference<OnAuthenticatorTaskListener> mListener;

AuthenticatorAsyncTask(Activity activity) {
mContext = activity.getApplicationContext();
mListener = new WeakReference<>((OnAuthenticatorTaskListener) activity);
mUseCaseHelper = new UseCaseHelper();
}

@Override
Expand All @@ -74,9 +71,6 @@ protected RemoteOperationResult doInBackground(Object... params) {
credentials = (OwnCloudCredentials) params[1];
}

mUseCaseHelper.checkPathExistence(url);
mUseCaseHelper.getServerInfo(url);

// Client
Uri uri = Uri.parse(url);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ import com.owncloud.android.data.authentication.datasources.implementation.OCRem
import com.owncloud.android.data.capabilities.datasources.RemoteCapabilitiesDataSource
import com.owncloud.android.data.capabilities.datasources.implementation.OCRemoteCapabilitiesDataSource
import com.owncloud.android.data.capabilities.network.OCCapabilityService
import com.owncloud.android.data.server.datasources.RemoteAnonymousDatasource
import com.owncloud.android.data.server.datasources.RemoteServerDataSource
import com.owncloud.android.data.server.datasources.implementation.OCRemoteAnonymousDataSource
import com.owncloud.android.data.server.datasources.RemoteServerDatasource
import com.owncloud.android.data.files.datasources.RemoteFileDataSource
import com.owncloud.android.data.server.datasources.implementation.OCRemoteServerDataSource
import com.owncloud.android.data.server.network.OCFileService
import com.owncloud.android.data.files.datasources.implementation.OCRemoteFileDataSource
import com.owncloud.android.data.server.network.OCServerService
import com.owncloud.android.data.files.network.OCFileService
import com.owncloud.android.data.sharing.shares.network.OCShareService
import com.owncloud.android.data.sharing.sharees.datasources.RemoteShareeDataSource
import com.owncloud.android.data.sharing.sharees.datasources.implementation.OCRemoteShareeDataSource
Expand All @@ -42,8 +42,8 @@ import com.owncloud.android.data.user.datasources.implementation.OCRemoteUserDat
import com.owncloud.android.data.user.network.OCUserService
import com.owncloud.android.lib.common.OwnCloudAccount
import com.owncloud.android.lib.common.SingleSessionManager
import com.owncloud.android.lib.resources.server.FileService
import com.owncloud.android.lib.resources.server.ServerService
import com.owncloud.android.lib.resources.status.ServerService
import com.owncloud.android.lib.resources.files.FileService
import com.owncloud.android.lib.resources.shares.ShareService
import com.owncloud.android.lib.resources.shares.ShareeService
import com.owncloud.android.lib.resources.status.CapabilityService
Expand All @@ -60,8 +60,8 @@ val remoteDataSourceModule = module {
single<ShareService> { OCShareService(get()) }
single<ShareeService> { OCShareeService(get()) }
single<UserService> { OCUserService(get()) }
single<ServerService> { OCServerService(get()) }
single<FileService>{ OCFileService(get())}
single<FileService> { OCFileService(get()) }
single<ServerService>{ OCServerService(get())}

factory<RemoteCapabilitiesDataSource> {
OCRemoteCapabilitiesDataSource(
Expand All @@ -86,7 +86,11 @@ val remoteDataSourceModule = module {
get()
)
}
factory<RemoteServerDataSource> { OCRemoteServerDataSource(get()) }
factory<RemoteAnonymousDatasource> { OCRemoteAnonymousDataSource(get()) }
factory<RemoteFileDataSource> {
OCRemoteFileDataSource(
get()
)
}
factory<RemoteServerDatasource> { OCRemoteServerDataSource(get(), get()) }
factory<RemoteAuthenticationDataSource> { OCRemoteAuthenticationDataSource(androidContext()) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,12 @@ package com.owncloud.android.dependecyinjection

import com.owncloud.android.data.authentication.repository.OCAuthenticationRepository
import com.owncloud.android.data.capabilities.repository.OCCapabilityRepository
import com.owncloud.android.data.server.repository.OCAnonymousServerRepository
import com.owncloud.android.data.server.repository.OCServerRepository
import com.owncloud.android.data.sharing.sharees.repository.OCShareeRepository
import com.owncloud.android.data.sharing.shares.repository.OCShareRepository
import com.owncloud.android.data.user.repository.OCUserRepository
import com.owncloud.android.domain.authentication.AuthenticationRepository
import com.owncloud.android.domain.capabilities.CapabilityRepository
import com.owncloud.android.domain.server.AnonymousServerRepository
import com.owncloud.android.domain.server.ServerRepository
import com.owncloud.android.domain.sharing.sharees.ShareeRepository
import com.owncloud.android.domain.sharing.shares.ShareRepository
Expand All @@ -46,6 +44,5 @@ val repositoryModule = module {
factory<ShareeRepository> { OCShareeRepository(get()) }
factory<UserRepository> { OCUserRepository(get()) }
factory<ServerRepository> { OCServerRepository(get()) }
factory<AnonymousServerRepository> { OCAnonymousServerRepository(get()) }
factory<AuthenticationRepository> { OCAuthenticationRepository(get()) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import com.owncloud.android.domain.authentication.usecases.LoginAsyncUseCase
import com.owncloud.android.domain.capabilities.usecases.GetCapabilitiesAsLiveDataUseCase
import com.owncloud.android.domain.capabilities.usecases.GetStoredCapabilitiesUseCase
import com.owncloud.android.domain.capabilities.usecases.RefreshCapabilitiesFromServerAsyncUseCase
import com.owncloud.android.domain.server.usecases.CheckPathExistenceAsyncUseCase
import com.owncloud.android.domain.server.usecases.GetServerInfoAsyncUseCase
import com.owncloud.android.domain.sharing.sharees.GetShareesAsyncUseCase
import com.owncloud.android.domain.sharing.shares.usecases.CreatePrivateShareAsyncUseCase
Expand Down Expand Up @@ -61,6 +60,5 @@ val useCaseModule = module {
factory { GetUserInfoAsyncUseCase(get()) }

// Server
factory { CheckPathExistenceAsyncUseCase(get()) }
factory { GetServerInfoAsyncUseCase(get()) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.operations.RemoteOperation;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.lib.resources.server.CheckPathExistenceRemoteOperation;
import com.owncloud.android.lib.resources.files.CheckPathExistenceRemoteOperation;
import com.owncloud.android.operations.common.SyncOperation;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ protected RemoteOperationResult run(OwnCloudClient client) {
/// 2. remote copy
String targetRemotePath = mTargetParentPath + mFile.getFileName();
// Check if target remote path already exists on server or add suffix (2), (3) ... otherwise
String finalRemotePath = RemoteFileUtils.Companion.getAvailableRemotePath(targetRemotePath);
String finalRemotePath = RemoteFileUtils.Companion.getAvailableRemotePath(targetRemotePath, client);

if (mFile.isFolder()) {
finalRemotePath += OCFile.PATH_SEPARATOR;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import com.owncloud.android.lib.common.operations.OnRemoteOperationListener;
import com.owncloud.android.lib.common.operations.RemoteOperation;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.lib.resources.server.CheckPathExistenceRemoteOperation;
import com.owncloud.android.lib.resources.files.CheckPathExistenceRemoteOperation;
import timber.log.Timber;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import com.owncloud.android.lib.common.operations.RemoteOperation;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
import com.owncloud.android.lib.resources.server.GetRemoteStatusOperation;
import com.owncloud.android.lib.resources.status.GetRemoteStatusOperation;
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
import timber.log.Timber;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ protected RemoteOperationResult run(OwnCloudClient client) {
/// 2. remote move
String targetRemotePath = mTargetParentPath + mFile.getFileName();
// Check if target remote path already exists on server or add suffix (2), (3) ... otherwise
String finalRemotePath = RemoteFileUtils.Companion.getAvailableRemotePath(targetRemotePath);
String finalRemotePath = RemoteFileUtils.Companion.getAvailableRemotePath(targetRemotePath, client);
if (mFile.isFolder()) {
finalRemotePath += OCFile.PATH_SEPARATOR;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
import com.owncloud.android.lib.common.OwnCloudClient;
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
import com.owncloud.android.lib.resources.status.GetRemoteCapabilitiesOperation;
import com.owncloud.android.lib.resources.server.GetRemoteStatusOperation;
import com.owncloud.android.lib.resources.status.GetRemoteStatusOperation;
import com.owncloud.android.lib.resources.status.RemoteCapability;
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
import com.owncloud.android.operations.common.SyncOperation;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation;
import com.owncloud.android.lib.resources.files.RemoteFile;
import com.owncloud.android.lib.resources.files.UploadRemoteFileOperation;
import com.owncloud.android.lib.resources.server.CheckPathExistenceRemoteOperation;
import com.owncloud.android.lib.resources.files.CheckPathExistenceRemoteOperation;
import com.owncloud.android.operations.common.SyncOperation;
import com.owncloud.android.utils.ConnectivityUtils;
import com.owncloud.android.utils.FileStorageUtils;
Expand Down Expand Up @@ -309,7 +309,7 @@ protected RemoteOperationResult run(OwnCloudClient client) {
/// automatic rename of file to upload in case of name collision in server
Timber.d("Checking name collision in server");
if (!mForceOverwrite) {
String remotePath = RemoteFileUtils.Companion.getAvailableRemotePath(mRemotePath);
String remotePath = RemoteFileUtils.Companion.getAvailableRemotePath(mRemotePath, client);
mWasRenamed = !mRemotePath.equals(remotePath);
if (mWasRenamed) {
createNewOCFile(remotePath);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ package com.owncloud.android.operations.common
import com.owncloud.android.domain.UseCaseResult
import com.owncloud.android.domain.authentication.usecases.LoginAsyncUseCase
import com.owncloud.android.domain.server.model.ServerInfo
import com.owncloud.android.domain.server.usecases.CheckPathExistenceAsyncUseCase
import com.owncloud.android.domain.server.usecases.GetServerInfoAsyncUseCase
import com.owncloud.android.domain.user.model.UserInfo
import com.owncloud.android.domain.user.usecases.GetUserInfoAsyncUseCase
Expand All @@ -34,15 +33,11 @@ import org.koin.core.inject
*/
class UseCaseHelper : KoinComponent {
private val mGetUserInfoAsyncUseCase: GetUserInfoAsyncUseCase by inject()
private val mCheckPathExistenceAsyncUseCase: CheckPathExistenceAsyncUseCase by inject()
private val mGetServerInfoAsyncUseCase: GetServerInfoAsyncUseCase by inject()
private val loginAsyncUseCase: LoginAsyncUseCase by inject()

fun getUserInfo(): UseCaseResult<UserInfo> = mGetUserInfoAsyncUseCase.execute(Unit)

fun checkPathExistence(remotePath: String): UseCaseResult<Any> =
mCheckPathExistenceAsyncUseCase.execute(CheckPathExistenceAsyncUseCase.Params(remotePath, false))

fun getServerInfo(serverUrl: String): UseCaseResult<ServerInfo> =
mGetServerInfoAsyncUseCase.execute(GetServerInfoAsyncUseCase.Params(serverPath = serverUrl))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@
package com.owncloud.android.utils

import com.owncloud.android.lib.common.OwnCloudClient
import com.owncloud.android.lib.resources.server.CheckPathExistenceRemoteOperation
import com.owncloud.android.operations.common.UseCaseHelper
import timber.log.Timber
import com.owncloud.android.lib.resources.files.CheckPathExistenceRemoteOperation

class RemoteFileUtils {
companion object {
Expand All @@ -34,8 +32,8 @@ class RemoteFileUtils {
* @param remotePath
* @return
*/
fun getAvailableRemotePath(remotePath: String): String? {
var checkExistsFile = existsFile(remotePath)
fun getAvailableRemotePath(remotePath: String, client: OwnCloudClient): String? {
var checkExistsFile = existsFile(remotePath, client)
if (!checkExistsFile) {
return remotePath
}
Expand All @@ -52,9 +50,9 @@ class RemoteFileUtils {
do {
suffix = " ($count)"
checkExistsFile = if (pos >= 0) {
existsFile("${remotePath.substringBeforeLast('.', "")}$suffix.$extension")
existsFile("${remotePath.substringBeforeLast('.', "")}$suffix.$extension", client)
} else {
existsFile(remotePath + suffix)
existsFile(remotePath + suffix, client)
}
count++
} while (checkExistsFile)
Expand All @@ -65,11 +63,13 @@ class RemoteFileUtils {
}
}

private fun existsFile(remotePath: String): Boolean {
val useCaseHelper = UseCaseHelper()
val exists = useCaseHelper.checkPathExistence(remotePath).getDataOrNull() == true
Timber.d("File with same name exists = " + exists)
return exists
private fun existsFile(remotePath: String, client: OwnCloudClient): Boolean {
val existsOperation =
CheckPathExistenceRemoteOperation(
remotePath,
false
)
return existsOperation.execute(client).isSuccess
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import com.owncloud.android.data.executeRemoteOperation
import com.owncloud.android.lib.common.OwnCloudClient
import com.owncloud.android.lib.common.OwnCloudClientFactory
import com.owncloud.android.lib.common.authentication.OwnCloudCredentialsFactory
import com.owncloud.android.lib.resources.server.CheckPathExistenceRemoteOperation
import com.owncloud.android.lib.resources.files.CheckPathExistenceRemoteOperation

class OCRemoteAuthenticationDataSource(private val context: Context) : RemoteAuthenticationDataSource {
override fun login(serverPath: String, username: String, password: String) {
Expand All @@ -36,7 +36,8 @@ class OCRemoteAuthenticationDataSource(private val context: Context) : RemoteAut
val client: OwnCloudClient =
OwnCloudClientFactory.createOwnCloudClient(url, context, false).apply { setCredentials(credentials) }

val operation = CheckPathExistenceRemoteOperation("/", true)
val operation =
CheckPathExistenceRemoteOperation("/", true)
executeRemoteOperation { operation.execute(client) }

if (operation.wasRedirected()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package com.owncloud.android.domain.server
package com.owncloud.android.data.files.datasources

import com.owncloud.android.domain.server.model.ServerInfo

interface AnonymousServerRepository {
fun getServerInfo(path: String): ServerInfo
interface RemoteFileDataSource {
fun checkPathExistence(path: String, checkUserCredentials: Boolean): Boolean
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,15 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package com.owncloud.android.domain.server.usecases
package com.owncloud.android.data.files.datasources.implementation

import com.owncloud.android.domain.BaseUseCaseWithResult
import com.owncloud.android.domain.server.ServerRepository
import com.owncloud.android.data.files.datasources.RemoteFileDataSource
import com.owncloud.android.lib.resources.files.FileService

class CheckPathExistenceAsyncUseCase(
private val serverRepository: ServerRepository
) : BaseUseCaseWithResult<Boolean, CheckPathExistenceAsyncUseCase.Params>() {
override fun run(params: Params): Boolean =
serverRepository.checkPathExistence(params.remotePath, params.isUserLogged)
class OCRemoteFileDataSource(
private val fileService: FileService
) : RemoteFileDataSource {
override fun checkPathExistence(path: String, checkUserCredentials: Boolean): Boolean =
fileService.checkPathExistence(path = path, isUserLogged = checkUserCredentials).data

data class Params(
val remotePath: String,
val isUserLogged: Boolean
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,17 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package com.owncloud.android.data.server.network
package com.owncloud.android.data.files.network

import com.owncloud.android.lib.common.OwnCloudClient
import com.owncloud.android.lib.common.operations.RemoteOperationResult
import com.owncloud.android.lib.resources.server.CheckPathExistenceRemoteOperation
import com.owncloud.android.lib.resources.server.FileService
import com.owncloud.android.lib.resources.server.GetRemoteStatusOperation
import com.owncloud.android.lib.resources.status.OwnCloudVersion
import com.owncloud.android.lib.resources.files.CheckPathExistenceRemoteOperation
import com.owncloud.android.lib.resources.files.FileService

class OCFileService(override val client: OwnCloudClient) : FileService {
override fun checkPathExistence(path: String, isUserLogged: Boolean): RemoteOperationResult<Boolean> =
CheckPathExistenceRemoteOperation(
remotePath = path,
isUserLogged = true
isUserLogged = isUserLogged
).execute(client)

override fun getRemoteStatus(path: String): RemoteOperationResult<OwnCloudVersion> =
GetRemoteStatusOperation().execute(client)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/**
* ownCloud Android client application
*
* @author Abel García de Prada
* Copyright (C) 2020 ownCloud GmbH.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package com.owncloud.android.data.files.repository

import com.owncloud.android.data.files.datasources.RemoteFileDataSource
import com.owncloud.android.domain.file.FileService

class OCFileRepository(
private val remoteFileDataSource: RemoteFileDataSource
) : FileService {
override fun checkPathExistence(path: String, userLogged: Boolean): Boolean =
remoteFileDataSource.checkPathExistence(path, userLogged)
}
Loading

0 comments on commit cb740b5

Please sign in to comment.