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

com.ksyun.ks3.dto.BucketLifecycleConfiguration Maven / Gradle / Ivy

package com.ksyun.ks3.dto;

import com.ksyun.ks3.exception.client.ClientIllegalArgumentException;
import com.ksyun.ks3.service.common.StorageClass;
import com.ksyun.ks3.utils.StringUtils;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import static com.ksyun.ks3.exception.client.ClientIllegalArgumentExceptionGenerator.between;
import static com.ksyun.ks3.exception.client.ClientIllegalArgumentExceptionGenerator.notNull;

public class BucketLifecycleConfiguration {

    private List rules;

    public List getRules() {
        return this.rules;
    }

    public void setRules(List rules) {
        this.rules = rules;
    }

    public BucketLifecycleConfiguration(List rules) {
        this.rules = rules;
    }

    public BucketLifecycleConfiguration() {
    }

    public String toString() {
        return "BucketLifecycleConfiguration(rules=" + getRules() + ")";
    }

    public static enum Status {
        ENABLED("Enabled"),
        DISABLED("Disabled");

        private Status(String status) {
            this.status = status;
        }

        private String status;

        public String status2Str() {
            return status;
        }

        public static Status str2Status(String statusStr) {
            Status status = null;
            for (Status senum : Status.values()) {
                if (senum.status.equals(statusStr)) {
                    status = senum;
                    break;
                }
            }
            return status;
        }


    }


    public static class Rule {
        private String id;
        private String prefix;
        private Status status;
        private Integer expirationInDays;

        private Date expirationDate;

        private List storageTransitions;

		private List tagSet;
		
        private Boolean expiredObjectDeleteMarker = null;
		
        private Integer noncurrentVersionExpirationInDays = null;

        private List noncurrentVersionTransitions;

        public List getTagSet() {
            return tagSet;
        }

        public void setTagSet(List tagSet) {
            this.tagSet = tagSet;
        }


        public List getStorageTransitions() {
            return storageTransitions;
        }

        public void setStorageTransitions(List storageTransitions) {
            this.storageTransitions = storageTransitions;
        }

        public void setId(String id) {
            this.id = id;
        }

        public void setPrefix(String prefix) {
            this.prefix = prefix;
        }

		public Boolean getExpiredObjectDeleteMarker() {
			return expiredObjectDeleteMarker;
		}

		public void setExpiredObjectDeleteMarker(Boolean expiredObjectDeleteMarker) {
			this.expiredObjectDeleteMarker = expiredObjectDeleteMarker;
		}

		public Integer getNoncurrentVersionExpirationInDays() {
			return noncurrentVersionExpirationInDays;
		}

		public void setNoncurrentVersionExpirationInDays(int noncurrentVersionExpirationInDays) {
			this.noncurrentVersionExpirationInDays = noncurrentVersionExpirationInDays;
		}

		public List getNoncurrentVersionTransitions() {
			return noncurrentVersionTransitions;
		}

		public void setNoncurrentVersionTransitions(List noncurrentVersionTransitions) {
			this.noncurrentVersionTransitions = noncurrentVersionTransitions;
		}

		public void setExpirationInDays(Integer expirationInDays) {
			this.expirationInDays = expirationInDays;
		}

        public String getId() {
            return this.id;
        }


        public String getPrefix() {
            return this.prefix;
        }

        public Integer getExpirationInDays() {
            return this.expirationInDays;
        }

        public Status getStatus() {
            return this.status;
        }

        public void setStatus(Status status) {
            this.status = status;
        }

        public void setExpirationDate(Date expirationDate) {
            this.expirationDate = expirationDate;
        }

		public Date getExpirationDate() {
			return this.expirationDate;
		}
		
		@Override
		public String toString() {
			return "BucketLifecycleConfiguration Rule [id=" + id + ", prefix=" + prefix + ", status=" + status + ", expirationInDays="
					+ expirationInDays + ", expirationDate=" + expirationDate + ", storageTransitions="
					+ storageTransitions + ", tagSet=" + tagSet + ", expiredObjectDeleteMarker="
					+ expiredObjectDeleteMarker + ", noncurrentVersionExpirationInDays="
					+ noncurrentVersionExpirationInDays + ", noncurrentVersionTransitions="
					+ noncurrentVersionTransitions + "]";
		}

