All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.s3.model.BucketLifecycleConfiguration Maven / Gradle / Ivy

Go to download

The AWS SDK for Java with support for OSGi. The AWS SDK for Java provides Java APIs for building software on AWS' cost-effective, scalable, and reliable infrastructure products. The AWS Java SDK allows developers to code against APIs for all of Amazon's infrastructure web services (Amazon S3, Amazon EC2, Amazon SQS, Amazon Relational Database Service, Amazon AutoScaling, etc).

There is a newer version: 1.11.60
Show newest version
/*
 * Copyright 2011-2016 Amazon Technologies, Inc.
 *
 * Licensed 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://aws.amazon.com/apache2.0
 *
 * This file 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 com.amazonaws.services.s3.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * Container for bucket lifecycle configuration operations.
 */
public class BucketLifecycleConfiguration implements Serializable {

    /**
     * Constant for an enabled rule.
     *
     * @see Rule#setStatus(String)
     */
    public static final String ENABLED = "Enabled";

    /**
     * Constant for a disabled rule.
     *
     * @see Rule#setStatus(String)
     */
    public static final String DISABLED = "Disabled";

    private List rules;

    /**
     * Returns the list of rules that comprise this configuration.
     */
    public List getRules() {
        return rules;
    }

    /**
     * Sets the rules that comprise this configuration.
     */
    public void setRules(List rules) {
        this.rules = rules;
    }

    /**
     * Sets the rules that comprise this configuration and returns a reference
     * to this object for easy method chaining.
     */
    public BucketLifecycleConfiguration withRules(List rules) {
        setRules(rules);
        return this;
    }

    /**
     * Convenience array style method for
     * {@link BucketLifecycleConfiguration#withRules(List)}
     */
    public BucketLifecycleConfiguration withRules(Rule... rules) {
        setRules(Arrays.asList(rules));
        return this;
    }

    /**
     * Constructs a new {@link BucketLifecycleConfiguration} object with the
     * rules given.
     *
     * @param rules
     */
    public BucketLifecycleConfiguration(List rules) {
        this.rules = rules;
    }

    public BucketLifecycleConfiguration() {
        super();
    }

    public static class Rule implements Serializable {

        private String id;
        private String prefix;
        private String status;

        /**
         * The time, in days, between when the object is uploaded to the bucket
         * and when it expires. Should not coexist with expirationDate within
         * one lifecycle rule.
         */
        private int expirationInDays = -1;

        private boolean expiredObjectDeleteMarker = false;

        /**
         * The time, in days, between when a new version of the object is
         * uploaded to the bucket and when older versions of the object
         * expire.
         */
        private int noncurrentVersionExpirationInDays = -1;

        /**
         * The expiration date of the object and should not coexist with expirationInDays within
         * one lifecycle rule.
         */
        private Date expirationDate;

        /**
         * Transition rules for the objects in the bucket.
         */
        private List transitions;

        /**
         * Transition rules for the non current objects in the bucket.
         */
        private List noncurrentVersionTransitions;

        /**
         * Specifies the days since the initiation of an Incomplete Multipart Upload that Lifecycle will wait before permanently removing all parts of the upload.
         */
        private AbortIncompleteMultipartUpload abortIncompleteMultipartUpload;

        /**
         * Sets the ID of this rule. Rules must be less than 255 alphanumeric
         * characters, and must be unique for a bucket. If you do not assign an
         * ID, one will be generated.
         */
        public void setId(String id) {
            this.id = id;
        }

        /**
         * Sets the key prefix for which this rule will apply.
         */
        public void setPrefix(String prefix) {
            this.prefix = prefix;
        }

        /**
         * Sets the time, in days, between when an object is uploaded to the
         * bucket and when it expires.
         */
        public void setExpirationInDays(int expirationInDays) {
            this.expirationInDays = expirationInDays;
        }

        /**
         * Sets the time, in days, between when a new version of the object is
         * uploaded to the bucket and when older versions of the object expire.
         */
        public void setNoncurrentVersionExpirationInDays(int value) {
            this.noncurrentVersionExpirationInDays = value;
        }

        /**
         * Returns the ID of this rule.
         */
        public String getId() {
            return id;
        }

        /**
         * Sets the ID of this rule and returns a reference to this object for
         * method chaining.
         *
         * @see Rule#setId(String)
         */
        public Rule withId(String id) {
            this.id = id;
            return this;
        }

        /**
         * Returns the key prefix for which this rule will apply.
         */
        public String getPrefix() {
            return prefix;
        }

        /**
         * Sets the key prefix for this rule and returns a reference to this
         * object for method chaining.
         *
         * @see Rule#setPrefix(String)
         */
        public Rule withPrefix(String prefix) {
            this.prefix = prefix;
            return this;
        }

