package jhaushalt.domain; import java.util.ArrayList; import java.util.List; import jhaushalt.domain.buchung.Buchung; import jhaushalt.domain.buchung.StandardBuchung; import jhaushalt.domain.buchung.Umbuchung; import jhaushalt.domain.kategorie.EinzelKategorie; import jhaushalt.domain.kategorie.UmbuchungKategorie; /** * Die Datenbasis beinhaltet alle Buchungen und dient zum * Zugriff auf alle Daten. Sie verwaltet die Register und * Kategorien. In der Datenbasis sind auch die gemerkten * Buchungen gespeichert. * * @author Dr. Lars H. Hahn * @version 2.5.3/2008.03.31 */ public class Datenbasis { public static final String VERSION_DATENBASIS = "2.1.2"; // private static final String[] LEGACY_INTERVALL_NAMEN = {"Woche", "Monat", "Quartal", "Halbjahr", "Jahr"}; private static int cacheHit = 0; private static int cacheMiss = 0; private boolean geaendert = false; // -- Kategorien -------------------------------------------- private final ArrayList<EinzelKategorie> kategorieListe; // -- Register ---------------------------------------------- private List<Register> registerListe; // -- Suchen und Ersetzen ----------------------------------- // private int registerSuchIdx = 0; // private int buchungSuchIdx = 0; // // private Zeitraum zeitraumImCache; // private String registerImCache; // private boolean cacheAktuell = false; // private boolean cacheMitUnterkategorien = true; // -- gemerkte Buchungen ------------------------------------ // private Datum startDatumGemerkteBuchungen = new Datum(); // private final List<Buchung> gemerkteBuchungen = new ArrayList<Buchung>(); // private final List<String> gemerkteBuchungenText = new ArrayList<String>(); // -- Auto-Buchung ------------------------------------------ private List<Buchung> autoStandardBuchungen = new ArrayList<Buchung>(); private final List<Register> autoStandardBuchungRegister = new ArrayList<Register>(); // private final List<Integer> autoStandardBuchungIntervalle = new ArrayList<Integer>(); private final List<Umbuchung> autoUmbuchungen = new ArrayList<Umbuchung>(); private final List<UmbuchungKategorie> autoUmbuchungRegister = new ArrayList<UmbuchungKategorie>(); // private final List<Integer> autoUmbuchungIntervalle = new ArrayList<Integer>(); private String filename; private String versionInfo; public Datenbasis() { this.kategorieListe = new ArrayList<EinzelKategorie>(); this.kategorieListe.add(EinzelKategorie.SONSTIGES); } public static boolean givenVersionEqualsDatabaseVersion(String version) { return version.equals("jHaushalt" + VERSION_DATENBASIS); } /** * Ist <code>true</code>, wenn Daten geändert wurden. * * @return geändert oder nicht geändert */ public boolean isGeaendert() { return this.geaendert; } /** * Wird aufgerufen, wenn die Daten geaendert wurden */ public void setGeaendert() { this.geaendert = true; } public static int getCacheHit() { return cacheHit; } public static void setCacheHit(final int hit) { cacheHit = hit; } public static int getCacheMiss() { return cacheMiss; } public static void setCacheMiss(final int miss) { cacheMiss = miss; } // private Integer getLegacyIntervallIndex(final String name) { // for (int i = 0; i < LEGACY_INTERVALL_NAMEN.length; i++) { // if (name.equals(LEGACY_INTERVALL_NAMEN[i])) { // return new Integer(i); // } // } // return new Integer(0); // } /** * Liefert die Anzahl der vorhandenen wiederkehrenden Standard-Buchungen. * * @return Anzahl */ public int getAnzahlAutoStandardBuchungen() { return this.autoStandardBuchungen.size(); } /** * Liefert die Anzahl der vorhandenen wiederkehrenden Umbuchungen. * * @return Anzahl */ public int getAnzahlAutoUmbuchungen() { return this.autoUmbuchungen.size(); } /** * Liefert eine wiederkehrende Standard-Buchung. * * @param index * Nummer der Buchung * @return Buchung */ public StandardBuchung getAutoStandardBuchung(final int index) { // FIXME und was jetzt??? das können auch andere Buchungstypen sein return (StandardBuchung) this.autoStandardBuchungen.get(index); } /** * Liefert eine wiederkehrende Umuchung. * * @param index * Nummer der Buchung * @return Buchung */ public Umbuchung getAutoUmbuchung(final int index) { return this.autoUmbuchungen.get(index); } /** * Liefert das Register zu einer wiederkehrenden Standard-Buchung. * * @param index * Nummer der Buchung * @return Name des Registers */ public String getAutoStandardBuchungRegister(final int index) { return "" + this.autoStandardBuchungRegister.get(index); } /** * Liefert die Register zu einer wiederkehrenden Umbuchung. * * @param index * Nummer der Buchung * @return Register-Paar */ public UmbuchungKategorie getAutoUmbuchungRegister(final int index) { return this.autoUmbuchungRegister.get(index); } public void setFileName(String absolutePathAndFileName) { this.filename = absolutePathAndFileName; } public String getFilename() { return filename; } /** * Verschiebt ein Register innerhalb der Register-Liste. * * @param register * Register * @param indexNeu * Neuer Index des Registers */ private void aendereRegisterIndex(final Register register, final int indexNeu) { this.registerListe.remove(register); this.registerListe.add(indexNeu, register); } /** * Verschiebt ein Register innerhalb der Register-Liste. * * @param regname * Name des Registers * @param indexNeu * Neuer Index des Registers */ public void aendereRegisterIndex(final String regname, final int indexNeu) { Register register = null; for (int i = 0; i < this.registerListe.size(); i++) { if (regname.equals("" + this.registerListe.get(i))) { register = this.registerListe.get(i); } } if (register != null) { aendereRegisterIndex(register, indexNeu); } } /// VERSION INFO public void setVersionInfo(String versionInfo) { this.versionInfo = versionInfo; } public String getVersionInfo() { return this.versionInfo; } /// REGISTER LIST public List<Register> getRegisterList() { return this.registerListe; } public void setRegisterList(List<Register> registerList) { this.registerListe = registerList; } public void setAutomatedEntries(List<Buchung> automatedEntries) { this.autoStandardBuchungen = automatedEntries; } }