|
16 | 16 | //under the License. |
17 | 17 | package org.apache.cloudstack.api.response; |
18 | 18 |
|
19 | | -import com.cloud.domain.DomainVO; |
20 | | -import com.cloud.domain.dao.DomainDao; |
21 | | -import com.cloud.exception.InvalidParameterValueException; |
22 | | -import com.cloud.user.Account; |
23 | | -import com.cloud.user.AccountManager; |
24 | | -import com.cloud.user.AccountVO; |
25 | | -import com.cloud.user.User; |
26 | | -import com.cloud.user.dao.AccountDao; |
27 | | -import com.cloud.user.dao.UserDao; |
| 19 | +import java.math.BigDecimal; |
| 20 | +import java.math.RoundingMode; |
| 21 | +import java.time.LocalDate; |
| 22 | +import java.time.ZoneId; |
| 23 | +import java.util.ArrayList; |
| 24 | +import java.util.Calendar; |
| 25 | +import java.util.Collection; |
| 26 | +import java.util.Collections; |
| 27 | +import java.util.Comparator; |
| 28 | +import java.util.Date; |
| 29 | +import java.util.HashMap; |
| 30 | +import java.util.Iterator; |
| 31 | +import java.util.List; |
| 32 | +import java.util.ListIterator; |
| 33 | + |
| 34 | +import javax.inject.Inject; |
28 | 35 |
|
29 | 36 | import org.apache.cloudstack.api.command.QuotaBalanceCmd; |
30 | 37 | import org.apache.cloudstack.api.command.QuotaEmailTemplateListCmd; |
|
53 | 60 | import org.apache.log4j.Logger; |
54 | 61 | import org.springframework.stereotype.Component; |
55 | 62 |
|
56 | | -import javax.ejb.Local; |
57 | | -import javax.inject.Inject; |
58 | | - |
59 | | -import java.math.BigDecimal; |
60 | | -import java.math.RoundingMode; |
61 | | -import java.util.ArrayList; |
62 | | -import java.util.Calendar; |
63 | | -import java.util.Collection; |
64 | | -import java.util.Collections; |
65 | | -import java.util.Comparator; |
66 | | -import java.util.Date; |
67 | | -import java.util.HashMap; |
68 | | -import java.util.Iterator; |
69 | | -import java.util.List; |
70 | | -import java.util.ListIterator; |
| 63 | +import com.cloud.domain.DomainVO; |
| 64 | +import com.cloud.domain.dao.DomainDao; |
| 65 | +import com.cloud.exception.InvalidParameterValueException; |
| 66 | +import com.cloud.user.Account; |
| 67 | +import com.cloud.user.AccountManager; |
| 68 | +import com.cloud.user.AccountVO; |
| 69 | +import com.cloud.user.User; |
| 70 | +import com.cloud.user.dao.AccountDao; |
| 71 | +import com.cloud.user.dao.UserDao; |
71 | 72 |
|
72 | 73 | @Component |
73 | | -@Local(value = QuotaResponseBuilderImpl.class) |
74 | 74 | public class QuotaResponseBuilderImpl implements QuotaResponseBuilder { |
75 | 75 | private static final Logger s_logger = Logger.getLogger(QuotaResponseBuilderImpl.class); |
76 | 76 |
|
@@ -141,7 +141,9 @@ public List<QuotaSummaryResponse> createQuotaSummaryResponse(Boolean listAll) { |
141 | 141 | } else { |
142 | 142 | for (final QuotaAccountVO quotaAccount : _quotaAccountDao.listAllQuotaAccount()) { |
143 | 143 | AccountVO account = _accountDao.findById(quotaAccount.getId()); |
144 | | - if (account == null) continue; |
| 144 | + if (account == null) { |
| 145 | + continue; |
| 146 | + } |
145 | 147 | QuotaSummaryResponse qr = getQuotaSummaryResponse(account); |
146 | 148 | result.add(qr); |
147 | 149 | } |
@@ -181,6 +183,7 @@ public QuotaBalanceResponse createQuotaBalanceResponse(List<QuotaBalanceVO> quot |
181 | 183 | throw new InvalidParameterValueException("The request period does not contain balance entries."); |
182 | 184 | } |
183 | 185 | Collections.sort(quotaBalance, new Comparator<QuotaBalanceVO>() { |
| 186 | + @Override |
184 | 187 | public int compare(QuotaBalanceVO o1, QuotaBalanceVO o2) { |
185 | 188 | o1 = o1 == null ? new QuotaBalanceVO() : o1; |
186 | 189 | o2 = o2 == null ? new QuotaBalanceVO() : o2; |
@@ -287,13 +290,15 @@ public QuotaStatementResponse createQuotaStatementResponse(final List<QuotaUsage |
287 | 290 | if (s_logger.isDebugEnabled()) { |
288 | 291 | s_logger.debug( |
289 | 292 | "createQuotaStatementResponse Type=" + quotaUsage.get(0).getUsageType() + " usage=" + quotaUsage.get(0).getQuotaUsed().setScale(2, RoundingMode.HALF_EVEN) |
290 | | - + " rec.id=" + quotaUsage.get(0).getUsageItemId() + " SD=" + quotaUsage.get(0).getStartDate() + " ED=" + quotaUsage.get(0).getEndDate()); |
| 293 | + + " rec.id=" + quotaUsage.get(0).getUsageItemId() + " SD=" + quotaUsage.get(0).getStartDate() + " ED=" + quotaUsage.get(0).getEndDate()); |
291 | 294 | } |
292 | 295 |
|
293 | 296 | Collections.sort(quotaUsage, new Comparator<QuotaUsageVO>() { |
| 297 | + @Override |
294 | 298 | public int compare(QuotaUsageVO o1, QuotaUsageVO o2) { |
295 | | - if (o1.getUsageType() == o2.getUsageType()) |
| 299 | + if (o1.getUsageType() == o2.getUsageType()) { |
296 | 300 | return 0; |
| 301 | + } |
297 | 302 | return o1.getUsageType() < o2.getUsageType() ? -1 : 1; |
298 | 303 | } |
299 | 304 | }); |
@@ -508,29 +513,21 @@ public List<QuotaUsageVO> getQuotaUsage(QuotaStatementCmd cmd) { |
508 | 513 | public List<QuotaBalanceVO> getQuotaBalance(QuotaBalanceCmd cmd) { |
509 | 514 | return _quotaService.findQuotaBalanceVO(cmd.getAccountId(), cmd.getAccountName(), cmd.getDomainId(), cmd.getStartDate(), cmd.getEndDate()); |
510 | 515 | } |
511 | | - |
512 | 516 | @Override |
513 | | - public Date startOfNextDay(Date dt) { |
514 | | - Calendar c = Calendar.getInstance(); |
515 | | - c.setTime(dt); |
516 | | - c.add(Calendar.DATE, 1); |
517 | | - c.set(Calendar.HOUR, 0); |
518 | | - c.set(Calendar.MINUTE, 0); |
519 | | - c.set(Calendar.SECOND, 0); |
520 | | - c.set(Calendar.MILLISECOND, 0); |
521 | | - return c.getTime(); |
| 517 | + public Date startOfNextDay(Date date) { |
| 518 | + LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); |
| 519 | + return createDateAtTheStartOfNextDay(localDate); |
522 | 520 | } |
523 | 521 |
|
524 | 522 | @Override |
525 | 523 | public Date startOfNextDay() { |
526 | | - Calendar c = Calendar.getInstance(); |
527 | | - c.setTime(new Date()); |
528 | | - c.add(Calendar.DATE, 1); |
529 | | - c.set(Calendar.HOUR, 0); |
530 | | - c.set(Calendar.MINUTE, 0); |
531 | | - c.set(Calendar.SECOND, 0); |
532 | | - c.set(Calendar.MILLISECOND, 0); |
533 | | - return c.getTime(); |
| 524 | + LocalDate localDate = LocalDate.now(); |
| 525 | + return createDateAtTheStartOfNextDay(localDate); |
| 526 | + } |
| 527 | + |
| 528 | + private Date createDateAtTheStartOfNextDay(LocalDate localDate) { |
| 529 | + LocalDate nextDayLocalDate = localDate.plusDays(1); |
| 530 | + return Date.from(nextDayLocalDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()); |
534 | 531 | } |
535 | 532 |
|
536 | 533 | } |
0 commit comments