From 61462619925894b4be9154a6a7b0ad6d88a85e92 Mon Sep 17 00:00:00 2001 From: lenilsas <167138849+lenilsas@users.noreply.github.com> Date: Fri, 18 Oct 2024 13:38:54 +0200 Subject: [PATCH] =?UTF-8?q?Aussagekr=C3=A4ftige=20Fehlermeldungen=20beim?= =?UTF-8?q?=20L=C3=B6schen=20(#378)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Aussagekräftige Fehlermeldungen beim Löschen Außerdem Fehler bei Formular Duplizieren behoben * Meldung bei Löschen von Beitragsgruppe und Formular erweitert * Tippfehler --- .../action/BeitragsgruppeDeleteAction.java | 38 ++++++++++++++++--- .../gui/action/FormularDeleteAction.java | 12 ++++++ .../gui/action/FormularDuplizierenAction.java | 2 +- .../JVerein/gui/action/KontoDeleteAction.java | 13 +++++++ .../gui/action/LehrgangsartDeleteAction.java | 14 ++++++- .../gui/action/MitgliedstypDeleteAction.java | 13 +++++++ .../gui/action/ProjektDeleteAction.java | 13 +++++++ 7 files changed, 97 insertions(+), 8 deletions(-) diff --git a/src/de/jost_net/JVerein/gui/action/BeitragsgruppeDeleteAction.java b/src/de/jost_net/JVerein/gui/action/BeitragsgruppeDeleteAction.java index 4e855e956..984b2a839 100644 --- a/src/de/jost_net/JVerein/gui/action/BeitragsgruppeDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/BeitragsgruppeDeleteAction.java @@ -21,6 +21,8 @@ import de.jost_net.JVerein.Einstellungen; import de.jost_net.JVerein.rmi.Beitragsgruppe; import de.jost_net.JVerein.rmi.Mitglied; +import de.jost_net.JVerein.rmi.MitgliedNextBGruppe; +import de.jost_net.JVerein.rmi.SekundaereBeitragsgruppe; import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; @@ -53,14 +55,38 @@ public void handleAction(Object context) throws ApplicationException { return; } - DBIterator mitgl = Einstellungen.getDBService() - .createList(Mitglied.class); - mitgl.addFilter("beitragsgruppe = ?", new Object[] { bg.getID() }); - if (mitgl.size() > 0) + if(bg.getSekundaer()) + { + DBIterator sek = Einstellungen.getDBService() + .createList(SekundaereBeitragsgruppe.class); + sek.addFilter("beitragsgruppe = ?", new Object[] { bg.getID() }); + if (sek.size() > 0) + { + throw new ApplicationException(String.format( + "Beitragsgruppe '%s' kann nicht gelöscht werden. %d Mitglied(er) sind dieser sekundären Beitragsgruppe zugeordnet.", + bg.getBezeichnung(), sek.size())); + } + } + else + { + DBIterator mitgl = Einstellungen.getDBService() + .createList(Mitglied.class); + mitgl.addFilter("beitragsgruppe = ?", new Object[] { bg.getID() }); + if (mitgl.size() > 0) + { + throw new ApplicationException(String.format( + "Beitragsgruppe '%s' kann nicht gelöscht werden. %d Mitglied(er) sind dieser Beitragsgruppe zugeordnet.", + bg.getBezeichnung(), mitgl.size())); + } + } + DBIterator nextbg = Einstellungen.getDBService() + .createList(MitgliedNextBGruppe.class); + nextbg.addFilter("beitragsgruppe = ?", new Object[] { bg.getID() }); + if (nextbg.size() > 0) { throw new ApplicationException(String.format( - "Beitragsgruppe '%s' kann nicht gelöscht werden. %d Mitglied(er) sind dieser Beitragsgruppe zugeordnet.", - bg.getBezeichnung(), mitgl.size())); + "Beitragsgruppe '%s' kann nicht gelöscht werden. Bei %d Mitglied(er) ist diese Beitragsgruppe als zukünftige Beitragsgrupe hinterlegt.", + bg.getBezeichnung(), nextbg.size())); } YesNoDialog d = new YesNoDialog(YesNoDialog.POSITION_CENTER); d.setTitle("Beitragsgruppe löschen"); diff --git a/src/de/jost_net/JVerein/gui/action/FormularDeleteAction.java b/src/de/jost_net/JVerein/gui/action/FormularDeleteAction.java index d1aaa1bd4..4c2acd014 100644 --- a/src/de/jost_net/JVerein/gui/action/FormularDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/FormularDeleteAction.java @@ -20,6 +20,8 @@ import de.jost_net.JVerein.Einstellungen; import de.jost_net.JVerein.rmi.Formular; +import de.jost_net.JVerein.rmi.Spendenbescheinigung; +import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; import de.willuhn.jameica.gui.dialogs.AbstractDialog; @@ -55,6 +57,16 @@ public void handleAction(Object context) throws ApplicationException return; } + DBIterator spb = Einstellungen.getDBService() + .createList(Spendenbescheinigung.class); + spb.addFilter("formular = ?", new Object[] { f.getID() }); + if (spb.size() > 0) + { + throw new ApplicationException(String.format( + "Forular '%s' kann nicht gelöscht werden. Es ist bei %d Spendenbescheinigung(en) hinterlegt.", + f.getBezeichnung(), spb.size())); + } + // Do not delete a form if it is linked by other forms if (f.hasFormlinks()) { diff --git a/src/de/jost_net/JVerein/gui/action/FormularDuplizierenAction.java b/src/de/jost_net/JVerein/gui/action/FormularDuplizierenAction.java index 9f79fbe85..a786aa654 100644 --- a/src/de/jost_net/JVerein/gui/action/FormularDuplizierenAction.java +++ b/src/de/jost_net/JVerein/gui/action/FormularDuplizierenAction.java @@ -64,7 +64,7 @@ public void handleAction(Object context) throws ApplicationException ff2.setFormular(f2); ff2.store(); } - control.refreshTable(); + control.refreshFormularTable(); } catch (Exception e) { diff --git a/src/de/jost_net/JVerein/gui/action/KontoDeleteAction.java b/src/de/jost_net/JVerein/gui/action/KontoDeleteAction.java index 72670524a..60d4cd7dd 100644 --- a/src/de/jost_net/JVerein/gui/action/KontoDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/KontoDeleteAction.java @@ -18,7 +18,10 @@ import java.rmi.RemoteException; +import de.jost_net.JVerein.Einstellungen; +import de.jost_net.JVerein.rmi.Buchung; import de.jost_net.JVerein.rmi.Konto; +import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; import de.willuhn.jameica.gui.dialogs.YesNoDialog; @@ -45,6 +48,16 @@ public void handleAction(Object context) throws ApplicationException { return; } + DBIterator it = Einstellungen.getDBService() + .createList(Buchung.class); + it.addFilter("konto = ?", new Object[] { k.getID() }); + it.setLimit(1); + if (it.hasNext()) + { + throw new ApplicationException(String.format( + "Konto '%s' kann nicht gelöscht werden. Es existieren Buchungen auf diesem Konto.", + k.getBezeichnung())); + } YesNoDialog d = new YesNoDialog(YesNoDialog.POSITION_CENTER); d.setTitle("Konto löschen"); d.setText("Wollen Sie dieses Konto wirklich löschen?"); diff --git a/src/de/jost_net/JVerein/gui/action/LehrgangsartDeleteAction.java b/src/de/jost_net/JVerein/gui/action/LehrgangsartDeleteAction.java index b9a62aac6..4a57d6f30 100644 --- a/src/de/jost_net/JVerein/gui/action/LehrgangsartDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/LehrgangsartDeleteAction.java @@ -18,7 +18,10 @@ import java.rmi.RemoteException; +import de.jost_net.JVerein.Einstellungen; +import de.jost_net.JVerein.rmi.Lehrgang; import de.jost_net.JVerein.rmi.Lehrgangsart; +import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; import de.willuhn.jameica.gui.dialogs.YesNoDialog; @@ -51,7 +54,16 @@ public void handleAction(Object context) throws ApplicationException { return; } - + DBIterator it = Einstellungen.getDBService() + .createList(Lehrgang.class); + it.addFilter("lehrgangsart = ?", new Object[] { l.getID() }); + it.setLimit(1); + if (it.hasNext()) + { + throw new ApplicationException(String.format( + "Lehrgangsart '%s' kann nicht gelöscht werden. Es existieren Lehrgänge dieser Art.", + l.getBezeichnung())); + } YesNoDialog d = new YesNoDialog(YesNoDialog.POSITION_CENTER); d.setTitle("Lehrgangsart löschen"); d.setText("Wollen Sie diese Lehrgangsart wirklich löschen?"); diff --git a/src/de/jost_net/JVerein/gui/action/MitgliedstypDeleteAction.java b/src/de/jost_net/JVerein/gui/action/MitgliedstypDeleteAction.java index d311661b6..13ba5afa5 100644 --- a/src/de/jost_net/JVerein/gui/action/MitgliedstypDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/MitgliedstypDeleteAction.java @@ -18,7 +18,10 @@ import java.rmi.RemoteException; +import de.jost_net.JVerein.Einstellungen; import de.jost_net.JVerein.rmi.Adresstyp; +import de.jost_net.JVerein.rmi.Mitglied; +import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; import de.willuhn.jameica.gui.dialogs.YesNoDialog; @@ -49,6 +52,16 @@ public void handleAction(Object context) throws ApplicationException { return; } + DBIterator it = Einstellungen.getDBService() + .createList(Mitglied.class); + it.addFilter("adresstyp = ?", new Object[] { at.getID() }); + it.setLimit(1); + if (it.hasNext()) + { + throw new ApplicationException(String.format( + "Mitgliedstyp '%s' kann nicht gelöscht werden. Es existieren Nicht-Mitglieder dieses Typs.", + at.getBezeichnung())); + } YesNoDialog d = new YesNoDialog(YesNoDialog.POSITION_CENTER); d.setTitle("Mitgliedstyp löschen"); d.setText("Wollen Sie diesen Mitgliedstyp wirklich löschen?"); diff --git a/src/de/jost_net/JVerein/gui/action/ProjektDeleteAction.java b/src/de/jost_net/JVerein/gui/action/ProjektDeleteAction.java index 6c4879247..0d071aed9 100644 --- a/src/de/jost_net/JVerein/gui/action/ProjektDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/ProjektDeleteAction.java @@ -18,7 +18,10 @@ import java.rmi.RemoteException; +import de.jost_net.JVerein.Einstellungen; +import de.jost_net.JVerein.rmi.Buchung; import de.jost_net.JVerein.rmi.Projekt; +import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; import de.willuhn.jameica.gui.dialogs.YesNoDialog; @@ -45,6 +48,16 @@ public void handleAction(Object context) throws ApplicationException { return; } + DBIterator it = Einstellungen.getDBService() + .createList(Buchung.class); + it.addFilter("projekt = ?", new Object[] { p.getID() }); + it.setLimit(1); + if (it.hasNext()) + { + throw new ApplicationException(String.format( + "Projekt '%s' kann nicht gelöscht werden. Es existieren Buchungen mit diesem Projekt.", + p.getBezeichnung())); + } YesNoDialog d = new YesNoDialog(YesNoDialog.POSITION_CENTER); d.setTitle("Projekt löschen"); d.setText("Wollen Sie dieses Projekt wirklich löschen?");