        /**
         * Returns the time in days from an object's creation to its expiration.
         */
        public int getExpirationInDays() {
            return expirationInDays;
        }

        /**
         * Sets the time, in days, between when an object is uploaded to the
         * bucket and when it expires, and returns a reference to this object
         * for method chaining.
         *
         * @see Rule#setExpirationInDays(int)
         */
        public Rule withExpirationInDays(int expirationInDays) {
            this.expirationInDays = expirationInDays;
            return this;
        }

        /**
         * Returns the time, in days, between when a new version of the object
         * is uploaded to the bucket and when older versions of the object
         * expire.
         */
        public int getNoncurrentVersionExpirationInDays() {
            return noncurrentVersionExpirationInDays;
        }

        /**
         * Sets the time, in days, between when a new version of the object is
         * uploaded to the bucket and when older versions of the object expire,
         * and returns a reference to this object for method chaining.
         */
        public Rule withNoncurrentVersionExpirationInDays(int value) {
            setNoncurrentVersionExpirationInDays(value);
            return this;
        }

        /**
         * Returns the status of this rule.
         *
         * @see BucketLifecycleConfiguration#DISABLED
         * @see BucketLifecycleConfiguration#ENABLED
         */
        public String getStatus() {
            return status;
        }

        /**
         * Sets the status of this rule.
         *
         * @see BucketLifecycleConfiguration#DISABLED
         * @see BucketLifecycleConfiguration#ENABLED
         */
        public void setStatus(String status) {
            this.status = status;
        }

        /**
         * Sets the status of this rule and returns a reference to this object
         * for method chaining.
         *
         * @see Rule#setStatus(String)
         * @see BucketLifecycleConfiguration#DISABLED
         * @see BucketLifecycleConfiguration#ENABLED
         */
        public Rule withStatus(String status) {
            setStatus(status);
            return this;
        }

        /**
         * Sets the expiration date of the object.
         */
        public void setExpirationDate(Date expirationDate) {
            this.expirationDate = expirationDate;
        }

        /**
         * Returns the expiration date of the object.
         */
        public Date getExpirationDate() {
            return this.expirationDate;
        }

        /**
         * Sets the expiration date of the object and returns a reference to this
         * object(Rule) for method chaining.
         */
        public Rule withExpirationDate(Date expirationDate) {
            this.expirationDate = expirationDate;
            return this;
        }

        /**
         * Sets the transition describing how this object will move between
         * different storage classes in Amazon S3. Bucket Life cycle
         * configuration can now accept multiple transitions in a rule. Note :
         * This method overwrites all the existing transitions with given
         * transition. @Deprecated in favor of {@link #setTransitions(List)}
         */
        @Deprecated
        public void setTransition(Transition transition) {
            setTransitions(Arrays.asList(transition));
        }

        /**
         * Returns the transition associated with the rule. If there are more
         * than one transition associated with a given rule, this method returns
         * the last transition rule.
         * @Deprecated in favor of {@link #getTransitions()}
         */
        @Deprecated
        public Transition getTransition() {
            final List transitions = getTransitions();
            return (transitions != null && !transitions.isEmpty())
                    ? transitions.get(transitions.size() - 1)
                    : null;
        }

        /**
         * Sets the transition describing how this object will move between
         * different storage classes in Amazon S3. Bucket Life cycle
         * configuration can now accept multiple transitions in a rule.
         * @Deprecated in favor of {@link #withTransitions(List)}
         * Returns an updated reference of this object.
         */
        @Deprecated
        public Rule withTransition(Transition transition) {
            setTransitions(Arrays.asList(transition));
            return this;
        }

        /**
         * Sets the transition describing how non-current versions of objects
         * will move between different storage classes in Amazon S3. Bucket Life
         * cycle configuration can now accept multiple non current transitions
         * in a rule. Note: This method overwrites all the existing transitions
         * with given transition. @Deprecated in favor of
         * {@link #setNoncurrentVersionTransitions(List)}
         */
        @Deprecated
        public void setNoncurrentVersionTransition(
                NoncurrentVersionTransition nonCurrentVersionTransition) {

            setNoncurrentVersionTransitions(Arrays
                    .asList(nonCurrentVersionTransition));
        }

        /**
         * Returns the non-current transition associated with the life cycle
         * configuration rule. If there are more than one transitions associated
         * with a rule, this method returns the last transition in the rule. @Deprecated
         * in favor of {@link #getNoncurrentVersionTransitions()}
         */
        @Deprecated
        public NoncurrentVersionTransition getNoncurrentVersionTransition() {
            final List transitions = getNoncurrentVersionTransitions();
            return (transitions != null && !transitions.isEmpty())
                    ? transitions.get(transitions.size() - 1)
                    : null;
        }

        /**
         * Sets the transition describing how non-current versions of objects
         * will move between different storage classes in Amazon S3. Bucket Life
         * cycle configuration can now accept multiple non current transitions
         * in a rule. @Deprecated in favor of
         * {@link #withNoncurrentVersionTransitions(List)}
         * Returns a updated reference of this object.
         */
        @Deprecated
        public Rule withNoncurrentVersionTransition(
                NoncurrentVersionTransition nonCurrentVersionTransition) {

            setNoncurrentVersionTransitions(Arrays
                    .asList(nonCurrentVersionTransition));
            return this;
        }

        /**
         * Returns the Amazon S3 object transition rules associated with the
         * given rule.
         */
        public List getTransitions() {
            return transitions;
        }

        /**
         * Sets the Amazon S3 object transition rules for the given bucket.
         */
        public void setTransitions(List transitions) {
            this.transitions = new ArrayList(transitions);
        }

        /**
         * Sets the Amazon S3 object transition rules for the given bucket.
         * Returns an updated version of this object.
         */
        public Rule withTransitions(List transitions) {
            setTransitions(transitions);
            return this;
        }

        /**
         * Adds a new transition to the rule.
         */
        public Rule addTransition(Transition transition) {
            if (transition == null) {
                throw new IllegalArgumentException("Transition cannot be null.");
            }

            if (transitions == null) {
                transitions = new ArrayList();
            }
            transitions.add(transition);
            return this;
        }

        /**
         * Returns the Amazon S3 non current object transition rules associated
         * with the given rule.
         */
        public List getNoncurrentVersionTransitions() {
            return noncurrentVersionTransitions;
        }

        /**
         * Sets the Amazon S3 non current object transition rules for the given bucket.
         */
        public void setNoncurrentVersionTransitions(
                List noncurrentVersionTransitions) {
            this.noncurrentVersionTransitions = new ArrayList(
                    noncurrentVersionTransitions);
        }

        /**
         * Sets the Amazon S3 non current object transition rules for the given bucket.
         * Returns an updated version of this object.
         */
        public Rule withNoncurrentVersionTransitions(
                List noncurrentVersionTransitions) {
            setNoncurrentVersionTransitions(noncurrentVersionTransitions);
            return this;
        }

        /**
         * Adds a new Non current transition to the rule.
         */
        public Rule addNoncurrentVersionTransition(
                NoncurrentVersionTransition noncurrentVersionTransition) {
            if (noncurrentVersionTransition == null) {
                throw new IllegalArgumentException(
                        "NoncurrentVersionTransition cannot be null.");
            }

            if (noncurrentVersionTransitions == null) {
                noncurrentVersionTransitions = new ArrayList();
            }
            noncurrentVersionTransitions.add(noncurrentVersionTransition);
            return this;
        }

        public AbortIncompleteMultipartUpload getAbortIncompleteMultipartUpload() {
            return abortIncompleteMultipartUpload;
        }

        public void setAbortIncompleteMultipartUpload(AbortIncompleteMultipartUpload abortIncompleteMultipartUpload) {
            this.abortIncompleteMultipartUpload = abortIncompleteMultipartUpload;
        }

        public Rule withAbortIncompleteMultipartUpload
                (AbortIncompleteMultipartUpload abortIncompleteMultipartUpload) {
            setAbortIncompleteMultipartUpload(abortIncompleteMultipartUpload);
            return this;
        }

