Android Open Source - PrepayCredit Basic Usage Items Grouped






From Project

Back to project page PrepayCredit.

License

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.

Java Source Code

/*
 * 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;
    }
}




Java Source Code List

damo.three.ie.PrepayCreditApplication.java
damo.three.ie.activity.AboutActivity.java
damo.three.ie.activity.InternetExpirationActivity.java
damo.three.ie.activity.LoginActivity.java
damo.three.ie.activity.PrepayCreditActivity.java
damo.three.ie.activity.SettingsActivity.java
damo.three.ie.fragment.AboutFragment.java
damo.three.ie.fragment.ChangeLogFragment.java
damo.three.ie.fragment.SettingsFragment.java
damo.three.ie.fragment.UpdateFragment.java
damo.three.ie.net.EasySSLSocketFactory.java
damo.three.ie.net.EasyX509TrustManager.java
damo.three.ie.net.ProcessRequest.java
damo.three.ie.net.ThreeHttpClient.java
damo.three.ie.net.ThreeHttpParameters.java
damo.three.ie.prepay.ConnectivityReceiver.java
damo.three.ie.prepay.Constants.java
damo.three.ie.prepay.InternetAddonAlarmManagerReceiver.java
damo.three.ie.prepay.InternetAddonExpireReceiver.java
damo.three.ie.prepay.UpdateAlarmManagerReceiver.java
damo.three.ie.prepay.UpdateAsyncTask.java
damo.three.ie.prepay.UpdateReceiver.java
damo.three.ie.prepay.UpdateService.java
damo.three.ie.prepay.UsageFetcher.java
damo.three.ie.prepayusage.BasicUsageItemExpireSorter.java
damo.three.ie.prepayusage.BasicUsageItemTypeSorter.java
damo.three.ie.prepayusage.BasicUsageItem.java
damo.three.ie.prepayusage.BasicUsageItemsGrouped.java
damo.three.ie.prepayusage.ExpireGroupType.java
damo.three.ie.prepayusage.InternetUsageRegistry.java
damo.three.ie.prepayusage.ItemFactory.java
damo.three.ie.prepayusage.UsageItem.java
damo.three.ie.prepayusage.items.Data.java
damo.three.ie.prepayusage.items.FreeCash.java
damo.three.ie.prepayusage.items.InternetAddon.java
damo.three.ie.prepayusage.items.OutOfBundle.java
damo.three.ie.prepayusage.items.SkypeCalls.java
damo.three.ie.prepayusage.items.Texts.java
damo.three.ie.prepayusage.items.Three2ThreeCalls.java
damo.three.ie.prepayusage.items.TopUp.java
damo.three.ie.prepayusage.items.WeekendVoiceMinutes.java
damo.three.ie.ui.BasicUsageLayout.java
damo.three.ie.ui.ExtendedScrollView.java
damo.three.ie.ui.OutOfBundleLayout.java
damo.three.ie.ui.SlidingTabLayout.java
damo.three.ie.ui.SlidingTabStrip.java
damo.three.ie.ui.ViewPagerAdapter.java
damo.three.ie.util.AccountException.java
damo.three.ie.util.CustomTagHandler.java
damo.three.ie.util.DateUtils.java
damo.three.ie.util.FileUtils.java
damo.three.ie.util.HtmlUtilities.java
damo.three.ie.util.JSONUtils.java
damo.three.ie.util.NumberUtils.java
damo.three.ie.util.PrepayException.java
damo.three.ie.util.UsageUtils.java