package org.zstack.header.identity; import org.zstack.header.message.APIMessage; import org.zstack.header.message.Message; import org.zstack.header.message.NeedQuotaCheckMessage; import java.util.*; /** * Created by frank on 7/13/2015. */ public class Quota { public interface QuotaOperator { void checkQuota(APIMessage msg, Map<String, QuotaPair> pairs); void checkQuota(NeedQuotaCheckMessage msg, Map<String, QuotaPair> pairs); List<QuotaUsage> getQuotaUsageByAccount(String accountUuid); } public interface QuotaValidator { void checkQuota(APIMessage msg, Map<String, QuotaPair> pairs); Set<String> reportQuotaName(); List<Class<? extends Message>> getMessagesNeedValidation(); } public static class QuotaUsage { private String name; private Long total; private Long used; public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getTotal() { return total; } public void setTotal(Long total) { this.total = total; } public Long getUsed() { return used; } public void setUsed(Long used) { this.used = used; } } public static class QuotaPair { private String name; private long value; public String getName() { return name; } public void setName(String name) { this.name = name; } public long getValue() { return value; } public void setValue(long value) { this.value = value; } } private Set<String> quotaSet; private List<QuotaPair> quotaPairs; private List<Class<? extends Message>> messagesNeedValidation = new ArrayList<>(); private QuotaOperator operator; private Set<QuotaValidator> quotaValidators; public void addPair(QuotaPair p) { if (quotaPairs == null) { quotaPairs = new ArrayList<>(); } quotaPairs.add(p); } public List<QuotaPair> getQuotaPairs() { return quotaPairs; } public void setQuotaPairs(List<QuotaPair> quotaPairs) { this.quotaPairs = quotaPairs; } public void addMessageNeedValidation(Class<? extends Message> msgClass) { messagesNeedValidation.add(msgClass); } public List<Class<? extends Message>> getMessagesNeedValidation() { return messagesNeedValidation; } public QuotaOperator getOperator() { return operator; } public void setOperator(QuotaOperator operator) { this.operator = operator; } public Set<QuotaValidator> getQuotaValidators() { return this.quotaValidators; } public void addQuotaValidators(Set<QuotaValidator> quotaValidators) { if (this.quotaValidators == null) { this.quotaValidators = new HashSet<>(); } for (QuotaValidator q : quotaValidators) { this.quotaValidators.add(q); } } public void addToQuotaSet(String quotaName) { if (this.quotaSet == null) { this.quotaSet = new HashSet<>(); } this.quotaSet.add(quotaName); } public Set<String> getQuotaSet() { if (this.quotaSet == null) { this.quotaSet = new HashSet<>(); } return this.quotaSet; } }