		public void validate() throws ClientIllegalArgumentException {
			validateRuleId();
//	        validateFilter();
			validateExpiration();
			validateStatus();
			validateStorageTransition();
		}

		private void validateRuleId() throws ClientIllegalArgumentException {
			if (StringUtils.isBlank(id)) {
				throw notNull("rule id");
			}

			if (id.length() > StringUtils.MAXIMUM_ALLOWED_ID_LENGTH) {
				throw between("rule id", id, "1", String.valueOf(StringUtils.MAXIMUM_ALLOWED_ID_LENGTH));
			}
		}

		private void validateFilter() throws ClientIllegalArgumentException {
			if (prefix == null) {
				throw notNull("prefix");
			}
		}

		private void validateExpiration() throws ClientIllegalArgumentException {
			if (expirationInDays == null && expirationDate == null && (storageTransitions == null || storageTransitions.size() == 0)) {
				throw notNull("expiration","transition");
				//throw between("expirationInDays",String.valueOf(expirationInDays),String.valueOf(0),String.valueOf(10000));
			}
			if (expirationInDays !=null && expirationDate != null) {
				throw new ClientIllegalArgumentException("conflict expirationInDays date and expirationDate");
			}

			if(expirationInDays !=null){
				if(expirationInDays < 1 || expirationInDays >10000){
					throw between("expirationInDays",String.valueOf(expirationInDays),String.valueOf(1),String.valueOf(10000));
				}
			}
		}
		private void validateStorageTransition() throws ClientIllegalArgumentException {
			if (storageTransitions != null) {
				for(Transition transition : storageTransitions){
					transition.validate();
				}
			}
		}

		private void validateStatus() throws ClientIllegalArgumentException {
			if (status == null) {
				throw notNull("status");
			}
		}
	}

	public static class Transition{

		private Integer transDays;
		private Date transDate;
		private StorageClass storageClass;

		public Transition() {

		}

		public Transition(Integer transDays, StorageClass storageClass) {
			this.transDays = transDays;
			this.storageClass = storageClass;
		}

		public Transition(Date transDate, StorageClass storageClass) {
			this.transDate = transDate;
			this.storageClass = storageClass;
		}

		public Integer getTransDays() {
			return transDays;
		}

		public void setTransDays(Integer transDays) {
			this.transDays = transDays;
		}

		public Date getTransDate() {
			return transDate;
		}

		public void setTransDate(Date transDate) {
			this.transDate = transDate;
		}

		public StorageClass getStorageClass() {
			return storageClass;
		}

		public void setStorageClass(StorageClass storageClass) {
			this.storageClass = storageClass;
		}

		@Override
		public String toString() {
			return "Transition [transDays=" + transDays + ", transDate=" + transDate + ", storageClass=" + storageClass
					+ "]";
		}

		public void validate() throws ClientIllegalArgumentException {

			if(storageClass == null){
				throw new ClientIllegalArgumentException("missing transition storageClass");
			}


			if (transDays == null && transDate == null) {
				throw new ClientIllegalArgumentException("missing transition transDate and days");
			}

			if (transDays != null && transDate != null) {
				throw new ClientIllegalArgumentException("conflict transition transDate and days");
			}


			if (transDays != null) {
				if (transDays <= 0) {
					throw new ClientIllegalArgumentException("transDays must be positive");
				}

				if (transDays > 10000) {
					throw new ClientIllegalArgumentException("transDays cannot be greater than 10000");
				}
			}
		}
	}

    public static class NoncurrentVersionTransition implements Serializable {

        private int days = -1;

        private StorageClass storageClass;

        public void setDays(int expirationInDays) {
            this.days = expirationInDays;
        }

        public int getDays() {
            return days;
        }

		public StorageClass getStorageClass() {
			return storageClass;
		}

		public void setStorageClass(StorageClass storageClass) {
			this.storageClass = storageClass;
		}

		@Override
		public String toString() {
			return "NoncurrentVersionTransition [days=" + days + ", storageClass=" + storageClass + "]";
		}
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy