Package de.willuhn.jameica.hbci

Source Code of de.willuhn.jameica.hbci.SynchronizeOptions

/**********************************************************************
* $Source: /cvsroot/hibiscus/hibiscus/src/de/willuhn/jameica/hbci/SynchronizeOptions.java,v $
* $Revision: 1.10 $
* $Date: 2010/09/02 12:25:13 $
* $Author: willuhn $
* $Locker:  $
* $State: Exp $
*
* Copyright (c) by willuhn.webdesign
* All rights reserved
*
**********************************************************************/

package de.willuhn.jameica.hbci;

import java.io.Serializable;
import java.rmi.RemoteException;
import java.util.LinkedList;
import java.util.List;

import de.willuhn.datasource.rmi.DBIterator;
import de.willuhn.jameica.hbci.rmi.Konto;
import de.willuhn.jameica.system.Application;
import de.willuhn.jameica.system.Settings;
import de.willuhn.logging.Logger;

/**
* Container fuer die Synchronisierungsoptionen eines Kontos.
*/
public class SynchronizeOptions implements Serializable
{
  private String id = null;
  private boolean offline  = false;
  private boolean disabled = false;
  private final static Settings settings = Application.getPluginLoader().getPlugin(HBCI.class).getResources().getSettings();

  /**
   * Liefert die Liste der zu synchronisierenden Konten.
   * @return Liste der zu synchronisierenden Konten.
   */
  public static List<Konto> getSynchronizeKonten()
  {
    List<Konto> l = new LinkedList<Konto>();
   
    try
    {
      DBIterator konten = de.willuhn.jameica.hbci.Settings.getDBService().createList(Konto.class);
      // Konten-Sortierung immer gleich. Wir verwenden diese Sortierung, damit Konten,
      // die potentiell ueber das gleiche Sicherheitsmedium abgewickelt werden, direkt
      // aufeinander folgen. Das ermoeglicht eine spaetere Gruppierung in einem HBCI-Dialog
      // Anschliessend noch Bezeichnung wegen BUGZILLA 1346, Kommentar 12
      konten.setOrder("order by blz,bic,passport_class,bezeichnung");
     
      while (konten.hasNext())
      {
        Konto k = (Konto) konten.next();
        if (k.hasFlag(Konto.FLAG_DISABLED)) // deaktivierte Konten nicht beruecksichtigen
          continue;
        SynchronizeOptions o = new SynchronizeOptions(k);
        if (o.getSynchronize())
          l.add(k);
      }
    }
    catch (RemoteException re)
    {
      Logger.error("unable to load konto list",re);
    }

    return l;
  }

  /**
   * ct.
   * @param k das Konto.
   * @throws RemoteException
   */
  public SynchronizeOptions(Konto k) throws RemoteException
  {
    this.offline  = k.hasFlag(Konto.FLAG_OFFLINE);
    this.disabled = k.hasFlag(Konto.FLAG_DISABLED);
    this.id = k.getID();
  }
 
  /**
   * Prueft, ob irgendeine Synchronisierungsoption fuer das Konto aktiviert ist.
   * @return true, wenn irgendeine Option aktiv ist.
   */
  public boolean getSynchronize()
  {
    return getSyncSaldo() ||
           getSyncKontoauszuege() ||
           getSyncSepaDauerauftraege() ||
           getSyncAuslandsUeberweisungen() ||
           getSyncSepaLastschriften();
  }
 
  /**
   * Aendert den Synchronisierungsstatus aller Auftragstypen.
   * @param status neuer Status.
   */
  public void setAll(boolean status)
  {
    this.setSyncSaldo(status);
    this.setSyncKontoauszuege(status);
    this.setSyncSepaDauerauftraege(status);
    this.setSyncAuslandsUeberweisungen(status);
    this.setSyncSepaLastschriften(status);
  }

  /**
   * BUGZILLA 346
   * Prueft, ob die Kontoauszuege abgerufen werden sollen.
   * @return true, wenn sie synchronisiert werden sollen.
   */
  public boolean getSyncSaldo()
  {
    // Da das vorher mit ".kontoauszug" zusammengefasst
    // war, nehmen wir als Default-Wert auch den von dort.
    // Damit wird beim ersten mal der Vorwert uebernommen.
    // (Sanfte Migration)
    return !this.disabled && settings.getBoolean("sync.konto." + id + ".saldo",true);
  }

  /**
   * Prueft, ob die Kontoauszuege abgerufen werden sollen.
   * @return true, wenn sie synchronisiert werden sollen.
   */
  public boolean getSyncKontoauszuege()
  {
    return !this.disabled && settings.getBoolean("sync.konto." + id + ".kontoauszug",true);
  }
 
