/* * This file is part of jHaushalt. * jHaushalt is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * jHaushalt is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with jHaushalt; if not, see <http://www.gnu.org/licenses/>. * (C)opyright 2002-2010 Dr. Lars H. Hahn */ package haushalt.auswertung; import haushalt.auswertung.bloecke.AbstractBlock; import haushalt.auswertung.bloecke.LeererBlock; import haushalt.auswertung.bloecke.TabellenBlock; import haushalt.auswertung.bloecke.TextBlock; import haushalt.daten.Datenbasis; import haushalt.daten.EinzelKategorie; import haushalt.daten.Euro; import haushalt.daten.zeitraum.AbstractZeitraum; import haushalt.daten.zeitraum.Jahr; import haushalt.gui.Haushalt; import haushalt.gui.TextResource; import haushalt.gui.generischerdialog.AbstractGDPane; import haushalt.gui.generischerdialog.EinOderAlleRegisterGDP; import haushalt.gui.generischerdialog.MehrereKategorienGDP; import haushalt.gui.generischerdialog.ZeitraumGDP; import java.awt.Font; import java.util.ArrayList; import java.util.logging.Logger; /** * @author Dr. Lars H. Hahn * @version 2.5/2007.06.04 * @since 2.0 */ /* * 2007.06.05 Internationalisierung * 2004.08.22 Erste Version */ public class BAKategorieAusgabe extends AbstractBlockAuswertung { public static final String UEBERSCHRIFT = TextResource.get().getString("table_selected_bookings"); private static final boolean DEBUG = false; private static final Logger LOGGER = Logger.getLogger(BAKategorieAusgabe.class.getName()); private static final long serialVersionUID = 1L; private static final TextResource RES = TextResource.get(); public BAKategorieAusgabe(final Haushalt haushalt, final Datenbasis db, final String name) { super(haushalt, db, name); final AbstractGDPane[] panes = new AbstractGDPane[3]; panes[0] = new ZeitraumGDP(RES.getString("period") + ":", new Jahr(2007)); panes[1] = new EinOderAlleRegisterGDP(RES.getString("register") + ":", db, null); panes[2] = new MehrereKategorienGDP(RES.getString("categories") + ":", db); erzeugeEigenschaften(haushalt.getFrame(), UEBERSCHRIFT, panes); } @Override protected String berechneAuswertung(final Object[] werte) { final AbstractZeitraum zeitraum = (AbstractZeitraum) werte[0]; final String register = (String) werte[1]; final EinzelKategorie[] kategorien = (EinzelKategorie[]) werte[2]; final boolean unterkategorienVerwenden = ((MehrereKategorienGDP) this.getPanes()[2]).getUnterkategorienVerwenden(); final ArrayList<String[]> buchungen = getDb().getBuchungen(zeitraum, register, kategorien, unterkategorienVerwenden); final int anzahl = buchungen.size(); setTabelle(new String[anzahl][4]); final Euro summe = new Euro(); for (int i = 0; i < anzahl; i++) { summe.sum(new Euro(buchungen.get(i)[3])); setTabelleLine(i, buchungen.get(i)); } if (DEBUG) { LOGGER.info("" + anzahl + " Buchungen im Zeitraum " + zeitraum); } // Vorhandene Blöcke löschen und neu berechnete einfügen String titel = RES.getString("selected_bookings") + " (" + zeitraum; if (register == null) { titel += " / " + RES.getString("all_registers") + ")"; } else { titel += " / " + register + ")"; } loescheBloecke(); final AbstractBlock block1 = new TextBlock(titel); block1.setFont(new Font(this.getHaushalt().getFontname(), Font.BOLD, this.getHaushalt().getFontgroesse() + 6)); addDokumentenBlock(block1); addDokumentenBlock(new LeererBlock(1)); if (anzahl == 0) { final String hinweis = RES.getString("no_bookings_with_this_properties"); final AbstractBlock block2 = new TextBlock(hinweis); addDokumentenBlock(block2); } else { final double[] relTabs = {0.0, 12.0, 50.0, 80.0}; final TabellenBlock.Ausrichtung[] attribute = { TabellenBlock.Ausrichtung.LINKS, TabellenBlock.Ausrichtung.LINKS, TabellenBlock.Ausrichtung.LINKS, TabellenBlock.Ausrichtung.RECHTS}; final TabellenBlock block2 = new TabellenBlock(getTabelle()); block2.setFont(new Font(this.getHaushalt().getFontname(), Font.PLAIN, this.getHaushalt().getFontgroesse())); block2.setRelTabs(relTabs); block2.setLinienFarbe("Weiß"); block2.setAusrichtung(attribute); addDokumentenBlock(block2); final String[][] text = {{"", RES.getString("total") + ":", "", "" + summe}}; final TabellenBlock block3 = new TabellenBlock(text); block3.setFont(new Font(this.getHaushalt().getFontname(), Font.ITALIC, this.getHaushalt().getFontgroesse())); block3.setRelTabs(relTabs); block3.setHgFarbe("Grau"); block3.setLinienFarbe("Grau"); block3.setAusrichtung(attribute); addDokumentenBlock(block3); } return titel; } }