Class BudgetItemList

java.lang.Object
com.infinitekind.moneydance.model.BudgetItemList
All Implemented Interfaces:
java.lang.Iterable<BudgetItem>

public class BudgetItemList
extends java.lang.Object
implements java.lang.Iterable<BudgetItem>
this contains a list of budget items associated with a budget and is used to perform calculations and interactions with the items of the list without having to query the main data model for every budget-specific interaction. This can also be used to create an editable copy of a budget so that changes can be aborted or committed rather than synced individually.
  • Constructor Details

  • Method Details

    • reload

      public void reload()
      Reload by rescanning the data model for budget items. If this is an editable list then this resets the list to make it no longer able to be reverted.
    • makeEditingCopy

      public BudgetItemList makeEditingCopy()
    • makeEditableList

      public static BudgetItemList makeEditableList​(Budget budget)
    • saveEdits

      public void saveEdits()
    • getBudget

      public Budget getBudget()
    • sortItems

      public void sortItems()
    • getItemCount

      public int getItemCount()
      Get the number of items in this budget
    • getItem

      public BudgetItem getItem​(int i)
      Get the budget item at the given position in the list
    • toArray

      public BudgetItem[] toArray()
      Get a new array of the budget items contained in this list
    • removeItem

      public boolean removeItem​(BudgetItem item)
      Remove the given budget item from the list. Returns true if the item was in the list.
    • indexOf

      public int indexOf​(BudgetItem item)
      Return the position in the item list of the given item
    • iterator

      public java.util.Iterator<BudgetItem> iterator()
      Specified by:
      iterator in interface java.lang.Iterable<BudgetItem>
    • getBudgetItemForCategory

      public BudgetItem getBudgetItemForCategory​(Account account, BudgetPeriod budgetPeriod)
      Get the budget items for the given account in the given budget period.
      Parameters:
      account -
      budgetPeriod -
      Returns:
    • getBudgetItemsForAccountAndInterval

      public java.util.List<BudgetItem> getBudgetItemsForAccountAndInterval​(Account account, int interval)
      Parameters:
      account -
      interval -
      Returns:
    • getBudgetItemsForAccountInRange

      public java.util.ArrayList<BudgetItem> getBudgetItemsForAccountInRange​(Account account, DateRange dateRange, java.util.ArrayList<BudgetItem> budgetItems)
      Get the budget items with the given transfer account whose date interval overlap with the given date range.
      Parameters:
      account - the account (category) for items
      dateRange - the date range to search for matching items
      budgetItems - an empty ArrayList to which the matching items should be added. or null.
      Returns:
      a list of items matching the given account/category and date range. Will be the same as the given budgetItems, if non-null;
    • getBudgetedAmount

      public long getBudgetedAmount​(Account account, BudgetPeriod budgetPeriod)
      Return the budgeted amount for a specific category in a month. Because of a bug in the Calendar class, date is not reset to the first day of the month so it must be passed in already set correctly.
      Parameters:
      account - the account (category) for items
      budgetPeriod - the budget period
      Returns:
    • getActualAmount

      public long getActualAmount​(Account account, BudgetPeriod budgetPeriod)
      Return the actual amount for a specific category in a month. Because of a bug in the Calendar class, date is not reset to the first day of the month so it must be passed in already set correctly. FIXME Note that this method is not strictly related to the budget, it's here for convenience but should belong to the Account class rather than the Budget one.
      Parameters:
      account -
      budgetPeriod -
      Returns:
    • getActualAmountForAllCategoriesInPeriod

      public long getActualAmountForAllCategoriesInPeriod​(BudgetPeriod budgetPeriod, CurrencyType resultCurrency, Account.AccountType accountType)
      Returns the actual amount for all categories in the given period.
      Parameters:
      budgetPeriod - the budget period to gather amounts for
    • getBudgetedAmountForAllCategoriesInPeriod

      public long getBudgetedAmountForAllCategoriesInPeriod​(BudgetPeriod budgetPeriod, Account.AccountType accountType)
      Returns the budgeted amount for all categories in the given period
      Parameters:
      budgetPeriod -
    • setBudgetedAmount

      public void setBudgetedAmount​(Account account, long amount, BudgetPeriod budgetPeriod)
      Sets the budgeted amount for a given Account in a given BudgetPeriod.
      Parameters:
      account -
      amount -
      budgetPeriod -
    • createItem

      public BudgetItem createItem()