  /**
   * Prueft, ob die SEPA-Dauerauftraege synchronisiert werden sollen.
   * @return true, wenn sie synchronisiert werden sollen.
   */
  public boolean getSyncSepaDauerauftraege()
  {
    return !this.disabled && !this.offline && settings.getBoolean("sync.konto." + id + ".sepadauer",false);
  }

  /**
   * Prueft, ob offene und ueberfaellige Auslandsueberweisungen eingereicht werden sollen.
   * @return true, wenn sie synchronisiert werden sollen.
   */
  public boolean getSyncAuslandsUeberweisungen()
  {
    return !this.disabled && !this.offline && settings.getBoolean("sync.konto." + id + ".uebforeign",false);
  }

  /**
   * Prueft, ob offene und ueberfaellige SEPA-Lastschriften eingereicht werden sollen.
   * @return true, wenn sie synchronisiert werden sollen.
   */
  public boolean getSyncSepaLastschriften()
  {
    return !this.disabled && !this.offline && settings.getBoolean("sync.konto." + id + ".sepalast",false);
  }

  /**
   * Prueft, ob in dem Konto automatisch passende Gegenbuchungen angelegt werden sollen,
   * wenn es ein Offline-Konto ist.
   * @return true, wenn automatische Offline-Synchronisierung stattfinden soll.
   */
  public boolean getSyncOffline()
  {
    return !this.disabled && settings.getBoolean("sync.konto." + id + ".offline",true);
  }
 
  /**
   * Aktiviert/deaktiviert die automatische Saldenberechnung fuer Offlinekonten.
   * Wenn dieses Setting fals liefert, wird unter keinen Umstaenden der Saldo
   * automatisch berechnet.
   * @return true, wenn der Saldo des Offline-Kontos automatisch berechnet werden
   * soll, wenn kein Scripting-Backend vorhanden ist.
   */
  public boolean getAutoSaldo()
  {
    return !this.disabled && this.offline && settings.getBoolean("sync.konto." + id + ".autosaldo",true);
  }
 
  /**
   * Aktiviert/deaktiviert die automatische Saldenberechnung fuer Offlinekonten.
   * Wenn dieses Setting fals liefert, wird unter keinen Umstaenden der Saldo
   * automatisch berechnet.
   * @param b true, wenn der Saldo des Offline-Kontos automatisch berechnet werden
   * soll, wenn kein Scripting-Backend vorhanden ist.
   */
  public void setAutoSaldo(boolean b)
  {
    settings.setAttribute("sync.konto." + id + ".autosaldo",b);
  }
 
  /**
   * Legt fest, ob die Kontoauszuege abgerufen werden sollen.
   * @param b true, wenn sie synchronisiert werden sollen.
   */
  public void setSyncKontoauszuege(boolean b)
  {
    settings.setAttribute("sync.konto." + id + ".kontoauszug",b);
  }
 
  /**
   * Legt fest, ob die Salden abgerufen werden sollen.
   * @param b true, wenn sie synchronisiert werden sollen.
   */
  public void setSyncSaldo(boolean b)
  {
    settings.setAttribute("sync.konto." + id + ".saldo",b);
  }

  /**
   * Legt fest, ob die SEPA-Dauerauftraege synchronisiert werden sollen.
   * @param b true, wenn sie synchronisiert werden sollen.
   */
  public void setSyncSepaDauerauftraege(boolean b)
  {
    settings.setAttribute("sync.konto." + id + ".sepadauer",b);
  }
 
  /**
   * Legt fest, ob offene und ueberfaellige Auslandsueberweisungen eingereicht werden sollen.
   * @param b true, wenn sie synchronisiert werden sollen.
   */
  public void setSyncAuslandsUeberweisungen(boolean b)
  {
    settings.setAttribute("sync.konto." + id + ".uebforeign",b);
  }

  /**
   * Legt fest, ob offene und ueberfaellige SEPA-Lastschriften eingereicht werden sollen.
   * @param b true, wenn sie synchronisiert werden sollen.
   */
  public void setSyncSepaLastschriften(boolean b)
  {
    settings.setAttribute("sync.konto." + id + ".sepalast",b);
  }

  /**
   * Legt fest, ob in dem Konto automatisch passende Gegenbuchungen angelegt werden sollen,
   * wenn es ein Offline-Konto ist.
   * @param b true, wenn automatische Offline-Synchronisierung stattfinden soll.
   */
  public void setSyncOffline(boolean b)
  {
    settings.setAttribute("sync.konto." + id + ".offline",b);
  }
}
TOP

Related Classes of de.willuhn.jameica.hbci.SynchronizeOptions

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.