← Back to team overview

slub.team team mailing list archive

[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