diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/transport/plugin/BucketOperator.java b/src/main/java/org/gcube/contentmanagement/blobstorage/transport/plugin/BucketOperator.java index 19fd02e..6f928bd 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/transport/plugin/BucketOperator.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/transport/plugin/BucketOperator.java @@ -28,9 +28,11 @@ import software.amazon.awssdk.services.s3.model.ListBucketsRequest; import software.amazon.awssdk.services.s3.model.ListBucketsResponse; import software.amazon.awssdk.services.s3.model.ListObjectsV2Request; import software.amazon.awssdk.services.s3.model.ListObjectsV2Response; +import software.amazon.awssdk.services.s3.model.NoSuchKeyException; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import software.amazon.awssdk.services.s3.model.PutObjectResponse; import software.amazon.awssdk.services.s3.model.S3Object; +import software.amazon.awssdk.services.s3.model.S3Response; public class BucketOperator { @@ -156,9 +158,21 @@ public class BucketOperator { * @param bucket * @param key * @param file + * @param replace * @return */ - public static PutObjectResponse putObject(String bucket, String key, File file) { + public static S3Response putObject(String bucket, String key, File file, boolean replace) { + if(!replace) { + GetObjectRequest getObjectRequest = GetObjectRequest.builder() + .bucket(bucket) + .key(key) + .build(); + try { + return client.getObject(getObjectRequest).response(); + }catch (NoSuchKeyException e) { + + } + } PutObjectRequest objectRequest = PutObjectRequest.builder() .bucket(bucket) .key(key) @@ -184,13 +198,20 @@ public class BucketOperator { return response.toString(); } + /** + * Get object length in bytes + * @param bucket + * @param key + * @return + * @throws IOException + */ + public static Long getObjectSize( String bucket, String key) throws IOException { GetObjectRequest getObjectRequest = GetObjectRequest.builder() .bucket(bucket) .key(key) .build(); - return client.getObject(getObjectRequest).response().contentLength(); } diff --git a/src/main/java/org/gcube/contentmanagement/blobstorage/transport/plugin/S3PluginManager.java b/src/main/java/org/gcube/contentmanagement/blobstorage/transport/plugin/S3PluginManager.java index cb93763..06dcc7f 100644 --- a/src/main/java/org/gcube/contentmanagement/blobstorage/transport/plugin/S3PluginManager.java +++ b/src/main/java/org/gcube/contentmanagement/blobstorage/transport/plugin/S3PluginManager.java @@ -40,14 +40,15 @@ import com.mongodb.MongoException; public class S3PluginManager extends TransportManager { - Region region = Region.US_EAST_1; - final String END_POINT = "https://s3.wasabisys.com"; + S3Client s3; private Logger logger = LoggerFactory.getLogger(S3PluginManager.class); // THE FOLLOWING FIELDS SHOULD BE RETRIEVED FROM SERVICEENDPOINT static final String ACCESS_KEY="UXMKEBMZBDROS5K9HREG"; static final String SECRET_ACCESS_KEY="0Mqu8gmzcZ09wuqqKZwNmuS5bYC549MlZhvfgv6W"; + Region region = Region.US_EAST_1; + final String END_POINT = "https://s3.wasabisys.com"; static final String bucket="gcube-home-test-access"; @@ -87,7 +88,7 @@ public class S3PluginManager extends TransportManager { logger.info("put method invoked "); File file= new File(upload.getResource().getLocalPath()); // return BucketOperator.getInstance(s3).putObject(bucket, Utils.convertToS3Format(upload.getResource().getRemotePath()), file).toString(); - int hashcode=BucketOperator.getInstance(s3).putObject(bucket, Utils.convertToS3Format(upload.getResource().getRemotePath()), file).hashCode(); + int hashcode=BucketOperator.getInstance(s3).putObject(bucket, Utils.convertToS3Format(upload.getResource().getRemotePath()), file, upload.isReplaceOption()).hashCode(); return hashcode+""; }