Package de.willuhn.jameica.hbci.util

Source Code of de.willuhn.jameica.hbci.util.SaldoFinder

/**********************************************************************
* $Source: /cvsroot/hibiscus/hibiscus/src/de/willuhn/jameica/hbci/util/SaldoFinder.java,v $
* $Revision: 1.7 $
* $Date: 2012/04/05 21:44:18 $
* $Author: willuhn $
*
* Copyright (c) by willuhn - software & services
* All rights reserved
*
**********************************************************************/

package de.willuhn.jameica.hbci.util;

import java.rmi.RemoteException;
import java.util.Collection;
import java.util.Date;
import java.util.TreeMap;

import de.willuhn.datasource.GenericIterator;
import de.willuhn.jameica.hbci.rmi.Umsatz;
import de.willuhn.jameica.hbci.server.Value;
import de.willuhn.jameica.util.DateUtil;

/**
* Hilfsklasse zum Finden eines Saldos zum angegebenen Zeitpunkt aus
* einer vorgegebenen Liste von Umsaetzen/Salden.
*/
public class SaldoFinder
{
  private TreeMap<Date,Double> map = new TreeMap<Date,Double>();
  private double anfangssaldo = 0.0d;
 
  /**
   * ct.
   * @param umsaetze Liste der Umsaetze, in denen gesucht werden soll.
   * @param anfangssaldo der initiale Saldo, den das Konto vorher hatte.
   * Darf "0.00" sein, wenn er nicht bekannt ist.
   * @throws RemoteException
   */
  public SaldoFinder(GenericIterator umsaetze, double anfangssaldo) throws RemoteException
  {
    this.anfangssaldo = anfangssaldo;
   
    // Wir fuellen die Map
    while (umsaetze.hasNext())
    {
      Umsatz u = (Umsatz) umsaetze.next();
      // Vormerkbuchungen werden nicht beruecksichtigt, weil sie keinen Saldo haben
      if ((u.getFlags() & Umsatz.FLAG_NOTBOOKED) == Umsatz.FLAG_NOTBOOKED)
        continue;
      this.map.put(u.getDatum(),u.getSaldo());
    }
  }
 
  /**
   * ct.
   * @param values Liste der Salden, in denen gesucht werden soll.
   * @param anfangssaldo der initiale Saldo, den das Konto vorher hatte.
   * Darf "0.00" sein, wenn er nicht bekannt ist.
   * @throws RemoteException
   */
  public SaldoFinder(Collection<Value> values, double anfangssaldo) throws RemoteException
  {
    this.anfangssaldo = anfangssaldo;
   
    for (Value v:values)
    {
      this.map.put(v.getDate(),v.getValue());
    }
  }

  /**
   * Liefert den Saldo zum angegebenen Zeitpunkt.
   * @param date das Datum.
   * @return der Saldo zu diesem Zeitpunkt.
   */
  public Double get(Date date)
  {
    if (date == null)
      return anfangssaldo;
    Date key = DateUtil.startOfDay(date);
   
    // Checken, ob wir fuer genau diesen Tag einen Saldo haben
    Double d = this.map.get(key);
    if (d != null)
      return d;
   
    // Haben wir einen Saldo zu einem frueheren Zeitpunkt?
    Date lower = this.map.lowerKey(date); // JAVA 1.6
    if (lower != null)
      return this.map.get(lower);
   
    // Ne, wir haben auch keinen frueheren Saldo. Also war
    // er zu diesem Zeitpunkt noch 0 bzw der Anfangssaldo.
    return anfangssaldo;
  }
}



/**********************************************************************
* $Log: SaldoFinder.java,v $
* Revision 1.7  2012/04/05 21:44:18  willuhn
* @B BUGZILLA 1219
*
* Revision 1.6  2011/10/27 17:09:29  willuhn
* @C Saldo-Bean in neue separate (und generischere) Klasse "Value" ausgelagert.
* @N Saldo-Finder erweitert, damit der jetzt auch mit Value-Objekten arbeiten kann
*
* Revision 1.5  2011-05-02 14:43:41  willuhn
* @B BUGZILLA 1036
*
* Revision 1.4  2011-01-20 17:13:21  willuhn
* @C HBCIProperties#startOfDay und HBCIProperties#endOfDay nach Jameica in DateUtil verschoben
*
* Revision 1.3  2010-09-01 15:33:54  willuhn
* @B Vormerkbuchungen in Saldo-Verlauf ignorieren, weil sie keinen Saldo haben
*
* Revision 1.2  2010-08-13 10:49:33  willuhn
* *** empty log message ***
*
* Revision 1.1  2010-08-12 17:12:32  willuhn
* @N Saldo-Chart komplett ueberarbeitet (Daten wurden vorher mehrmals geladen, Summen-Funktion, Anzeige mehrerer Konten, Durchschnitt ueber mehrere Konten, Bugfixing, echte "Homogenisierung" der Salden via SaldoFinder)
*
**********************************************************************/
TOP

Related Classes of de.willuhn.jameica.hbci.util.SaldoFinder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.