From 366aef8fa2a624ddd7ed5fcede9dc2546ccf82a2 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer <126261667+JohannMaierhofer@users.noreply.github.com> Date: Thu, 16 Jan 2025 14:53:32 +0100 Subject: [PATCH] Update Buchungsart Filter (#576) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update Buchungsart Filter * Filter für Nummer wie alte Implementierung und TODO entfernt * Fix getSuchBuchungsartArt --- .../gui/control/BuchungsartControl.java | 173 ++++++----------- .../JVerein/gui/control/FilterControl.java | 178 ++++++++++++++++-- .../JVerein/gui/view/BuchungsartListView.java | 48 ++--- 3 files changed, 237 insertions(+), 162 deletions(-) diff --git a/src/de/jost_net/JVerein/gui/control/BuchungsartControl.java b/src/de/jost_net/JVerein/gui/control/BuchungsartControl.java index fe3e7f1b2..a2ca768fd 100644 --- a/src/de/jost_net/JVerein/gui/control/BuchungsartControl.java +++ b/src/de/jost_net/JVerein/gui/control/BuchungsartControl.java @@ -47,7 +47,6 @@ import de.willuhn.datasource.pseudo.PseudoIterator; import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.datasource.rmi.DBService; -import de.willuhn.jameica.gui.AbstractControl; import de.willuhn.jameica.gui.AbstractView; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; @@ -68,10 +67,8 @@ import de.willuhn.util.ApplicationException; import de.willuhn.util.ProgressMonitor; -public class BuchungsartControl extends AbstractControl +public class BuchungsartControl extends FilterControl { - private de.willuhn.jameica.system.Settings settings; - private TablePart buchungsartList; private IntegerInput nummer; @@ -83,20 +80,17 @@ public class BuchungsartControl extends AbstractControl private SelectInput buchungsklasse; private CheckboxInput spende; - + private CheckboxInput abschreibung; private SelectInput steuersatz; - - private SelectInput steuer_buchungsart; - private TextInput suchtext; + private SelectInput steuer_buchungsart; private Buchungsart buchungsart; - + private SelectInput status; - - private SelectInput suchstatus; + public BuchungsartControl(AbstractView view) { @@ -160,44 +154,6 @@ public SelectInput getStatus() throws RemoteException new StatusBuchungsart(getBuchungsart().getStatus())); return status; } - - public SelectInput getSuchStatus() throws RemoteException - { - if (suchstatus != null) - { - return suchstatus; - } - suchstatus = new SelectInput( - new String[] { "Alle", "Ohne Deaktiviert" }, - settings.getString("suchstatus", "Alle")); - suchstatus.addListener(new FilterListener()); - return suchstatus; - } - - public class FilterListener implements Listener - { - - FilterListener() - { - } - - @Override - public void handleEvent(Event event) - { - if (event.type != SWT.Selection && event.type != SWT.FocusOut) - { - return; - } - try - { - getBuchungsartList(); - } - catch (RemoteException e) - { - GUI.getStatusBar().setErrorText(e.getMessage()); - } - } - } public CheckboxInput getSpende() throws RemoteException { @@ -495,66 +451,11 @@ public void handleStore() } } - public TextInput getSuchtext() - { - if (suchtext != null) - { - return suchtext; - } - suchtext = new TextInput(settings.getString("suchtext", ""), 35); - return suchtext; - } - - @SuppressWarnings("unchecked") public Part getBuchungsartList() throws RemoteException { - - if (suchstatus != null) - { - String tmp = (String) suchstatus.getValue(); - if (tmp != null) - { - settings.setAttribute("suchstatus", tmp); - } - else - { - settings.setAttribute("suchstatus", ""); - } - } - - if (suchtext != null) - { - String tmp = (String) suchtext.getValue(); - if (tmp != null) - { - settings.setAttribute("suchtext", tmp); - } - else - { - settings.setAttribute("suchtext", ""); - } - } - - DBService service = Einstellungen.getDBService(); - DBIterator buchungsarten = service - .createList(Buchungsart.class); - buchungsarten.addFilter("nummer >= 0"); - if (suchstatus != null && - suchstatus.getValue().toString().equalsIgnoreCase("Ohne Deaktiviert")) - buchungsarten.addFilter("status != ?", new Object[] { StatusBuchungsart.INACTIVE }); - if (!getSuchtext().getValue().equals("")) - { - String text = "%" + ((String) getSuchtext().getValue()).toUpperCase() - + "%"; - buchungsarten.addFilter("(UPPER(bezeichnung) like ? or nummer like ?)", - new Object[] { text, text }); - } - buchungsarten.setOrder("ORDER BY nummer"); - if (buchungsartList == null) { - - buchungsartList = new TablePart(buchungsarten, new BuchungsartAction()); + buchungsartList = new TablePart(getBuchungsarten(), new BuchungsartAction()); buchungsartList.addColumn("Nummer", "nummer"); buchungsartList.addColumn("Bezeichnung", "bezeichnung"); buchungsartList.addColumn("Art", "art", new Formatter() @@ -622,17 +523,64 @@ public String format(Object o) else { buchungsartList.removeAll(); - - for (Buchungsart bu : (List) PseudoIterator - .asList(buchungsarten)) + DBIterator buchungsarten = getBuchungsarten(); + while (buchungsarten.hasNext()) { - buchungsartList.addItem(bu); + buchungsartList.addItem(buchungsarten.next()); } buchungsartList.sort(); } return buchungsartList; } + private DBIterator getBuchungsarten() throws RemoteException + { + DBService service = Einstellungen.getDBService(); + DBIterator buchungsarten = service + .createList(Buchungsart.class); + + if (isSuchStatusAktiv() && + getSuchStatus().getValue().toString().equalsIgnoreCase("Ohne Deaktiviert")) + buchungsarten.addFilter("status != ?", new Object[] { StatusBuchungsart.INACTIVE }); + if (isSuchnameAktiv() && !getSuchname().getValue().equals("")) + { + String text = "%" + ((String) getSuchname().getValue()).toUpperCase() + + "%"; + buchungsarten.addFilter("nummer like ?", new Object[] { text }); + } + if (isSuchtextAktiv() && !getSuchtext().getValue().equals("")) + { + String text = "%" + ((String) getSuchtext().getValue()).toUpperCase() + + "%"; + buchungsarten.addFilter("UPPER(bezeichnung) like ?", + new Object[] { text }); + } + if (isSuchBuchungsartArtAktiv() && getSuchBuchungsartArt().getValue() != null) + { + ArtBuchungsart art = (ArtBuchungsart) getSuchBuchungsartArt().getValue(); + buchungsarten.addFilter("art = ?", new Object[] { art.getKey() }); + } + if (isSuchBuchungsklasseAktiv() && getSuchBuchungsklasse().getValue() != null) + { + Buchungsklasse tmp = (Buchungsklasse) getSuchBuchungsklasse().getValue(); + buchungsarten.addFilter("buchungsklasse = ?", new Object[] { tmp.getID() }); + } + buchungsarten.setOrder("ORDER BY nummer"); + return buchungsarten; + } + + public void TabRefresh() + { + try + { + getBuchungsartList(); + } + catch (RemoteException e) + { + // + } + } + public Button getPDFAusgabeButton() { Button b = new Button("PDF", new Action() @@ -679,12 +627,7 @@ private void starteAuswertung() throws RemoteException s = s + ".pdf"; } final File file = new File(s); - final DBIterator it = Einstellungen.getDBService() - .createList(Buchungsart.class); - if (suchstatus != null && - suchstatus.getValue().toString().equalsIgnoreCase("Ohne Deaktiviert")) - it.addFilter("status != ?", new Object[] { StatusBuchungsart.INACTIVE }); - it.setOrder("ORDER BY nummer"); + final DBIterator it = getBuchungsarten(); settings.setAttribute("lastdir", file.getParent()); BackgroundTask t = new BackgroundTask() { diff --git a/src/de/jost_net/JVerein/gui/control/FilterControl.java b/src/de/jost_net/JVerein/gui/control/FilterControl.java index b77007483..c9c84e93c 100644 --- a/src/de/jost_net/JVerein/gui/control/FilterControl.java +++ b/src/de/jost_net/JVerein/gui/control/FilterControl.java @@ -40,10 +40,12 @@ import de.jost_net.JVerein.gui.input.IntegerNullInput; import de.jost_net.JVerein.gui.input.MailAuswertungInput; import de.jost_net.JVerein.gui.parts.ToolTipButton; +import de.jost_net.JVerein.keys.ArtBuchungsart; import de.jost_net.JVerein.keys.SuchSpendenart; import de.jost_net.JVerein.rmi.Abrechnungslauf; import de.jost_net.JVerein.rmi.Adresstyp; import de.jost_net.JVerein.rmi.Beitragsgruppe; +import de.jost_net.JVerein.rmi.Buchungsklasse; import de.jost_net.JVerein.rmi.Eigenschaft; import de.jost_net.JVerein.rmi.Lehrgangsart; import de.jost_net.JVerein.rmi.Mitglied; @@ -82,7 +84,7 @@ public class FilterControl extends AbstractControl protected String additionalparamprefix2 = ""; protected Settings settings = null; - + protected Mitgliedstyp typ = Mitgliedstyp.NOT_USED; protected TreePart eigenschaftenAuswahlTree = null; @@ -90,13 +92,13 @@ public class FilterControl extends AbstractControl protected SelectInput suchadresstyp = null; protected SelectInput status = null; - + protected SelectInput art = null; protected TextInput suchexternemitgliedsnummer = null; protected IntegerNullInput suchmitgliedsnummer = null; - + protected DialogInput eigenschaftenabfrage = null; protected SelectInput beitragsgruppeausw = null; @@ -122,23 +124,23 @@ public class FilterControl extends AbstractControl protected DateInput austrittvon = null; protected DateInput austrittbis = null; - + protected DialogInput zusatzfelderabfrage = null; - + protected SelectInput mailAuswahl = null; - - protected ZusatzfelderAuswahlDialog zad= null; - + + protected ZusatzfelderAuswahlDialog zad = null; + protected DateInput datumvon = null; protected DateInput datumbis = null; - + protected SelectInput differenz = null; - + protected CheckboxInput ohneabbucher = null; - + protected SelectInput suchlehrgangsart = null; - + protected DateInput eingabedatumvon = null; protected DateInput eingabedatumbis = null; @@ -148,11 +150,17 @@ public class FilterControl extends AbstractControl protected DateInput abbuchungsdatumbis = null; protected TextInput suchtext = null; - + protected SelectInput abrechnungslaufausw = null; - + protected IntegerNullInput integerausw = null; - + + protected SelectInput suchstatus = null; + + protected SelectInput suchbuchungsklasse = null; + + protected SelectInput suchbuchungsartart = null; + private Calendar calendar = Calendar.getInstance(); private enum RANGE @@ -1091,8 +1099,95 @@ public boolean isSuchSpendenartAktiv() { return suchspendenart != null; } - - + + public SelectInput getSuchStatus() throws RemoteException + { + if (suchstatus != null) + { + return suchstatus; + } + suchstatus = new SelectInput(new String[] { "Alle", "Ohne Deaktiviert" }, + settings.getString(settingsprefix + "suchstatus", "Alle")); + suchstatus.addListener(new FilterListener()); + suchstatus.setName("Status"); + return suchstatus; + } + + public boolean isSuchStatusAktiv() + { + return suchstatus != null; + } + + public SelectInput getSuchBuchungsklasse() throws RemoteException + { + if (suchbuchungsklasse != null) + { + return suchbuchungsklasse; + } + Buchungsklasse bk = null; + String buchungskl = settings + .getString(settingsprefix + "suchbuchungsklasse", ""); + if (buchungskl.length() > 0) + { + try + { + bk = (Buchungsklasse) Einstellungen.getDBService() + .createObject(Buchungsklasse.class, buchungskl); + } + catch (ObjectNotFoundException e) + { + bk = (Buchungsklasse) Einstellungen.getDBService() + .createObject(Buchungsklasse.class, null); + } + } + DBIterator list = Einstellungen.getDBService() + .createList(Buchungsklasse.class); + list.setOrder("ORDER BY bezeichnung"); + suchbuchungsklasse = new SelectInput( + list != null ? PseudoIterator.asList(list) : null, bk); + suchbuchungsklasse.setName("Buchungsklasse"); + suchbuchungsklasse.setAttribute("bezeichnung"); + suchbuchungsklasse.setPleaseChoose("Bitte auswählen"); + suchbuchungsklasse.addListener(new FilterListener()); + return suchbuchungsklasse; + } + + public boolean isSuchBuchungsklasseAktiv() + { + return suchbuchungsklasse != null; + } + + public SelectInput getSuchBuchungsartArt() throws RemoteException + { + if (suchbuchungsartart != null) + { + return suchbuchungsartart; + } + String art = settings.getString(settingsprefix + "suchbuchungsartart", ""); + ArtBuchungsart artb = null; + if (art.length() > 0) + { + try + { + artb = new ArtBuchungsart(Integer.valueOf(art)); + } + catch (Exception e) + { + // + } + } + suchbuchungsartart = new SelectInput(ArtBuchungsart.getArray(), artb); + suchbuchungsartart.setName("Art"); + suchbuchungsartart.setPleaseChoose("Bitte auswählen"); + suchbuchungsartart.addListener(new FilterListener()); + return suchbuchungsartart; + } + + public boolean isSuchBuchungsartArtAktiv() + { + return suchbuchungsartart != null; + } + /** * Buttons */ @@ -1213,6 +1308,12 @@ public void handleAction(Object context) throws ApplicationException integerausw.setValue(null); if (suchspendenart != null) suchspendenart.setValue(SuchSpendenart.ALLE); + if (suchstatus != null) + suchstatus.setValue("Alle"); + if (suchbuchungsklasse != null) + suchbuchungsklasse.setValue(null); + if (suchbuchungsartart != null) + suchbuchungsartart.setValue(null); refresh(); } }, null, false, "eraser.png"); @@ -1606,8 +1707,49 @@ public void saveFilterSettings() throws RemoteException SuchSpendenart ss = (SuchSpendenart) suchspendenart.getValue(); settings.setAttribute(settingsprefix + "suchspendenart.key", ss.getKey()); } + + if (suchstatus != null) + { + String tmp = (String) suchstatus.getValue(); + if (tmp != null) + { + settings.setAttribute(settingsprefix + "suchstatus", tmp); + } + else + { + settings.setAttribute(settingsprefix + "suchstatus", ""); + } + } + + if (suchbuchungsklasse != null) + { + Buchungsklasse tmpbk = (Buchungsklasse) suchbuchungsklasse.getValue(); + if (tmpbk != null) + { + settings.setAttribute(settingsprefix + "suchbuchungsklasse", + tmpbk.getID()); + } + else + { + settings.setAttribute(settingsprefix + "suchbuchungsklasse", ""); + } + } + + if (suchbuchungsartart != null) + { + ArtBuchungsart art = (ArtBuchungsart) suchbuchungsartart.getValue(); + if (art != null) + { + settings.setAttribute(settingsprefix + "suchbuchungsartart", + art.getKey()); + } + else + { + settings.setAttribute(settingsprefix + "suchbuchungsartart", ""); + } + } } - + private void saveDate(Date tmp, String setting) { if (tmp != null) diff --git a/src/de/jost_net/JVerein/gui/view/BuchungsartListView.java b/src/de/jost_net/JVerein/gui/view/BuchungsartListView.java index 115b2815b..ebbd1335d 100644 --- a/src/de/jost_net/JVerein/gui/view/BuchungsartListView.java +++ b/src/de/jost_net/JVerein/gui/view/BuchungsartListView.java @@ -16,18 +16,15 @@ **********************************************************************/ package de.jost_net.JVerein.gui.view; -import java.rmi.RemoteException; - import de.jost_net.JVerein.gui.action.BuchungsartAction; import de.jost_net.JVerein.gui.action.DokumentationAction; import de.jost_net.JVerein.gui.control.BuchungsartControl; import de.willuhn.jameica.gui.AbstractView; -import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; -import de.willuhn.jameica.gui.parts.Button; import de.willuhn.jameica.gui.parts.ButtonArea; +import de.willuhn.jameica.gui.util.ColumnLayout; import de.willuhn.jameica.gui.util.LabelGroup; -import de.willuhn.util.ApplicationException; +import de.willuhn.jameica.gui.util.SimpleContainer; public class BuchungsartListView extends AbstractView { @@ -40,37 +37,30 @@ public void bind() throws Exception final BuchungsartControl control = new BuchungsartControl(this); LabelGroup group = new LabelGroup(getParent(), "Filter"); - group.addLabelPair("Suche", control.getSuchtext()); - group.addLabelPair("Status", control.getSuchStatus()); + ColumnLayout cl = new ColumnLayout(group.getComposite(), 2); + + SimpleContainer left = new SimpleContainer(cl.getComposite()); + left.addLabelPair("Nummer", control.getSuchname()); + left.addLabelPair("Bezeichnung", control.getSuchtext()); + left.addInput(control.getSuchBuchungsklasse()); + + SimpleContainer right = new SimpleContainer(cl.getComposite()); + right.addInput(control.getSuchBuchungsartArt()); + right.addLabelPair("Status", control.getSuchStatus()); - ButtonArea buttons1 = new ButtonArea(); - Button button = new Button("Suchen", new Action() - { - @Override - public void handleAction(Object context) throws ApplicationException - { - try - { - control.getBuchungsartList(); - } - catch (RemoteException e) - { - // TODO Auto-generated catch block - GUI.getStatusBar().setErrorText(e.getMessage()); - } - } - }, null, true, "search.png"); - buttons1.addButton(button); - group.addButtonArea(buttons1); + ButtonArea fbuttons = new ButtonArea(); + fbuttons.addButton(control.getResetButton()); + fbuttons.addButton(control.getSuchenButton()); + group.addButtonArea(fbuttons); - LabelGroup group2 = new LabelGroup(getParent(), "Liste", true); - group2.addPart(control.getBuchungsartList()); + control.getBuchungsartList().paint(this.getParent()); ButtonArea buttons = new ButtonArea(); buttons.addButton("Hilfe", new DokumentationAction(), DokumentationUtil.BUCHUNGSART, false, "question-circle.png"); buttons.addButton(control.getPDFAusgabeButton()); - buttons.addButton("Neu", new BuchungsartAction(), null, false, "document-new.png"); + buttons.addButton("Neu", new BuchungsartAction(), null, false, + "document-new.png"); buttons.paint(this.getParent()); } }