blob: e142ca7bd8aeee0f4e94c4fe9415556fa22f7028 [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.jclouds.s3.domain;
import java.net.URI;
import java.util.Date;
import java.util.Map;
import org.jclouds.io.ContentMetadataBuilder;
import org.jclouds.io.payloads.BaseMutableContentMetadata;
import org.jclouds.s3.domain.ObjectMetadata.StorageClass;
import org.jclouds.s3.domain.internal.MutableObjectMetadataImpl;
import com.google.common.collect.ImmutableMap;
/**
* Allows you to create {@link ObjectMetadata} objects.
*/
public class ObjectMetadataBuilder {
public static ObjectMetadataBuilder create() {
return new ObjectMetadataBuilder();
}
private final ContentMetadataBuilder contentMetadataBuilder = new ContentMetadataBuilder()
.contentType("binary/octet-stream");
private String key;
private String bucket;
private URI uri;
private StorageClass storageClass = StorageClass.STANDARD;
private Date lastModified;
private String eTag;
private CanonicalUser owner;
private Map<String, String> userMetadata = ImmutableMap.of();
public ObjectMetadataBuilder key(String key) {
this.key = key;
return this;
}
public ObjectMetadataBuilder bucket(String bucket) {
this.bucket = bucket;
return this;
}
public ObjectMetadataBuilder owner(CanonicalUser owner) {
this.owner = owner;
return this;
}
public ObjectMetadataBuilder eTag(String eTag) {
this.eTag = eTag;
return this;
}
public ObjectMetadataBuilder uri(URI uri) {
this.uri = uri;
return this;
}
public ObjectMetadataBuilder lastModified(Date lastModified) {
this.lastModified = lastModified;
return this;
}
public ObjectMetadataBuilder storageClass(StorageClass storageClass) {
this.storageClass = storageClass;
return this;
}
public ObjectMetadataBuilder cacheControl(String cacheControl) {
contentMetadataBuilder.cacheControl(cacheControl);
return this;
}
public ObjectMetadataBuilder userMetadata(Map<String, String> userMetadata) {
this.userMetadata = ImmutableMap.copyOf(userMetadata);
return this;
}
public ObjectMetadataBuilder contentDisposition(String contentDisposition) {
contentMetadataBuilder.contentDisposition(contentDisposition);
return this;
}
public ObjectMetadataBuilder contentEncoding(String contentEncoding) {
contentMetadataBuilder.contentEncoding(contentEncoding);
return this;
}
public ObjectMetadataBuilder contentLanguage(String contentLanguage) {
contentMetadataBuilder.contentLanguage(contentLanguage);
return this;
}
public ObjectMetadataBuilder contentLength(Long contentLength) {
contentMetadataBuilder.contentLength(contentLength);
return this;
}
public ObjectMetadataBuilder contentMD5(byte[] md5) {
contentMetadataBuilder.contentMD5(md5);
return this;
}
public ObjectMetadataBuilder contentType(String contentType) {
contentMetadataBuilder.contentType(contentType);
return this;
}
public ObjectMetadata build() {
MutableObjectMetadataImpl toReturn = new MutableObjectMetadataImpl();
toReturn.setContentMetadata(BaseMutableContentMetadata.fromContentMetadata(contentMetadataBuilder.build()));
toReturn.setKey(key);
toReturn.setBucket(bucket);
toReturn.setUri(uri);
toReturn.setETag(eTag);
toReturn.setOwner(owner);
toReturn.setStorageClass(storageClass);
toReturn.setUserMetadata(userMetadata);
toReturn.setLastModified(lastModified);
return toReturn;
}
}