blob: 9d2d2ae81d030e7c8c3d3a9a401ff17658770d7f [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.ozone.om.helpers;
import java.time.Instant;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationType;
import static org.apache.hadoop.ozone.OzoneConsts.OM_KEY_PREFIX;
/**
* Information about one initialized upload.
*/
public class OmMultipartUpload {
private String volumeName;
private String bucketName;
private String keyName;
private String uploadId;
private Instant creationTime;
private HddsProtos.ReplicationType replicationType;
private HddsProtos.ReplicationFactor replicationFactor;
public OmMultipartUpload(String volumeName, String bucketName,
String keyName, String uploadId) {
this.volumeName = volumeName;
this.bucketName = bucketName;
this.keyName = keyName;
this.uploadId = uploadId;
}
public OmMultipartUpload(String volumeName, String bucketName,
String keyName, String uploadId, Instant creationDate) {
this.volumeName = volumeName;
this.bucketName = bucketName;
this.keyName = keyName;
this.uploadId = uploadId;
this.creationTime = creationDate;
}
public OmMultipartUpload(String volumeName, String bucketName,
String keyName, String uploadId, Instant creationTime,
ReplicationType replicationType,
ReplicationFactor replicationFactor) {
this.volumeName = volumeName;
this.bucketName = bucketName;
this.keyName = keyName;
this.uploadId = uploadId;
this.creationTime = creationTime;
this.replicationType = replicationType;
this.replicationFactor = replicationFactor;
}
public static OmMultipartUpload from(String key) {
String[] split = key.split(OM_KEY_PREFIX);
if (split.length < 5) {
throw new IllegalArgumentException("Key " + key
+ " doesn't have enough segments to be a valid multipart upload key");
}
String uploadId = split[split.length - 1];
String volume = split[1];
String bucket = split[2];
return new OmMultipartUpload(volume, bucket,
key.substring(volume.length() + bucket.length() + 3,
key.length() - uploadId.length() - 1), uploadId);
}
public String getDbKey() {
return OmMultipartUpload
.getDbKey(volumeName, bucketName, keyName, uploadId);
}
public static String getDbKey(String volume, String bucket, String key,
String uploadId) {
return getDbKey(volume, bucket, key) + OM_KEY_PREFIX + uploadId;
}
public static String getDbKey(String volume, String bucket, String key) {
return OM_KEY_PREFIX + volume + OM_KEY_PREFIX + bucket +
OM_KEY_PREFIX + key;
}
public String getVolumeName() {
return volumeName;
}
public String getBucketName() {
return bucketName;
}
public String getKeyName() {
return keyName;
}
public String getUploadId() {
return uploadId;
}
public Instant getCreationTime() {
return creationTime;
}
public void setCreationTime(Instant creationTime) {
this.creationTime = creationTime;
}
public ReplicationType getReplicationType() {
return replicationType;
}
public void setReplicationType(
ReplicationType replicationType) {
this.replicationType = replicationType;
}
public ReplicationFactor getReplicationFactor() {
return replicationFactor;
}
public void setReplicationFactor(
ReplicationFactor replicationFactor) {
this.replicationFactor = replicationFactor;
}
}