From ed2102d3fb866e084dfb681264cdfdce5cb46c33 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Sun, 5 May 2024 09:45:14 +0200 Subject: [PATCH 01/12] =?UTF-8?q?DSGVO=20konformes=20L=C3=B6schen=20von=20?= =?UTF-8?q?Mitgliedern,=20implementiert=20#213?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/action/MitgliedDeleteAction.java | 60 +++++++++++++++- .../gui/action/NichtMitgliedDeleteAction.java | 58 +++++++++++++++- .../server/DDLTool/AbstractDDLUpdate.java | 16 +++++ .../server/DDLTool/Updates/Update0440.java | 68 +++++++++++++++++++ .../server/SpendenbescheinigungImpl.java | 14 ---- 5 files changed, 199 insertions(+), 17 deletions(-) create mode 100644 src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java diff --git a/src/de/jost_net/JVerein/gui/action/MitgliedDeleteAction.java b/src/de/jost_net/JVerein/gui/action/MitgliedDeleteAction.java index e4468be9e..3493b37f4 100644 --- a/src/de/jost_net/JVerein/gui/action/MitgliedDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/MitgliedDeleteAction.java @@ -17,13 +17,24 @@ package de.jost_net.JVerein.gui.action; import java.rmi.RemoteException; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.math.BigDecimal; +import de.jost_net.JVerein.Einstellungen; import de.jost_net.JVerein.rmi.Mitglied; +import de.jost_net.JVerein.rmi.Mail; +import de.jost_net.JVerein.rmi.MailEmpfaenger; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; import de.willuhn.jameica.gui.dialogs.YesNoDialog; +import de.willuhn.jameica.gui.util.SWTUtil; import de.willuhn.logging.Logger; import de.willuhn.util.ApplicationException; +import de.willuhn.datasource.rmi.DBIterator; +import de.willuhn.datasource.rmi.DBService; +import de.willuhn.datasource.rmi.ResultSetExtractor; /** * Loeschen eines Mitgliedes. @@ -40,14 +51,20 @@ public void handleAction(Object context) throws ApplicationException } try { - Mitglied m = (Mitglied) context; + final Mitglied m = (Mitglied) context; if (m.isNewObject()) { return; } YesNoDialog d = new YesNoDialog(YesNoDialog.POSITION_CENTER); d.setTitle("Mitglied löschen"); - d.setText("Wollen Sie dieses Mitglied wirklich löschen?"); + d.setPanelText("Mitglied löschen?"); + d.setSideImage(SWTUtil.getImage("dialog-warning-large.png")); + String text = "Wollen Sie dieses Mitglied wirklich löschen?" + + "\nDies löscht auch alle Mitglied bezogenen Daten wie" + + "\nz.B. Sollbuchungen, Spendenbescheinigungen, Mails etc." + + "\nDiese Daten können nicht wieder hergestellt werden!"; + d.setText(text); try { @@ -60,6 +77,45 @@ public void handleAction(Object context) throws ApplicationException Logger.error("Fehler beim Löschen des Mitgliedes", e); return; } + + // Suche Mails mit mehr als einem Empfänger + final DBService service = Einstellungen.getDBService(); + String sql = "SELECT mail , count(id) anzahl from mailempfaenger "; + sql += "group by mailempfaenger.mail "; + sql += "HAVING anzahl > 1 "; + ResultSetExtractor rs = new ResultSetExtractor() + { + @Override + public Object extract(ResultSet rs) throws RemoteException, SQLException + { + ArrayList list = new ArrayList(); + while (rs.next()) + { + list.add(rs.getBigDecimal(1)); + } + return list; + } + }; + @SuppressWarnings("unchecked") + ArrayList ergebnis = (ArrayList) service.execute(sql, + new Object[] { }, rs); + + // Alle Mails an das Mitglied löschen wenn nur ein Empfänger vorhanden + DBIterator it = Einstellungen.getDBService() + .createList(MailEmpfaenger.class); + it.addFilter("mitglied = ?", m.getID()); + while (it.hasNext()) + { + String mailId = ((MailEmpfaenger) it.next()).getMail().getID(); + if (!ergebnis.contains(new BigDecimal(mailId))) + { + // Die Mail hat keinen weiteren Empfänger also löschen + Mail ma = (Mail) Einstellungen.getDBService() + .createObject(Mail.class, mailId); + ma.delete(); + } + } + m.delete(); GUI.getStatusBar().setSuccessText("Mitglied gelöscht."); } diff --git a/src/de/jost_net/JVerein/gui/action/NichtMitgliedDeleteAction.java b/src/de/jost_net/JVerein/gui/action/NichtMitgliedDeleteAction.java index e61a05803..7524c8d5f 100644 --- a/src/de/jost_net/JVerein/gui/action/NichtMitgliedDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/NichtMitgliedDeleteAction.java @@ -16,12 +16,23 @@ **********************************************************************/ package de.jost_net.JVerein.gui.action; +import java.math.BigDecimal; import java.rmi.RemoteException; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import de.jost_net.JVerein.Einstellungen; +import de.jost_net.JVerein.rmi.Mail; +import de.jost_net.JVerein.rmi.MailEmpfaenger; import de.jost_net.JVerein.rmi.Mitglied; +import de.willuhn.datasource.rmi.DBIterator; +import de.willuhn.datasource.rmi.DBService; +import de.willuhn.datasource.rmi.ResultSetExtractor; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; import de.willuhn.jameica.gui.dialogs.YesNoDialog; +import de.willuhn.jameica.gui.util.SWTUtil; import de.willuhn.logging.Logger; import de.willuhn.util.ApplicationException; @@ -46,7 +57,13 @@ public void handleAction(Object context) throws ApplicationException } YesNoDialog d = new YesNoDialog(YesNoDialog.POSITION_CENTER); d.setTitle("Nicht-Mitglied löschen"); - d.setText("Wollen Sie dieses Nicht-Mitglied wirklich löschen?"); + d.setPanelText("Nicht-Mitglied löschen?"); + d.setSideImage(SWTUtil.getImage("dialog-warning-large.png")); + String text = "Wollen Sie dieses Nicht-Mitglied wirklich löschen?" + + "\nDies löscht auch alle Nicht-Mitglied bezogenen Daten wie" + + "\nz.B. Sollbuchungen, Spendenbescheinigungen, Mails etc." + + "\nDiese Daten können nicht wieder hergestellt werden!"; + d.setText(text); try { @@ -59,6 +76,45 @@ public void handleAction(Object context) throws ApplicationException Logger.error("Fehler beim Löschen des Nicht-Mitglied", e); return; } + + // Suche Mails mit mehr als einem Empfänger + final DBService service = Einstellungen.getDBService(); + String sql = "SELECT mail , count(id) anzahl from mailempfaenger "; + sql += "group by mailempfaenger.mail "; + sql += "HAVING anzahl > 1 "; + ResultSetExtractor rs = new ResultSetExtractor() + { + @Override + public Object extract(ResultSet rs) throws RemoteException, SQLException + { + ArrayList list = new ArrayList(); + while (rs.next()) + { + list.add(rs.getBigDecimal(1)); + } + return list; + } + }; + @SuppressWarnings("unchecked") + ArrayList ergebnis = (ArrayList) service.execute(sql, + new Object[] { }, rs); + + // Alle Mails an das Nicht-Mitglied löschen wenn nur ein Empfänger vorhanden + DBIterator it = Einstellungen.getDBService() + .createList(MailEmpfaenger.class); + it.addFilter("mitglied = ?", m.getID()); + while (it.hasNext()) + { + String mailId = ((MailEmpfaenger) it.next()).getMail().getID(); + if (!ergebnis.contains(new BigDecimal(mailId))) + { + // Die Mail hat keinen weiteren Empfänger also löschen + Mail ma = (Mail) Einstellungen.getDBService() + .createObject(Mail.class, mailId); + ma.delete(); + } + } + m.delete(); GUI.getStatusBar().setSuccessText("Nicht-Mitglied gelöscht."); } diff --git a/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java b/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java index 0c6e36797..7bb968cce 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java +++ b/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java @@ -316,5 +316,21 @@ public String dropTable(String table) { return "drop table " + table + ";\n"; } + + public String dropForeignKey(String constraintname, String table) + { + switch (drv) + { + case H2: + { + return "ALTER TABLE " + table + " DROP CONSTRAINT " + constraintname + ";\n"; + } + case MYSQL: + { + return "ALTER TABLE " + table + " DROP FOREIGN KEY " + constraintname + ";\n"; + } + } + return ""; + } } diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java new file mode 100644 index 000000000..9db4ff6a6 --- /dev/null +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java @@ -0,0 +1,68 @@ +/********************************************************************** + * This program 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. + * + * This program 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 this program. If not, + * see . + * + **********************************************************************/ +package de.jost_net.JVerein.server.DDLTool.Updates; + +import de.jost_net.JVerein.server.DDLTool.AbstractDDLUpdate; +import de.willuhn.util.ApplicationException; +import de.willuhn.util.ProgressMonitor; + +import java.sql.Connection; + +public class Update0440 extends AbstractDDLUpdate +{ + public Update0440(String driver, ProgressMonitor monitor, Connection conn) + { + super(driver, monitor, conn); + } + + @Override + public void run() throws ApplicationException + { + execute(dropForeignKey("FK_SEKUNDAERBEITRAGEGRUPPE1", "SEKUNDAEREBEITRAGSGRUPPE")); + execute(createForeignKey("FK_SEKUNDAERBEITRAGEGRUPPE1", "SEKUNDAEREBEITRAGSGRUPPE", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("FKLASTSCHRIFT2", "LASTSCHRIFT")); + execute(createForeignKey("FKLASTSCHRIFT2", "LASTSCHRIFT", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("FKLASTSCHRIFT3", "LASTSCHRIFT")); + execute(createForeignKey("FKLASTSCHRIFT3", "LASTSCHRIFT", + "kursteilnehmer", "kursteilnehmer", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("FKMITGLIEDDOKUMENT1", "MITGLIEDDOKUMENT")); + execute(createForeignKey("FKMITGLIEDDOKUMENT1", "MITGLIEDDOKUMENT", + "referenz", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("FKSPENDENBESCHEINIGUNG2", "SPENDENBESCHEINIGUNG")); + execute(createForeignKey("FKSPENDENBESCHEINIGUNG2", "SPENDENBESCHEINIGUNG", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("FKWIEDERVORLAGE1", "WIEDERVORLAGE")); + execute(createForeignKey("FKWIEDERVORLAGE1", "WIEDERVORLAGE", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("FKZUSATZABBUCHUNG1", "ZUSATZABBUCHUNG")); + execute(createForeignKey("FKZUSATZABBUCHUNG1", "ZUSATZABBUCHUNG", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("FKBUCHUNG3", "BUCHUNG")); + execute(createForeignKey("FKBUCHUNG3", "BUCHUNG", + "mitgliedskonto", "mitgliedskonto", "id", "SET NULL", "NO ACTION")); + + execute(dropForeignKey("FKBUCHUNG5", "BUCHUNG")); + execute(createForeignKey("FKBUCHUNG5", "BUCHUNG", + "spendenbescheinigung", "spendenbescheinigung", "id", "SET NULL", "NO ACTION")); + } +} diff --git a/src/de/jost_net/JVerein/server/SpendenbescheinigungImpl.java b/src/de/jost_net/JVerein/server/SpendenbescheinigungImpl.java index 2a57854fd..78ab8d2d9 100644 --- a/src/de/jost_net/JVerein/server/SpendenbescheinigungImpl.java +++ b/src/de/jost_net/JVerein/server/SpendenbescheinigungImpl.java @@ -365,20 +365,6 @@ public void store() throws RemoteException, ApplicationException } } - @Override - public void delete() throws RemoteException, ApplicationException - { - if (getSpendenart() == Spendenart.GELDSPENDE) - { - for (Buchung b : getBuchungen()) - { - b.setSpendenbescheinigungId(null); - b.store(); - } - } - super.delete(); - } - @Override public Mitglied getMitglied() throws RemoteException { From b020d58463a6a633a4859669b2406c40c370cf58 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Sun, 5 May 2024 17:04:43 +0200 Subject: [PATCH 02/12] Vereinfachung --- .../jost_net/JVerein/gui/action/MitgliedDeleteAction.java | 6 ++---- .../JVerein/gui/action/NichtMitgliedDeleteAction.java | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/de/jost_net/JVerein/gui/action/MitgliedDeleteAction.java b/src/de/jost_net/JVerein/gui/action/MitgliedDeleteAction.java index 3493b37f4..0d364a9ee 100644 --- a/src/de/jost_net/JVerein/gui/action/MitgliedDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/MitgliedDeleteAction.java @@ -106,12 +106,10 @@ public Object extract(ResultSet rs) throws RemoteException, SQLException it.addFilter("mitglied = ?", m.getID()); while (it.hasNext()) { - String mailId = ((MailEmpfaenger) it.next()).getMail().getID(); - if (!ergebnis.contains(new BigDecimal(mailId))) + Mail ma = ((MailEmpfaenger) it.next()).getMail(); + if (!ergebnis.contains(new BigDecimal(ma.getID()))) { // Die Mail hat keinen weiteren Empfänger also löschen - Mail ma = (Mail) Einstellungen.getDBService() - .createObject(Mail.class, mailId); ma.delete(); } } diff --git a/src/de/jost_net/JVerein/gui/action/NichtMitgliedDeleteAction.java b/src/de/jost_net/JVerein/gui/action/NichtMitgliedDeleteAction.java index 7524c8d5f..974eb52a8 100644 --- a/src/de/jost_net/JVerein/gui/action/NichtMitgliedDeleteAction.java +++ b/src/de/jost_net/JVerein/gui/action/NichtMitgliedDeleteAction.java @@ -105,12 +105,10 @@ public Object extract(ResultSet rs) throws RemoteException, SQLException it.addFilter("mitglied = ?", m.getID()); while (it.hasNext()) { - String mailId = ((MailEmpfaenger) it.next()).getMail().getID(); - if (!ergebnis.contains(new BigDecimal(mailId))) + Mail ma = ((MailEmpfaenger) it.next()).getMail(); + if (!ergebnis.contains(new BigDecimal(ma.getID()))) { // Die Mail hat keinen weiteren Empfänger also löschen - Mail ma = (Mail) Einstellungen.getDBService() - .createObject(Mail.class, mailId); ma.delete(); } } From 7f43dd9606c89baa3ebfc2e710ff7aa4334cebf8 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Tue, 11 Jun 2024 13:46:11 +0200 Subject: [PATCH 03/12] Update Update0440.java --- .../server/DDLTool/Updates/Update0440.java | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java index 9db4ff6a6..8e664c95f 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java @@ -29,40 +29,40 @@ public Update0440(String driver, ProgressMonitor monitor, Connection conn) @Override public void run() throws ApplicationException { - execute(dropForeignKey("FK_SEKUNDAERBEITRAGEGRUPPE1", "SEKUNDAEREBEITRAGSGRUPPE")); - execute(createForeignKey("FK_SEKUNDAERBEITRAGEGRUPPE1", "SEKUNDAEREBEITRAGSGRUPPE", + execute(dropForeignKey("fk_sekundaerebeitragsgruppe1", "sekundaerebeitragsgruppe")); + execute(createForeignKey("fk_sekundaerebeitragsgruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("FKLASTSCHRIFT2", "LASTSCHRIFT")); - execute(createForeignKey("FKLASTSCHRIFT2", "LASTSCHRIFT", + execute(dropForeignKey("fklastschrift2", "lastschrift")); + execute(createForeignKey("fklastschrift2", "lastschrift", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("FKLASTSCHRIFT3", "LASTSCHRIFT")); - execute(createForeignKey("FKLASTSCHRIFT3", "LASTSCHRIFT", + execute(dropForeignKey("fklastschrift3", "lastschrift")); + execute(createForeignKey("fklastschrift3", "lastschrift", "kursteilnehmer", "kursteilnehmer", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("FKMITGLIEDDOKUMENT1", "MITGLIEDDOKUMENT")); - execute(createForeignKey("FKMITGLIEDDOKUMENT1", "MITGLIEDDOKUMENT", + execute(dropForeignKey("fkmitglieddokument1", "mitglieddokument")); + execute(createForeignKey("fkmitglieddokument1", "mitglieddokument", "referenz", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("FKSPENDENBESCHEINIGUNG2", "SPENDENBESCHEINIGUNG")); - execute(createForeignKey("FKSPENDENBESCHEINIGUNG2", "SPENDENBESCHEINIGUNG", + execute(dropForeignKey("fkspendenbescheinigung2", "spendenbescheinigung")); + execute(createForeignKey("fkspendenbescheinigung2", "spendenbescheinigung", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("FKWIEDERVORLAGE1", "WIEDERVORLAGE")); - execute(createForeignKey("FKWIEDERVORLAGE1", "WIEDERVORLAGE", + execute(dropForeignKey("fkwiedervorlage1", "wiedervorlage")); + execute(createForeignKey("fkwiedervorlage1", "wiedervorlage", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("FKZUSATZABBUCHUNG1", "ZUSATZABBUCHUNG")); - execute(createForeignKey("FKZUSATZABBUCHUNG1", "ZUSATZABBUCHUNG", + execute(dropForeignKey("fkzusatzabbuchung1", "zusatzabbuchung")); + execute(createForeignKey("fkzusatzabbuchung1", "zusatzabbuchung", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("FKBUCHUNG3", "BUCHUNG")); - execute(createForeignKey("FKBUCHUNG3", "BUCHUNG", + execute(dropForeignKey("fkbuchung3", "buchung")); + execute(createForeignKey("fkbuchung3", "buchung", "mitgliedskonto", "mitgliedskonto", "id", "SET NULL", "NO ACTION")); - execute(dropForeignKey("FKBUCHUNG5", "BUCHUNG")); - execute(createForeignKey("FKBUCHUNG5", "BUCHUNG", + execute(dropForeignKey("fkbuchung5", "buchung")); + execute(createForeignKey("fkbuchung5", "buchung", "spendenbescheinigung", "spendenbescheinigung", "id", "SET NULL", "NO ACTION")); } } From c12e6f04f612468b321f3795682640e71cbc30da Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Tue, 11 Jun 2024 13:50:41 +0200 Subject: [PATCH 04/12] Kleinschrift --- .../jost_net/JVerein/server/DDLTool/Updates/Update0440.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java index 8e664c95f..8986fe4dd 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java @@ -29,8 +29,8 @@ public Update0440(String driver, ProgressMonitor monitor, Connection conn) @Override public void run() throws ApplicationException { - execute(dropForeignKey("fk_sekundaerebeitragsgruppe1", "sekundaerebeitragsgruppe")); - execute(createForeignKey("fk_sekundaerebeitragsgruppe1", "sekundaerebeitragsgruppe", + execute(dropForeignKey("fk_sekundaerbeitragsgruppe1", "sekundaerebeitragsgruppe")); + execute(createForeignKey("fk_sekundaerbeitragsgruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); execute(dropForeignKey("fklastschrift2", "lastschrift")); From 3a9541c19a78c74c091ac4b05ba38848d0de4c96 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Tue, 11 Jun 2024 13:54:15 +0200 Subject: [PATCH 05/12] Kleinschrift --- .../jost_net/JVerein/server/DDLTool/Updates/Update0440.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java index 8986fe4dd..376bc8e91 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java @@ -29,8 +29,8 @@ public Update0440(String driver, ProgressMonitor monitor, Connection conn) @Override public void run() throws ApplicationException { - execute(dropForeignKey("fk_sekundaerbeitragsgruppe1", "sekundaerebeitragsgruppe")); - execute(createForeignKey("fk_sekundaerbeitragsgruppe1", "sekundaerebeitragsgruppe", + execute(dropForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe")); + execute(createForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); execute(dropForeignKey("fklastschrift2", "lastschrift")); From 1c062f1da8617bedb6a4427ea8c66adc3fd1f920 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Mon, 22 Jul 2024 11:55:44 +0200 Subject: [PATCH 06/12] Fix MySql --- .../server/DDLTool/AbstractDDLUpdate.java | 4 +- .../server/DDLTool/Updates/Update0440.java | 94 +++++++++++++++---- 2 files changed, 79 insertions(+), 19 deletions(-) diff --git a/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java b/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java index 8fccf717d..0454ebd37 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java +++ b/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java @@ -302,8 +302,8 @@ public String createForeignKey(String constraintname, String table, } case MYSQL: { - return "ALTER TABLE " + table + " ADD CONSTRAINT " + " FOREIGN KEY " - + constraintname + "(" + column + ") REFERENCES " + reftable + " (" + return "ALTER TABLE " + table + " ADD CONSTRAINT " + constraintname + + " FOREIGN KEY (" + column + ") REFERENCES " + reftable + "(" + refcolumn + ") ON DELETE " + ondelete + " ON UPDATE " + onupdate + ";\n"; } diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java index 376bc8e91..cdab7f06f 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java @@ -28,41 +28,101 @@ public Update0440(String driver, ProgressMonitor monitor, Connection conn) @Override public void run() throws ApplicationException + { + if (getDriver() == DRIVER.H2) + { + runh2(); + } + else + { + try + { + runh2(); + } + catch (Exception ex) + { + runmysql(); + } + } + + } + + private void runh2() throws ApplicationException { execute(dropForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe")); - execute(createForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + execute(createForeignKey("fkSekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkLastschrift2", "lastschrift")); + execute(createForeignKey("fkLastschrift2", "lastschrift", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkLastschrift3", "lastschrift")); + execute(createForeignKey("fkLastschrift3", "lastschrift", + "kursteilnehmer", "kursteilnehmer", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkMitgliedDokument1", "mitglieddokument")); + execute(createForeignKey("fkMitgliedDokument1", "mitglieddokument", + "referenz", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkSpendenbescheinigung2", "spendenbescheinigung")); + execute(createForeignKey("fkSpendenbescheinigung2", "spendenbescheinigung", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkWiedervorlage1", "wiedervorlage")); + execute(createForeignKey("fkWiedervorlage1", "wiedervorlage", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkZusatzabbuchung1", "zusatzabbuchung")); + execute(createForeignKey("fkZusatzabbuchung1", "zusatzabbuchung", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkBuchung3", "buchung")); + execute(createForeignKey("fkBuchung3", "buchung", + "mitgliedskonto", "mitgliedskonto", "id", "SET NULL", "NO ACTION")); + + execute(dropForeignKey("fkBuchung5", "buchung")); + execute(createForeignKey("fkBuchung5", "buchung", + "spendenbescheinigung", "spendenbescheinigung", "id", "SET NULL", "NO ACTION")); + } + + private void runmysql() throws ApplicationException + { + execute(dropForeignKey("sekundaerebeitragsgruppe_ibfk_1", "sekundaerebeitragsgruppe")); + execute(createForeignKey("fkSekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("fklastschrift2", "lastschrift")); - execute(createForeignKey("fklastschrift2", "lastschrift", + execute(dropForeignKey("fkLastschrift2", "lastschrift")); + execute(createForeignKey("fkLastschrift2", "lastschrift", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("fklastschrift3", "lastschrift")); - execute(createForeignKey("fklastschrift3", "lastschrift", + execute(dropForeignKey("fkLastschrift3", "lastschrift")); + execute(createForeignKey("fkLastschrift3", "lastschrift", "kursteilnehmer", "kursteilnehmer", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("fkmitglieddokument1", "mitglieddokument")); - execute(createForeignKey("fkmitglieddokument1", "mitglieddokument", + execute(dropForeignKey("fkMitgliedDokument1", "mitglieddokument")); + execute(createForeignKey("fkMitgliedDokument1", "mitglieddokument", "referenz", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("fkspendenbescheinigung2", "spendenbescheinigung")); - execute(createForeignKey("fkspendenbescheinigung2", "spendenbescheinigung", + execute(dropForeignKey("fkSpendenbescheinigung2", "spendenbescheinigung")); + execute(createForeignKey("fkSpendenbescheinigung2", "spendenbescheinigung", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("fkwiedervorlage1", "wiedervorlage")); - execute(createForeignKey("fkwiedervorlage1", "wiedervorlage", + execute(dropForeignKey("fkWiedervorlage1", "wiedervorlage")); + execute(createForeignKey("fkWiedervorlage1", "wiedervorlage", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("fkzusatzabbuchung1", "zusatzabbuchung")); - execute(createForeignKey("fkzusatzabbuchung1", "zusatzabbuchung", + execute(dropForeignKey("fkZusatzabbuchung1", "zusatzabbuchung")); + execute(createForeignKey("fkZusatzabbuchung1", "zusatzabbuchung", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - execute(dropForeignKey("fkbuchung3", "buchung")); - execute(createForeignKey("fkbuchung3", "buchung", + execute(dropForeignKey("fkBuchung3", "buchung")); + execute(createForeignKey("fkBuchung3", "buchung", "mitgliedskonto", "mitgliedskonto", "id", "SET NULL", "NO ACTION")); - execute(dropForeignKey("fkbuchung5", "buchung")); - execute(createForeignKey("fkbuchung5", "buchung", + execute(dropForeignKey("fkBuchung5", "buchung")); + execute(createForeignKey("fkBuchung5", "buchung", "spendenbescheinigung", "spendenbescheinigung", "id", "SET NULL", "NO ACTION")); } + } From ff883614f60711c23fdd830b5a986a5e22b73687 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Mon, 22 Jul 2024 12:19:14 +0200 Subject: [PATCH 07/12] Fix MySql --- .../server/DDLTool/Updates/Update0440.java | 48 ++++--------------- 1 file changed, 8 insertions(+), 40 deletions(-) diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java index cdab7f06f..6c046c1bd 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java @@ -44,14 +44,6 @@ public void run() throws ApplicationException runmysql(); } } - - } - - private void runh2() throws ApplicationException - { - execute(dropForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe")); - execute(createForeignKey("fkSekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", - "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); execute(dropForeignKey("fkLastschrift2", "lastschrift")); execute(createForeignKey("fkLastschrift2", "lastschrift", @@ -84,6 +76,14 @@ private void runh2() throws ApplicationException execute(dropForeignKey("fkBuchung5", "buchung")); execute(createForeignKey("fkBuchung5", "buchung", "spendenbescheinigung", "spendenbescheinigung", "id", "SET NULL", "NO ACTION")); + + } + + private void runh2() throws ApplicationException + { + execute(dropForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe")); + execute(createForeignKey("fkSekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); } private void runmysql() throws ApplicationException @@ -91,38 +91,6 @@ private void runmysql() throws ApplicationException execute(dropForeignKey("sekundaerebeitragsgruppe_ibfk_1", "sekundaerebeitragsgruppe")); execute(createForeignKey("fkSekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - - execute(dropForeignKey("fkLastschrift2", "lastschrift")); - execute(createForeignKey("fkLastschrift2", "lastschrift", - "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - - execute(dropForeignKey("fkLastschrift3", "lastschrift")); - execute(createForeignKey("fkLastschrift3", "lastschrift", - "kursteilnehmer", "kursteilnehmer", "id", "CASCADE", "NO ACTION")); - - execute(dropForeignKey("fkMitgliedDokument1", "mitglieddokument")); - execute(createForeignKey("fkMitgliedDokument1", "mitglieddokument", - "referenz", "mitglied", "id", "CASCADE", "NO ACTION")); - - execute(dropForeignKey("fkSpendenbescheinigung2", "spendenbescheinigung")); - execute(createForeignKey("fkSpendenbescheinigung2", "spendenbescheinigung", - "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - - execute(dropForeignKey("fkWiedervorlage1", "wiedervorlage")); - execute(createForeignKey("fkWiedervorlage1", "wiedervorlage", - "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - - execute(dropForeignKey("fkZusatzabbuchung1", "zusatzabbuchung")); - execute(createForeignKey("fkZusatzabbuchung1", "zusatzabbuchung", - "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); - - execute(dropForeignKey("fkBuchung3", "buchung")); - execute(createForeignKey("fkBuchung3", "buchung", - "mitgliedskonto", "mitgliedskonto", "id", "SET NULL", "NO ACTION")); - - execute(dropForeignKey("fkBuchung5", "buchung")); - execute(createForeignKey("fkBuchung5", "buchung", - "spendenbescheinigung", "spendenbescheinigung", "id", "SET NULL", "NO ACTION")); } } From b2004abbac9375dfdd33c446b6d4f2f39455882c Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Mon, 22 Jul 2024 13:26:51 +0200 Subject: [PATCH 08/12] Update --- src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java | 4 ++-- .../jost_net/JVerein/server/DDLTool/Updates/Update0440.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java b/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java index 0454ebd37..2f78880e1 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java +++ b/src/de/jost_net/JVerein/server/DDLTool/AbstractDDLUpdate.java @@ -328,8 +328,8 @@ public void createForeignKeyIfNotExistsNocheck(String constraintname, String tab break; case MYSQL: { - String statement = "ALTER TABLE " + table + " ADD CONSTRAINT " + " FOREIGN KEY " - + constraintname + "(" + column + ") REFERENCES " + reftable + " (" + String statement = "ALTER TABLE " + table + " ADD CONSTRAINT " + constraintname + + " FOREIGN KEY (" + column + ") REFERENCES " + reftable + "(" + refcolumn + ") ON DELETE " + ondelete + " ON UPDATE " + onupdate + ";\n"; try diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java index 6c046c1bd..ba9f8b853 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java @@ -82,14 +82,14 @@ public void run() throws ApplicationException private void runh2() throws ApplicationException { execute(dropForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe")); - execute(createForeignKey("fkSekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + execute(createForeignKey("fk_Sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); } private void runmysql() throws ApplicationException { execute(dropForeignKey("sekundaerebeitragsgruppe_ibfk_1", "sekundaerebeitragsgruppe")); - execute(createForeignKey("fkSekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + execute(createForeignKey("fk_Sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); } From ff36cabf5e0876a25d22c406a2c62fa1af49f615 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Mon, 22 Jul 2024 13:39:19 +0200 Subject: [PATCH 09/12] Kleinschrift --- .../jost_net/JVerein/server/DDLTool/Updates/Update0440.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java index ba9f8b853..a589f2333 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0440.java @@ -82,14 +82,14 @@ public void run() throws ApplicationException private void runh2() throws ApplicationException { execute(dropForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe")); - execute(createForeignKey("fk_Sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + execute(createForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); } private void runmysql() throws ApplicationException { execute(dropForeignKey("sekundaerebeitragsgruppe_ibfk_1", "sekundaerebeitragsgruppe")); - execute(createForeignKey("fk_Sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + execute(createForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); } From 9ad880984722e3b0dbbe8adcb73fcf551b21b809 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Fri, 26 Jul 2024 08:41:16 +0200 Subject: [PATCH 10/12] Create Update0442.java --- .../server/DDLTool/Updates/Update0442.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/de/jost_net/JVerein/server/DDLTool/Updates/Update0442.java diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0442.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0442.java new file mode 100644 index 000000000..64a0e8c5a --- /dev/null +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0442.java @@ -0,0 +1,92 @@ +/********************************************************************** + * This program 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. + * + * This program 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 this program. If not, + * see . + * + **********************************************************************/ +package de.jost_net.JVerein.server.DDLTool.Updates; + +import de.jost_net.JVerein.server.DDLTool.AbstractDDLUpdate; +import de.willuhn.util.ApplicationException; +import de.willuhn.util.ProgressMonitor; + +import java.sql.Connection; + +public class Update0442 extends AbstractDDLUpdate +{ + public Update0442(String driver, ProgressMonitor monitor, Connection conn) + { + super(driver, monitor, conn); + } + + @Override + public void run() throws ApplicationException + { + if (getDriver() == DRIVER.H2) + { + runh2(); + } + else + { + try + { + runh2(); + } + catch (Exception ex) + { + runmysql(); + } + } + + execute(dropForeignKey("fkLastschrift2", "lastschrift")); + execute(createForeignKey("fkLastschrift2", "lastschrift", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkLastschrift3", "lastschrift")); + execute(createForeignKey("fkLastschrift3", "lastschrift", + "kursteilnehmer", "kursteilnehmer", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkMitgliedDokument1", "mitglieddokument")); + execute(createForeignKey("fkMitgliedDokument1", "mitglieddokument", + "referenz", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkSpendenbescheinigung2", "spendenbescheinigung")); + execute(createForeignKey("fkSpendenbescheinigung2", "spendenbescheinigung", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkWiedervorlage1", "wiedervorlage")); + execute(createForeignKey("fkWiedervorlage1", "wiedervorlage", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkZusatzabbuchung1", "zusatzabbuchung")); + execute(createForeignKey("fkZusatzabbuchung1", "zusatzabbuchung", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + + execute(dropForeignKey("fkBuchung5", "buchung")); + execute(createForeignKey("fkBuchung5", "buchung", + "spendenbescheinigung", "spendenbescheinigung", "id", "SET NULL", "NO ACTION")); + + } + + private void runh2() throws ApplicationException + { + execute(dropForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe")); + execute(createForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + } + + private void runmysql() throws ApplicationException + { + execute(dropForeignKey("sekundaerebeitragsgruppe_ibfk_1", "sekundaerebeitragsgruppe")); + execute(createForeignKey("fk_sekundaerbeitragegruppe1", "sekundaerebeitragsgruppe", + "mitglied", "mitglied", "id", "CASCADE", "NO ACTION")); + } + +} From 139f2b598ecdb69ae47dd274b3322758d73c5135 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Sat, 27 Jul 2024 09:41:19 +0200 Subject: [PATCH 11/12] =?UTF-8?q?L=C3=B6schen=20der=20Dokumente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jost_net/JVerein/server/BuchungImpl.java | 21 +++++++++++++++++++ .../jost_net/JVerein/server/MitgliedImpl.java | 20 ++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/de/jost_net/JVerein/server/BuchungImpl.java b/src/de/jost_net/JVerein/server/BuchungImpl.java index 418f8dc3b..06520c60c 100644 --- a/src/de/jost_net/JVerein/server/BuchungImpl.java +++ b/src/de/jost_net/JVerein/server/BuchungImpl.java @@ -27,6 +27,7 @@ import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung; import de.jost_net.JVerein.rmi.Abrechnungslauf; import de.jost_net.JVerein.rmi.Buchung; +import de.jost_net.JVerein.rmi.BuchungDokument; import de.jost_net.JVerein.rmi.Buchungsart; import de.jost_net.JVerein.rmi.Jahresabschluss; import de.jost_net.JVerein.rmi.Konto; @@ -37,6 +38,9 @@ import de.jost_net.JVerein.util.StringTool; import de.willuhn.datasource.db.AbstractDBObject; import de.willuhn.datasource.rmi.DBIterator; +import de.willuhn.datasource.rmi.DBService; +import de.willuhn.jameica.messaging.QueryMessage; +import de.willuhn.jameica.system.Application; import de.willuhn.logging.Logger; import de.willuhn.util.ApplicationException; @@ -695,4 +699,21 @@ public boolean isToDelete() { return delete; } + + @Override + public void delete() throws RemoteException, ApplicationException + { + DBService service = Einstellungen.getDBService(); + DBIterator docs = service.createList(BuchungDokument.class); + docs.addFilter("referenz = ?", new Object[] { this.getID() }); + while (docs.hasNext()) + { + QueryMessage qm = new QueryMessage( + ((BuchungDokument) docs.next()).getUUID(), null); + Application.getMessagingFactory().getMessagingQueue( + "jameica.messaging.del").sendSyncMessage(qm); + } + super.delete(); + } + } diff --git a/src/de/jost_net/JVerein/server/MitgliedImpl.java b/src/de/jost_net/JVerein/server/MitgliedImpl.java index dc3e769ec..1ef182429 100644 --- a/src/de/jost_net/JVerein/server/MitgliedImpl.java +++ b/src/de/jost_net/JVerein/server/MitgliedImpl.java @@ -37,6 +37,7 @@ import de.jost_net.JVerein.rmi.Beitragsgruppe; import de.jost_net.JVerein.rmi.Felddefinition; import de.jost_net.JVerein.rmi.Mitglied; +import de.jost_net.JVerein.rmi.MitgliedDokument; import de.jost_net.JVerein.rmi.Mitgliedfoto; import de.jost_net.JVerein.rmi.Zusatzfelder; import de.jost_net.JVerein.util.Datum; @@ -48,7 +49,10 @@ import de.jost_net.OBanToo.SEPA.SEPAException.Fehler; import de.willuhn.datasource.db.AbstractDBObject; import de.willuhn.datasource.rmi.DBIterator; +import de.willuhn.datasource.rmi.DBService; import de.willuhn.datasource.rmi.ResultSetExtractor; +import de.willuhn.jameica.messaging.QueryMessage; +import de.willuhn.jameica.system.Application; import de.willuhn.logging.Logger; import de.willuhn.util.ApplicationException; @@ -1236,4 +1240,20 @@ private Date toDate(String datum) return d; } + @Override + public void delete() throws RemoteException, ApplicationException + { + DBService service = Einstellungen.getDBService(); + DBIterator docs = service.createList(MitgliedDokument.class); + docs.addFilter("referenz = ?", new Object[] { this.getID() }); + while (docs.hasNext()) + { + QueryMessage qm = new QueryMessage( + ((MitgliedDokument) docs.next()).getUUID(), null); + Application.getMessagingFactory().getMessagingQueue( + "jameica.messaging.del").sendSyncMessage(qm); + } + super.delete(); + } + } From 25b8313dc41fb4df8c0e33ea64db1b704ac48e0b Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Tue, 20 Aug 2024 13:18:20 +0200 Subject: [PATCH 12/12] Update Update0443.java --- .../DDLTool/Updates/{Update0442.java => Update0443.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/de/jost_net/JVerein/server/DDLTool/Updates/{Update0442.java => Update0443.java} (96%) diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0442.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0443.java similarity index 96% rename from src/de/jost_net/JVerein/server/DDLTool/Updates/Update0442.java rename to src/de/jost_net/JVerein/server/DDLTool/Updates/Update0443.java index 64a0e8c5a..9c083a867 100644 --- a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0442.java +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0443.java @@ -19,9 +19,9 @@ import java.sql.Connection; -public class Update0442 extends AbstractDDLUpdate +public class Update0443 extends AbstractDDLUpdate { - public Update0442(String driver, ProgressMonitor monitor, Connection conn) + public Update0443(String driver, ProgressMonitor monitor, Connection conn) { super(driver, monitor, conn); }