        /**
         * Returns whether the current expiration policy for the object is set to remove objects
         * when only a delete marker is left
         * 

* If set to true the lifecycle policy will delete the current version of an object if and * only if the current version is a expired object delete marker. This option only makes sense to use * for versioned buckets and cannot be used in conjunction with expirationInDays or * expirationDate. Note that the current version can only be removed if all non-current * versions have been removed (either through a non-current version expiration policy or * being explicitly deleted) *

* * @return True if this lifecycle's configuration is configured to delete the current * version of an object if it's the only version left and it's a delete marker. * False otherwise */ public boolean isExpiredObjectDeleteMarker() { return expiredObjectDeleteMarker; } /** * Sets the value of the ExpiredObjectDeleteMarkers attribute. * * @param expiredObjectDeleteMarker * True to allow the current expiration policy to remove the current version of * the object if it's the only version left and it's a delete marker. False has * no effect on the current expiration policy */ public void setExpiredObjectDeleteMarker(boolean expiredObjectDeleteMarker) { this.expiredObjectDeleteMarker = expiredObjectDeleteMarker; } /** * Fluent method for setting the value of the ExpiredObjectDeleteMarkers attributes. See * {@link #setExpiredObjectDeleteMarker(boolean)} * * @param expiredObjectDeleteMarker * @return This object for method chaining */ public Rule withExpiredObjectDeleteMarker(boolean expiredObjectDeleteMarker) { this.expiredObjectDeleteMarker = expiredObjectDeleteMarker; return this; } } /** * The transition attribute of the rule describing how this object will move * between different storage classes in Amazon S3. */ public static class Transition implements Serializable { /** * The time, in days, between when the object is uploaded to the bucket * and when it expires. Should not coexist with expirationDate within * one lifecycle rule. */ private int days = -1; /** * The expiration date of the object and should not coexist with expirationInDays within * one lifecycle rule. */ private Date date; private String storageClass; /** * Sets the time, in days, between when an object is uploaded to the bucket and when it * expires. */ public void setDays(int expirationInDays) { this.days = expirationInDays; } /** * Returns the time in days from an object's creation to its expiration. */ public int getDays() { return days; } /** * Sets the time, in days, between when an object is uploaded to the * bucket and when it expires, and returns a reference to this object * for method chaining. * * @see Rule#setExpirationInDays(int) */ public Transition withDays(int expirationInDays) { this.days = expirationInDays; return this; } /** * Sets the storage class of this object. */ public void setStorageClass(StorageClass storageClass) { if (storageClass == null) { setStorageClass((String) null); } else { setStorageClass(storageClass.toString()); } } /** * Sets the storage class of this object. */ public void setStorageClass(String storageClass) { this.storageClass = storageClass; } /** * Returns the storage class of this object. * * @deprecated This method should not be used. Use {@link #getStorageClassAsString()} * instead. */ @Deprecated public StorageClass getStorageClass() { try { return StorageClass.fromValue(this.storageClass); } catch (IllegalArgumentException ignored) { return null; } } /** * Returns the storage class of this object. */ public String getStorageClassAsString() { return this.storageClass; } /** * Sets the storage class of this object and returns a reference to this object for method * chaining. */ public Transition withStorageClass(StorageClass storageClass) { setStorageClass(storageClass); return this; } /** * Sets the storage class of this object and returns a reference to this object for method * chaining. */ public Transition withStorageClass(String storageClass) { setStorageClass(storageClass); return this; } /** * Set the expiration date of this object. */ public void setDate(Date expirationDate) { this.date = expirationDate; } /** * Returns the expiration date of this object. */ public Date getDate() { return this.date; } /** * Set the expiration date of this object and returns a reference to * this object(Transition) for method chaining. */ public Transition withDate(Date expirationDate) { this.date = expirationDate; return this; } } /** * The non-current-version transition attribute of the rule, describing * how non-current versions of objects will move between different storage * classes in Amazon S3. */ public static class NoncurrentVersionTransition implements Serializable { /** * The time, in days, between when a new version of the object is * uploaded to the bucket and when older version are archived. */ private int days = -1; private String storageClass; /** * Sets the time, in days, between when a new version of the object * is uploaded to the bucket and when older versions are archived. */ public void setDays(int expirationInDays) { this.days = expirationInDays; } /** * Returns the time in days from when a new version of the object * is uploaded to the bucket and when older versions are archived. */ public int getDays() { return days; } /** * Sets the time in days from when a new version of the object * is uploaded to the bucket and when older versions are archived, * and returns a reference to this object for method chaining. */ public NoncurrentVersionTransition withDays(int expirationInDays) { this.days = expirationInDays; return this; } /** * Sets the storage class of this object. */ public void setStorageClass(StorageClass storageClass) { if (storageClass == null) { setStorageClass((String) null); } else { setStorageClass(storageClass.toString()); } } /** * Sets the storage class of this object. */ public void setStorageClass(String storageClass) { this.storageClass = storageClass; } /** * Returns the storage class of this object. * * @deprecated This method should not be used. Use {@link #getStorageClassAsString()} * instead. */ @Deprecated public StorageClass getStorageClass() { try { return StorageClass.fromValue(this.storageClass); } catch (IllegalArgumentException ignored) { return null; } } /** * Returns the storage class of this object. */ public String getStorageClassAsString() { return this.storageClass; } /** * Sets the storage class of this object and returns a reference to this object for method * chaining. */ public NoncurrentVersionTransition withStorageClass(StorageClass storageClass) { setStorageClass(storageClass); return this; } /** * Sets the storage class of this object and returns a reference to this object for method * chaining. */ public NoncurrentVersionTransition withStorageClass(String storageClass) { setStorageClass(storageClass); return this; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy