diff --git a/plugins/database/quota/src/org/apache/cloudstack/api/response/QuotaResponseBuilderImpl.java b/plugins/database/quota/src/org/apache/cloudstack/api/response/QuotaResponseBuilderImpl.java index 08d84bc1fa9..468a5fccef6 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/api/response/QuotaResponseBuilderImpl.java +++ b/plugins/database/quota/src/org/apache/cloudstack/api/response/QuotaResponseBuilderImpl.java @@ -84,33 +84,6 @@ public class QuotaResponseBuilderImpl implements QuotaResponseBuilder { return response; } - @Override - public QuotaBalanceResponse createQuotaLastBalanceResponse(List quotaBalance, Date startDate) { - if (quotaBalance.size() == 0) { - new InvalidParameterValueException("There are no balance entries on or before the requested date."); - } - Collections.sort(quotaBalance, new Comparator() { - public int compare(QuotaBalanceVO o1, QuotaBalanceVO o2) { - return o2.getUpdatedOn().compareTo(o1.getUpdatedOn()); // desc - } - }); - QuotaBalanceResponse resp = new QuotaBalanceResponse(); - BigDecimal lastCredits = new BigDecimal(0); - for (Iterator it = quotaBalance.iterator(); it.hasNext();) { - QuotaBalanceVO entry = it.next(); - s_logger.info("Date=" + entry.getUpdatedOn().toGMTString() + " balance=" + entry.getCreditBalance() + " credit=" + entry.getCreditsId()); - if (lastCredits.compareTo(new BigDecimal(0)) == 0) { - resp.setStartQuota(entry.getCreditBalance()); - resp.setStartDate(startDate); - } - lastCredits = lastCredits.add(entry.getCreditBalance()); - resp.addCredits(entry); - } - resp.setEndQuota(lastCredits); - resp.setEndDate(_quotaService.computeAdjustedTime(new Date())); - resp.setObjectName("balance"); - return resp; - } @Override public QuotaBalanceResponse createQuotaBalanceResponse(List quotaBalance, Date startDate, Date endDate) { @@ -344,6 +317,35 @@ public class QuotaResponseBuilderImpl implements QuotaResponseBuilder { } return false; } + + + @Override + public QuotaBalanceResponse createQuotaLastBalanceResponse(List quotaBalance, Date startDate) { + if (quotaBalance.size() == 0) { + new InvalidParameterValueException("There are no balance entries on or before the requested date."); + } + Collections.sort(quotaBalance, new Comparator() { + public int compare(QuotaBalanceVO o1, QuotaBalanceVO o2) { + return o2.getUpdatedOn().compareTo(o1.getUpdatedOn()); // desc + } + }); + QuotaBalanceResponse resp = new QuotaBalanceResponse(); + BigDecimal lastCredits = new BigDecimal(0); + for (Iterator it = quotaBalance.iterator(); it.hasNext();) { + QuotaBalanceVO entry = it.next(); + s_logger.info("Date=" + entry.getUpdatedOn().toGMTString() + " balance=" + entry.getCreditBalance() + " credit=" + entry.getCreditsId()); + if (lastCredits.compareTo(new BigDecimal(0)) == 0) { + resp.setStartQuota(entry.getCreditBalance()); + resp.setStartDate(startDate); + } + lastCredits = lastCredits.add(entry.getCreditBalance()); + resp.addCredits(entry); + } + resp.setEndQuota(lastCredits); + resp.setEndDate(_quotaService.computeAdjustedTime(new Date())); + resp.setObjectName("balance"); + return resp; + } @Override public List getQuotaUsage(QuotaStatementCmd cmd) { diff --git a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDao.java b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDao.java index be7ea0fdd08..040f498c5ac 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDao.java +++ b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDao.java @@ -16,6 +16,7 @@ //under the License. package org.apache.cloudstack.quota.dao; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -37,4 +38,6 @@ public interface QuotaBalanceDao extends GenericDao { List findQuotaBalance(Long accountId, Long domainId, Date startDate); + BigDecimal createQuotaLastBalanceResponse(Long accountId, Long domainId, Date startDate); + } diff --git a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDaoImpl.java b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDaoImpl.java index b7d7fec014a..bcbdac054ee 100644 --- a/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDaoImpl.java +++ b/plugins/database/quota/src/org/apache/cloudstack/quota/dao/QuotaBalanceDaoImpl.java @@ -16,7 +16,10 @@ //under the License. package org.apache.cloudstack.quota.dao; +import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.Date; import java.util.Iterator; import java.util.List; @@ -24,9 +27,11 @@ import java.util.List; import javax.ejb.Local; import org.springframework.stereotype.Component; +import org.apache.cloudstack.api.response.QuotaBalanceResponse; import org.apache.cloudstack.quota.vo.QuotaBalanceVO; import org.apache.log4j.Logger; +import com.cloud.exception.InvalidParameterValueException; import com.cloud.utils.db.Filter; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchCriteria; @@ -177,5 +182,21 @@ public class QuotaBalanceDaoImpl extends GenericDaoBase im TransactionLegacy.open(opendb).close(); return trimmedRecords; } + + + @Override + public BigDecimal createQuotaLastBalanceResponse(final Long accountId, final Long domainId, Date startDate) { + List quotaBalance = findQuotaBalance(accountId, domainId, startDate); + if (quotaBalance.size() == 0) { + new InvalidParameterValueException("There are no balance entries on or before the requested date."); + } + BigDecimal finalBalance = new BigDecimal(0); + for (Iterator it = quotaBalance.iterator(); it.hasNext();) { + QuotaBalanceVO entry = it.next(); + s_logger.info("Date=" + entry.getUpdatedOn().toGMTString() + " balance=" + entry.getCreditBalance() + " credit=" + entry.getCreditsId()); + finalBalance.add(entry.getCreditBalance()); + } + return finalBalance; + } }