Back to project page PrepayCredit.
The source code is released under:
GNU General Public License
If you think the Android project PrepayCredit listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/* * This file is part of Prepay Credit for Android *//w w w .j av a2 s . com * Copyright 2013 Damien O'Reilly * * Prepay Credit for Android is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Prepay Credit for Android is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Prepay Credit for Android. If not, see <http://www.gnu.org/licenses/>. * * Report bugs or new features at: https://github.com/DamienOReilly/PrepayCredit * Contact the author at: damienreilly@gmail.com */ package damo.three.ie.prepayusage; import damo.three.ie.util.DateUtils; import org.joda.time.DateTime; import org.joda.time.Days; import org.ocpsoft.prettytime.PrettyTime; import java.util.List; /** * Class deals with encapsulating a similar group of usage items and adding meta data. */ public class BasicUsageItemsGrouped implements Comparable<BasicUsageItemsGrouped> { private final List<BasicUsageItem> basicUsageItems; private final DateTime dateTimeNow; private String expireGroup; private ExpireGroupType expireGroupType; private DateTime groupDateTime; /** * Constructor taking in list of basic usage items. * * @param basicUsageItems List of basic usage items. */ public BasicUsageItemsGrouped(List<BasicUsageItem> basicUsageItems) { this.basicUsageItems = basicUsageItems; dateTimeNow = new DateTime(); updateGroupName(); } /** * Add some meta-data to the usage groups. */ private void updateGroupName() { long date = basicUsageItems.get(0).getExpireDate(); if (date == DateUtils.WONT_EXPIRE) { expireGroup = "Won't expire"; expireGroupType = ExpireGroupType.GOOD; groupDateTime = new DateTime(DateUtils.WONT_EXPIRE); } else if (date == DateUtils.QUEUED) { expireGroup = "Queued"; expireGroupType = ExpireGroupType.GOOD; groupDateTime = new DateTime(DateUtils.QUEUED); } else { // Falling down this far.. must be a date so! groupDateTime = new DateTime(date); int daysRemaining = Days.daysBetween(dateTimeNow.withTimeAtStartOfDay(), getAbsoluteExpireyDateTime()) .getDays() - 1; if (daysRemaining > 5) { expireGroupType = ExpireGroupType.GOOD; } else if (daysRemaining >= 3 && daysRemaining <= 5) { expireGroupType = ExpireGroupType.WARNING; } else { expireGroupType = ExpireGroupType.BAD; } expireGroup = "Expires: " + DateUtils.formatDate(date); expireGroup += " (" + new PrettyTime().format(getAbsoluteExpireyDateTime().toDate()) + ")"; } } /** * Get the group expire description. * * @return Expire description. */ public String getExpireGroup() { //TODO: update ExpireGroupType to include the descriptive strings. return expireGroup; } /** * Return usage items in this group. * * @return List of usage items. */ public List<BasicUsageItem> getBasicUsageItems() { return basicUsageItems; } /** * Return group expire type, e.g. expiring on a date or doesn't expire. * * @return Expire type. */ public ExpireGroupType getExpireGroupType() { return expireGroupType; } /** * Compare the UsageItemsGrouped based on date expiring, if any. * * @param that To compare against/ * @return Compare result. */ @Override public int compareTo(BasicUsageItemsGrouped that) { return this.getGroupDateTime().compareTo(that.getGroupDateTime()); } /** * The add-on in fact expires at midnight on the following day. * e.g. an add-on expiring on 23rd August really expires on 24th August at 00:00:00 * day lights savings is took into consideration. 00:00:00 may not exist twice a year in some TZ's. * * @return {@link DateTime} of when the UsageGroup exactly expires */ private DateTime getAbsoluteExpireyDateTime() { return groupDateTime.plusDays(1).withTimeAtStartOfDay(); } /** * Returns whether this UsageGroup is actually no longer relevant based on the current date. * i.e expired! * * @return boolean */ public boolean isNotExpired() { DateTime now = new DateTime().withTimeAtStartOfDay(); return getAbsoluteExpireyDateTime().compareTo(now) > 0; } /** * Get the group's expire time. * * @return Expire time. */ DateTime getGroupDateTime() { return groupDateTime; } }