You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2019/09/26 08:16:01 UTC
[camel] 01/02: CAMEL-14007 Expose BoxFolder.canUpload to let user
check if a file can be uploaded
https://issues.apache.org/jira/browse/CAMEL-14007
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 17b762cb57041ab8f746c87055ef51185a83968b
Author: Claudio Miranda <cl...@claudius.com.br>
AuthorDate: Wed Sep 25 23:18:37 2019 -0300
CAMEL-14007 Expose BoxFolder.canUpload to let user check if a file can be uploaded
https://issues.apache.org/jira/browse/CAMEL-14007
---
.../camel/component/box/api/BoxFilesManager.java | 137 ++++++++++++++-------
components/camel-box/camel-box-component/pom.xml | 4 +
2 files changed, 97 insertions(+), 44 deletions(-)
diff --git a/components/camel-box/camel-box-api/src/main/java/org/apache/camel/component/box/api/BoxFilesManager.java b/components/camel-box/camel-box-api/src/main/java/org/apache/camel/component/box/api/BoxFilesManager.java
index 2359ed9..4b69344 100644
--- a/components/camel-box/camel-box-api/src/main/java/org/apache/camel/component/box/api/BoxFilesManager.java
+++ b/components/camel-box/camel-box-api/src/main/java/org/apache/camel/component/box/api/BoxFilesManager.java
@@ -29,21 +29,21 @@ import com.box.sdk.BoxAPIException;
import com.box.sdk.BoxFile;
import com.box.sdk.BoxFileVersion;
import com.box.sdk.BoxFolder;
+import com.box.sdk.BoxItem;
import com.box.sdk.BoxSharedLink;
import com.box.sdk.FileUploadParams;
import com.box.sdk.Metadata;
import com.box.sdk.ProgressListener;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Box Files Manager
- *
+ *
* <p>
* Provides operations to manage Box files.
- *
- *
+ *
+ *
*
*/
public class BoxFilesManager {
@@ -58,7 +58,7 @@ public class BoxFilesManager {
/**
* Create files manager to manage the files of Box connection's
* authenticated user.
- *
+ *
* @param boxConnection
* - Box connection to authenticated user account.
*/
@@ -68,7 +68,7 @@ public class BoxFilesManager {
/**
* Get file information.
- *
+ *
* @param fileId
* - the id of file.
* @param fields
@@ -98,7 +98,7 @@ public class BoxFilesManager {
/**
* Update file information.
- *
+ *
* @param fileId
* - the id of file to update.
* @param info
@@ -125,7 +125,7 @@ public class BoxFilesManager {
/**
* Upload a new file to parent folder.
- *
+ *
* @param parentFolderId
* - the id of parent folder.
* @param content
@@ -141,12 +141,14 @@ public class BoxFilesManager {
* @param size
* - the size of the file's content used for monitoring the
* upload's progress.
+ * @param check
+ * - if the file name is already used, call the uploadNewVersion instead.
* @param listener
* - a listener for monitoring the upload's progress.
* @return The uploaded file.
*/
public BoxFile uploadFile(String parentFolderId, InputStream content, String fileName, Date created, Date modified,
- Long size, ProgressListener listener) {
+ Long size, boolean check, ProgressListener listener) {
try {
LOG.debug("Uploading file with name '" + fileName + "' to parent_folder(id=" + parentFolderId + ")");
if (parentFolderId == null) {
@@ -158,25 +160,39 @@ public class BoxFilesManager {
if (fileName == null) {
throw new IllegalArgumentException("Paramerer 'fileName' can not be null");
}
- BoxFolder parentFolder = new BoxFolder(boxConnection, parentFolderId);
-
- FileUploadParams uploadParams = new FileUploadParams();
- uploadParams.setName(fileName);
- uploadParams.setContent(content);
- if (created != null) {
- uploadParams.setCreated(created);
- }
- if (modified != null) {
- uploadParams.setModified(modified);
- }
- if (size != null) {
- uploadParams.setSize(size);
- }
- if (listener != null) {
- uploadParams.setProgressListener(listener);
+ BoxFile boxFile = null;
+ boolean uploadNewFile = true;
+ if (check) {
+ BoxSearchManager bsm = new BoxSearchManager(boxConnection);
+ Collection<BoxItem> res = bsm.searchFolder(parentFolderId, fileName);
+ if (!res.isEmpty()) {
+ BoxItem boxItem = res.iterator().next();
+ boxFile = uploadNewFileVersion(boxItem.getID(), content, modified, size, listener);
+ uploadNewFile = false;
+ }
}
- return parentFolder.uploadFile(uploadParams).getResource();
+ if (uploadNewFile){
+ BoxFolder parentFolder = new BoxFolder(boxConnection, parentFolderId);
+ FileUploadParams uploadParams = new FileUploadParams();
+ uploadParams.setName(fileName);
+ uploadParams.setContent(content);
+ if (created != null) {
+ uploadParams.setCreated(created);
+ }
+ if (modified != null) {
+ uploadParams.setModified(modified);
+ }
+ if (size != null) {
+ uploadParams.setSize(size);
+ }
+ if (listener != null) {
+ uploadParams.setProgressListener(listener);
+ }
+
+ boxFile = parentFolder.uploadFile(uploadParams).getResource();
+ }
+ return boxFile;
} catch (BoxAPIException e) {
throw new RuntimeException(
String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e);
@@ -185,7 +201,7 @@ public class BoxFilesManager {
/**
* Upload a new version of file.
- *
+ *
* @param fileId
* - the id of file.
* @param fileContent
@@ -232,7 +248,7 @@ public class BoxFilesManager {
/**
* Get any previous versions of file.
- *
+ *
* @param fileId
* - the id of file.
* @return The list of previous file versions.
@@ -256,7 +272,7 @@ public class BoxFilesManager {
/**
* Download a file.
- *
+ *
* @param fileId
* - the id of file.
* @param output
@@ -309,7 +325,7 @@ public class BoxFilesManager {
/**
* Download a previous version of file.
- *
+ *
* @param fileId
* - the id of file.
* @param version
@@ -357,7 +373,7 @@ public class BoxFilesManager {
/**
* Promote a previous version of file.
- *
+ *
* @param fileId
* - the id of file.
* @param version
@@ -390,7 +406,7 @@ public class BoxFilesManager {
/**
* Copy file to destination folder while optionally giving it a new name.
- *
+ *
* @param fileId
* - the id of file to copy.
* @param destinationFolderId
@@ -426,7 +442,7 @@ public class BoxFilesManager {
/**
* Move file to destination folder while optionally giving it a new name.
- *
+ *
* @param fileId
* - the id of file to move.
* @param destinationFolderId
@@ -462,7 +478,7 @@ public class BoxFilesManager {
/**
* Rename file giving it the name <code>newName</code>
- *
+ *
* @param fileId
* - the id of file to rename.
* @param newFileName
@@ -489,7 +505,7 @@ public class BoxFilesManager {
/**
* Delete the file.
- *
+ *
* @param fileId
* - the id of file to delete.
*/
@@ -509,7 +525,7 @@ public class BoxFilesManager {
/**
* Delete a file version.
- *
+ *
* @param fileId
* - the id of file with version to delete.
* @param version
@@ -540,7 +556,7 @@ public class BoxFilesManager {
/**
* Create a shared link to file.
- *
+ *
* @param fileId
* - the id of the file to create shared link on.
* @param access
@@ -582,7 +598,7 @@ public class BoxFilesManager {
* Get an expiring URL for downloading a file directly from Box. This can be
* user, for example, for sending as a redirect to a browser to cause the
* browser to download the file directly from Box.
- *
+ *
* @param fileId
* - the id of file.
* @return The temporary download URL
@@ -608,7 +624,7 @@ public class BoxFilesManager {
* Get an expiring URL for creating an embedded preview session. The URL
* will expire after 60 seconds and the preview session will expire after 60
* minutes.
- *
+ *
* @param fileId
* - the id of the file to get preview link on.
* @return The preview link.
@@ -633,7 +649,7 @@ public class BoxFilesManager {
* Get an expiring URL for creating an embedded preview session. The URL
* will expire after 60 seconds and the preview session will expire after 60
* minutes.
- *
+ *
* @param fileId
* - the id of the file to get preview link on.
* @param fileType
@@ -684,7 +700,7 @@ public class BoxFilesManager {
/**
* Create metadata for file in either the global properties template or the
* specified template type.
- *
+ *
* @param fileId
* - the id of the file to create metadata for.
* @param metadata
@@ -720,7 +736,7 @@ public class BoxFilesManager {
/**
* Gets the file properties metadata.
- *
+ *
* @param fileId
* - the id of the file to retrieve metadata for.
* @param typeName
@@ -752,7 +768,7 @@ public class BoxFilesManager {
/**
* Update the file properties metadata.
- *
+ *
* @param fileId
* - the id of file to delete.
* @param metadata
@@ -778,7 +794,7 @@ public class BoxFilesManager {
/**
* Delete the file properties metadata.
- *
+ *
* @param fileId
* - the id of file to delete.
*/
@@ -795,4 +811,37 @@ public class BoxFilesManager {
String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e);
}
}
+
+ /**
+ * Does a pre-verification before upload, to check if the filename already exists or if there is permission to upload.
+ * It will throw a BoxAPIResponseException if there is any problem in uploading the given file.
+ *
+ * @param parentFolderId
+ * - the id of parent folder.
+ * @param fileName
+ * the name to give the uploaded file.
+ * @param size
+ * - the size of the file's content used for monitoring the upload's progress.
+ *
+ */
+ public void checkUpload(String fileName, String parentFolderId, Long size) {
+ try {
+ LOG.debug("Preflight check file with name '" + fileName + "' to parent_folder(id=" + parentFolderId + ")");
+ if (parentFolderId == null) {
+ throw new IllegalArgumentException("Parameter 'parentFolderId' can not be null");
+ }
+ if (fileName == null) {
+ throw new IllegalArgumentException("Parameter 'fileName' can not be null");
+ }
+ if (size == null) {
+ throw new IllegalArgumentException("Parameter 'size' can not be null");
+ }
+
+ BoxFolder parentFolder = new BoxFolder(boxConnection, parentFolderId);
+ parentFolder.canUpload(fileName, size);
+ } catch (BoxAPIException e) {
+ throw new RuntimeException(
+ String.format("Box API returned the error code %d\n\n%s", e.getResponseCode(), e.getResponse()), e);
+ }
+ }
}
diff --git a/components/camel-box/camel-box-component/pom.xml b/components/camel-box/camel-box-component/pom.xml
index 88e9c68..ca95df8 100644
--- a/components/camel-box/camel-box-component/pom.xml
+++ b/components/camel-box/camel-box-component/pom.xml
@@ -324,6 +324,10 @@
<methodPattern>getFileThumbnail</methodPattern>
<methodAlias>thumbnail</methodAlias>
</alias>
+ <alias>
+ <methodPattern>checkUpload</methodPattern>
+ <methodAlias>canUpload</methodAlias>
+ </alias>
</aliases>
<nullableOptions>
<nullableOption>fields</nullableOption>