slub.team team mailing list archive
-
slub.team team
-
Mailing list archive
-
Message #00396
[Merge] lp:~slub.team/goobi-production/bug-1021304 into lp:goobi-production
Ralf Claussnitzer has proposed merging lp:~slub.team/goobi-production/bug-1021304 into lp:goobi-production.
Requested reviews:
Henning Gerhardt (henning-gerhardt)
Related bugs:
Bug #1021304 in Goobi.Production: "no plausibility check for rule sets"
https://bugs.launchpad.net/goobi-production/+bug/1021304
For more details, see:
https://code.launchpad.net/~slub.team/goobi-production/bug-1021304/+merge/125185
Not the most elegant solution, but close to usual behavior right now.
--
https://code.launchpad.net/~slub.team/goobi-production/bug-1021304/+merge/125185
Your team Saxon State Library Team is subscribed to branch lp:goobi-production.
=== modified file 'config/messages_de.properties'
--- config/messages_de.properties 2012-09-06 08:32:30 +0000
+++ config/messages_de.properties 2012-09-19 12:38:56 +0000
@@ -572,6 +572,8 @@
regelsaetze=Regels\u00E4tze
regelsatz=Regelsatz
regelsatzBearbeiten=Regelsatz bearbeiten
+regelsatzDateiNichtGefunden=Die angegebende Regelsatzdatei konnte nicht gefunden werden.
+regelsatzNichtLoeschbar=Regelsatz ist noch mit Projekten verkn\u00FCpft und kann nicht gel\u00F6scht werden.
reihenfolge=Reihenfolge
relativeAnzahl=Relative Anzahl
removeFilter=Filter entfernen
=== modified file 'config/messages_en.properties'
--- config/messages_en.properties 2012-09-06 08:32:30 +0000
+++ config/messages_en.properties 2012-09-19 12:38:56 +0000
@@ -572,6 +572,8 @@
regelsaetze=Rule sets
regelsatz=Rule set
regelsatzBearbeiten=Edit rule set
+regelsatzNichtLoeschbar=Ruleset is still referenced in processes and cannot be deleted.
+regelsatzDateiNichtGefunden=The given ruleset file cannot be found.
reihenfolge=Order
relativeAnzahl=Relative number
removeFilter=Remove filter from list
=== modified file 'src/de/sub/goobi/forms/RegelsaetzeForm.java'
--- src/de/sub/goobi/forms/RegelsaetzeForm.java 2012-03-10 13:33:00 +0000
+++ src/de/sub/goobi/forms/RegelsaetzeForm.java 2012-09-19 12:38:56 +0000
@@ -22,18 +22,23 @@
package de.sub.goobi.forms;
+import de.sub.goobi.beans.Regelsatz;
+import de.sub.goobi.config.ConfigMain;
+import de.sub.goobi.helper.Helper;
+import de.sub.goobi.helper.exceptions.DAOException;
+import de.sub.goobi.persistence.RegelsatzDAO;
+
import dubious.sub.goobi.helper.Page;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
-import de.sub.goobi.beans.Regelsatz;
-import de.sub.goobi.persistence.RegelsatzDAO;
-import de.sub.goobi.helper.Helper;
-import de.sub.goobi.helper.exceptions.DAOException;
-
public class RegelsaetzeForm extends BasisForm {
private static final long serialVersionUID = -445707928042517243L;
private Regelsatz myRegelsatz = new Regelsatz();
@@ -47,18 +52,33 @@
public String Speichern() {
try {
- dao.save(myRegelsatz);
- return "RegelsaetzeAlle";
- } catch (DAOException e) {
+ if (hasValidRulesetFilePath(myRegelsatz, ConfigMain.getParameter("RegelsaetzeVerzeichnis"))) {
+ dao.save(myRegelsatz);
+ return "RegelsaetzeAlle";
+ } else {
+ Helper.setFehlerMeldung("regelsatzDateiNichtGefunden");
+ }
+ } catch (Exception e) {
Helper.setFehlerMeldung("fehlerNichtSpeicherbar", e.getMessage());
logger.error(e);
- return "";
}
+ return "";
+ }
+
+ private boolean hasValidRulesetFilePath(Regelsatz r, String pathToRulesets) {
+ File rulesetFile = new File(pathToRulesets + r.getDatei());
+ return rulesetFile.exists();
}
public String Loeschen() {
try {
- dao.remove(myRegelsatz);
+ if (dao.hasAssignedProcesses(myRegelsatz)) {
+ Helper.setFehlerMeldung("regelsatzNichtLoeschbar");
+ return "";
+ } else {
+ dao.remove(myRegelsatz);
+ }
+
} catch (DAOException e) {
Helper.setFehlerMeldung("fehlerNichtLoeschbar", e.getMessage());
return "";
=== modified file 'src/de/sub/goobi/persistence/RegelsatzDAO.java'
--- src/de/sub/goobi/persistence/RegelsatzDAO.java 2012-03-28 12:22:36 +0000
+++ src/de/sub/goobi/persistence/RegelsatzDAO.java 2012-09-19 12:38:56 +0000
@@ -22,10 +22,13 @@
package de.sub.goobi.persistence;
-import java.util.List;
-
import de.sub.goobi.beans.Regelsatz;
+import de.sub.goobi.helper.Helper;
import de.sub.goobi.helper.exceptions.DAOException;
+import org.hibernate.Query;
+import org.hibernate.StatelessSession;
+
+import java.util.List;
public class RegelsatzDAO extends BaseDAO {
@@ -51,6 +54,19 @@
removeObj(t);
}
+ public boolean hasAssignedProcesses(Regelsatz r) {
+ StatelessSession newSession = Helper.getHibernateSession().getSessionFactory().openStatelessSession();
+ Boolean result = false;
+ try {
+ Query q = newSession.createQuery("select count(*) from Prozess as p where p.regelsatz = :regelsatz");
+ q.setEntity("regelsatz", r);
+ result = ((Long) q.uniqueResult()) > 0;
+ } finally {
+ newSession.close();
+ }
+ return result;
+ }
+
public void remove(Integer id) throws DAOException {
removeObj(Regelsatz.class, id);
}
Follow ups