package budgetforce.control.statistics; import java.util.Iterator; import java.util.ArrayList; import budgetforce.model.DatabaseManager; import budgetforce.model.statistics.StatisticOutgoingCategory; import budgetforce.model.Outgoing; import budgetforce.model.Category; /** * * @author David */ public class StatisticOutgoingCategoryController { public StatisticOutgoingCategoryController() { } public static StatisticOutgoingCategory getStatistic(Integer _CategoryId, Integer _PersonId) { StatisticOutgoingCategory Statistic = new StatisticOutgoingCategory(); //--------------------------------------------------- // set PersonId Statistic.setUserId(_PersonId); //--------------------------------------------------- //--------------------------------------------------- // get Category Statistic.setCategory(DatabaseManager.getDatabaseManager().getCategoryByIDAndPersonID(_CategoryId.intValue(), _PersonId.intValue())); //--------------------------------------------------- //--------------------------------------------------- // get Outgoings Statistic.setOutgoings(DatabaseManager.getDatabaseManager().getOutgoingByCategoryID(_CategoryId)); //--------------------------------------------------- float Sum = Statistic.getSum(); Statistic.setStartDate(Statistic.getOutgoings().get(0).getStart()); Statistic.setEndDate(Statistic.getOutgoings().get(0).getEnd()); for (Outgoing current: Statistic.getOutgoings()) { //--------------------------------------------------- // calculate sum for statistics Sum += current.getAmount(); Statistic.setSum(Sum); //--------------------------------------------------- //--------------------------------------------------- // calculate start date if(current.getStart().compareTo(Statistic.getStartDate()) < 0) { Statistic.setStartDate(current.getStart()); } //--------------------------------------------------- //--------------------------------------------------- // calculate end date if(current.getEnd().compareTo(Statistic.getEndDate()) > 0) { Statistic.setEndDate(current.getEnd()); } //--------------------------------------------------- } //--------------------------------------------------- // calculate overall percentage of category Statistic.setOverallPercentage(calculateOverallPercentage(Statistic.getSum(), _PersonId)); //--------------------------------------------------- return Statistic; } //--------------------------------------------------- // calculate overall percentage of category //--------------------------------------------------- static private float calculateOverallPercentage(float _CategorySum, Integer _PersonId) { float Sum = 0.0f; ArrayList<Outgoing> Outgoings = DatabaseManager.getDatabaseManager().getOutgoingByPersonID(_PersonId); for (Outgoing CurrentOutgoing : Outgoings) { Sum += CurrentOutgoing.getAmount(); } return 100.0f / Sum * _CategorySum; } }