mirror of
https://github.com/nextcloud/android.git
synced 2024-11-23 13:45:35 +03:00
Fix, creation of subdirectories
This commit is contained in:
parent
3ee1c51039
commit
15442976fe
6 changed files with 47 additions and 22 deletions
|
@ -38,53 +38,72 @@ public class CreateFolderTest extends ActivityInstrumentationTestCase2<TestActiv
|
|||
*/
|
||||
public void testCreateFolder() {
|
||||
|
||||
String folderName = "testCreateFolder" + mCurrentDate;
|
||||
String remotePath = "/testCreateFolder" + mCurrentDate;
|
||||
boolean createFullPath = true;
|
||||
|
||||
RemoteOperationResult result = mActivity.createFolder(remotePath, createFullPath);
|
||||
RemoteOperationResult result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.isSuccess() || result.getCode() == ResultCode.TIMEOUT);
|
||||
|
||||
// Create Subfolder
|
||||
folderName = "testCreateFolder" + mCurrentDate;
|
||||
remotePath = "/testCreateFolder" + mCurrentDate + "/" + "testCreateFolder" + mCurrentDate;
|
||||
createFullPath = true;
|
||||
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.isSuccess() || result.getCode() == ResultCode.TIMEOUT);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test to Create Folder with special characters
|
||||
*/
|
||||
public void testCreateFolderSpecialCharacters() {
|
||||
boolean createFullPath = true;
|
||||
|
||||
String folderName = "testSpecialCharacters_//" + mCurrentDate;
|
||||
String remotePath = "/testSpecialCharacters_//" + mCurrentDate;
|
||||
RemoteOperationResult result = mActivity.createFolder(remotePath, createFullPath);
|
||||
RemoteOperationResult result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
|
||||
folderName = "testSpecialCharacters_\\" + mCurrentDate;
|
||||
remotePath = "/testSpecialCharacters_\\" + mCurrentDate;
|
||||
result = mActivity.createFolder(remotePath, createFullPath);
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
|
||||
folderName = "testSpecialCharacters_<" + mCurrentDate;
|
||||
remotePath = "/testSpecialCharacters_<" + mCurrentDate;
|
||||
result = mActivity.createFolder(remotePath, createFullPath);
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
|
||||
folderName = "testSpecialCharacters_>" + mCurrentDate;
|
||||
remotePath = "/testSpecialCharacters_>" + mCurrentDate;
|
||||
result = mActivity.createFolder(remotePath, createFullPath);
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
|
||||
folderName = "testSpecialCharacters_:" + mCurrentDate;
|
||||
remotePath = "/testSpecialCharacters_:" + mCurrentDate;
|
||||
result = mActivity.createFolder(remotePath, createFullPath);
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
|
||||
folderName = "testSpecialCharacters_\"" + mCurrentDate;
|
||||
remotePath = "/testSpecialCharacters_\"" + mCurrentDate;
|
||||
result = mActivity.createFolder(remotePath, createFullPath);
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
|
||||
folderName = "testSpecialCharacters_|" + mCurrentDate;
|
||||
remotePath = "/testSpecialCharacters_|" + mCurrentDate;
|
||||
result = mActivity.createFolder(remotePath, createFullPath);
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
|
||||
folderName = "testSpecialCharacters_?" + mCurrentDate;
|
||||
remotePath = "/testSpecialCharacters_?" + mCurrentDate;
|
||||
result = mActivity.createFolder(remotePath, createFullPath);
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
|
||||
folderName = "testSpecialCharacters_*" + mCurrentDate;
|
||||
remotePath = "/testSpecialCharacters_*" + mCurrentDate;
|
||||
result = mActivity.createFolder(remotePath, createFullPath);
|
||||
result = mActivity.createFolder(folderName, remotePath, createFullPath);
|
||||
assertTrue(result.getCode() == ResultCode.INVALID_CHARACTER_IN_NAME);
|
||||
}
|
||||
|
||||
|
|
|
@ -88,13 +88,14 @@ public class TestActivity extends Activity {
|
|||
|
||||
/**
|
||||
* Access to the library method to Create a Folder
|
||||
* @param folderName
|
||||
* @param remotePath
|
||||
* @param createFullPath
|
||||
* @return
|
||||
*/
|
||||
public RemoteOperationResult createFolder(String remotePath, boolean createFullPath) {
|
||||
public RemoteOperationResult createFolder(String folderName, String remotePath, boolean createFullPath) {
|
||||
|
||||
CreateRemoteFolderOperation createOperation = new CreateRemoteFolderOperation(remotePath, createFullPath);
|
||||
CreateRemoteFolderOperation createOperation = new CreateRemoteFolderOperation(folderName, remotePath, createFullPath);
|
||||
RemoteOperationResult result = createOperation.execute(mClient);
|
||||
|
||||
return result;
|
||||
|
|
|
@ -29,17 +29,19 @@ public class CreateRemoteFolderOperation extends RemoteOperation {
|
|||
private static final int CONNECTION_TIMEOUT = 5000;
|
||||
|
||||
|
||||
|
||||
protected String mFolderName;
|
||||
protected String mRemotePath;
|
||||
protected boolean mCreateFullPath;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param folderName Name of new directory
|
||||
* @param remotePath Full path to the new directory to create in the remote server.
|
||||
* @param createFullPath 'True' means that all the ancestor folders should be created if don't exist yet.
|
||||
*/
|
||||
public CreateRemoteFolderOperation(String remotePath, boolean createFullPath) {
|
||||
public CreateRemoteFolderOperation(String folderName, String remotePath, boolean createFullPath) {
|
||||
mFolderName = folderName;
|
||||
mRemotePath = remotePath;
|
||||
mCreateFullPath = createFullPath;
|
||||
}
|
||||
|
@ -54,7 +56,7 @@ public class CreateRemoteFolderOperation extends RemoteOperation {
|
|||
RemoteOperationResult result = null;
|
||||
MkColMethod mkcol = null;
|
||||
|
||||
boolean noInvalidChars = FileUtils.validateName(mRemotePath);
|
||||
boolean noInvalidChars = FileUtils.validateName(mFolderName);
|
||||
if (noInvalidChars) {
|
||||
try {
|
||||
mkcol = new MkColMethod(client.getBaseUri() + WebdavUtils.encodePath(mRemotePath));
|
||||
|
@ -85,7 +87,7 @@ public class CreateRemoteFolderOperation extends RemoteOperation {
|
|||
|
||||
|
||||
private RemoteOperationResult createParentFolder(String parentPath, WebdavClient client) {
|
||||
RemoteOperation operation = new CreateRemoteFolderOperation( parentPath,
|
||||
RemoteOperation operation = new CreateRemoteFolderOperation("", parentPath,
|
||||
mCreateFullPath);
|
||||
return operation.execute(client);
|
||||
}
|
||||
|
|
|
@ -564,9 +564,10 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
|
|||
RemoteOperation operation = new ExistenceCheckOperation(pathToGrant, this, false);
|
||||
RemoteOperationResult result = operation.execute(mUploadClient);
|
||||
if (!result.isSuccess() && result.getCode() == ResultCode.FILE_NOT_FOUND && mCurrentUpload.isRemoteFolderToBeCreated()) {
|
||||
operation = new CreateFolderOperation( pathToGrant,
|
||||
true,
|
||||
mStorageManager );
|
||||
operation = new CreateFolderOperation( mCurrentUpload.getFileName(),
|
||||
pathToGrant,
|
||||
true,
|
||||
mStorageManager );
|
||||
result = operation.execute(mUploadClient);
|
||||
}
|
||||
if (result.isSuccess()) {
|
||||
|
|
|
@ -39,6 +39,7 @@ public class CreateFolderOperation extends RemoteOperation implements OnRemoteOp
|
|||
|
||||
private static final String TAG = CreateFolderOperation.class.getSimpleName();
|
||||
|
||||
protected String mFolderName;
|
||||
protected String mRemotePath;
|
||||
protected boolean mCreateFullPath;
|
||||
protected FileDataStorageManager mStorageManager;
|
||||
|
@ -50,7 +51,8 @@ public class CreateFolderOperation extends RemoteOperation implements OnRemoteOp
|
|||
* @param createFullPath 'True' means that all the ancestor folders should be created if don't exist yet.
|
||||
* @param storageManager Reference to the local database corresponding to the account where the file is contained.
|
||||
*/
|
||||
public CreateFolderOperation(String remotePath, boolean createFullPath, FileDataStorageManager storageManager) {
|
||||
public CreateFolderOperation(String folderName, String remotePath, boolean createFullPath, FileDataStorageManager storageManager) {
|
||||
mFolderName = folderName;
|
||||
mRemotePath = remotePath;
|
||||
mCreateFullPath = createFullPath;
|
||||
mStorageManager = storageManager;
|
||||
|
@ -60,7 +62,7 @@ public class CreateFolderOperation extends RemoteOperation implements OnRemoteOp
|
|||
|
||||
@Override
|
||||
protected RemoteOperationResult run(WebdavClient client) {
|
||||
CreateRemoteFolderOperation operation = new CreateRemoteFolderOperation(mRemotePath, mCreateFullPath);
|
||||
CreateRemoteFolderOperation operation = new CreateRemoteFolderOperation(mFolderName, mRemotePath, mCreateFullPath);
|
||||
RemoteOperationResult result = operation.execute(client);
|
||||
|
||||
if (result.isSuccess()) {
|
||||
|
|
|
@ -1439,7 +1439,7 @@ OCFileListFragment.ContainerActivity, FileDetailFragment.ContainerActivity, OnNa
|
|||
|
||||
// Create directory
|
||||
path += newDirectoryName + OCFile.PATH_SEPARATOR;
|
||||
RemoteOperation operation = new CreateFolderOperation(path, false, mStorageManager);
|
||||
RemoteOperation operation = new CreateFolderOperation(newDirectoryName, path, false, mStorageManager);
|
||||
operation.execute( getAccount(),
|
||||
FileDisplayActivity.this,
|
||||
FileDisplayActivity.this,
|
||||
|
|
Loading…
Reference in a new issue