← Back to team overview

slub.team team mailing list archive

[Merge] lp:~slub.team/goobi-production/bug-1043811 into lp:goobi-production

 

Ralf Claussnitzer has proposed merging lp:~slub.team/goobi-production/bug-1043811 into lp:goobi-production.

Requested reviews:
  Matthias Ronge (matthias-ronge)
Related bugs:
  Bug #1043811 in Goobi.Production: "Filter stays active until logout"
  https://bugs.launchpad.net/goobi-production/+bug/1043811

For more details, see:
https://code.launchpad.net/~slub.team/goobi-production/bug-1043811/+merge/131398

Reopened and fixed differently.
-- 
https://code.launchpad.net/~slub.team/goobi-production/bug-1043811/+merge/131398
Your team Saxon State Library Team is subscribed to branch lp:goobi-production.
=== modified file 'src-dubious/dubious/sub/goobi/helper/Page.java'
--- src-dubious/dubious/sub/goobi/helper/Page.java	2012-09-07 08:38:28 +0000
+++ src-dubious/dubious/sub/goobi/helper/Page.java	2012-10-25 13:09:56 +0000
@@ -128,6 +128,7 @@
 			results = criteria.setFirstResult(page * pageSize).setMaxResults(pageSize + 1).list();
 			return hasNextPage() ? results.subList(0, pageSize) : results;
 		} catch (HibernateException e) {
+			logger.error(e);
 			return results;
 		}
 	}

=== modified file 'src/de/sub/goobi/forms/ProzessverwaltungForm.java'
--- src/de/sub/goobi/forms/ProzessverwaltungForm.java	2012-04-24 13:22:01 +0000
+++ src/de/sub/goobi/forms/ProzessverwaltungForm.java	2012-10-25 13:09:56 +0000
@@ -350,12 +350,10 @@
 			order = Order.desc("titel");
 
 		if (sortierung.equals("projektAsc")) {
-			inCrit.createCriteria("projekt", "proj");
 			order = Order.asc("proj.titel");
 		}
 
 		if (sortierung.equals("projektDesc")) {
-			inCrit.createCriteria("projekt", "proj");
 			order = Order.desc("proj.titel");
 		}
 

=== modified file 'src/org/goobi/production/flow/statistics/hibernate/FilterHelper.java'
--- src/org/goobi/production/flow/statistics/hibernate/FilterHelper.java	2012-09-07 10:03:24 +0000
+++ src/org/goobi/production/flow/statistics/hibernate/FilterHelper.java	2012-10-25 13:09:56 +0000
@@ -475,11 +475,27 @@
 		// restrictions apply, to avoid multiple analysis
 		// of the criteria it is only done here once and
 		// to set flags which are subsequently used
-		Boolean flagSteps = crit.getClassName().equals(Schritt.class.getName());
-		Boolean flagProcesses = crit.getClassName().equals(Prozess.class.getName());
+		Boolean flagSteps = false;
+		Boolean flagProcesses = false;
+		@SuppressWarnings("unused")
+		Boolean flagSetCritProjects = false;
+
+		if (crit.getClassName() == Prozess.class.getName()) {
+			flagProcesses = true;
+		}
+
+		if (crit.getClassName() == Schritt.class.getName()) {
+			flagSteps = true;
+		}
+
+		// keeping a reference to the passed criteria
+		Criteria inCrit = crit;
+		@SuppressWarnings("unused")
+		Criteria critProject = null;
+		Criteria critProcess = null;
 
 		// to collect and return feedback about erroneous use of filter expressions
-		String message = "";
+		String message = new String("");
 		
 		StrTokenizer tokenizer = new StrTokenizer(inFilter, ' ', '\"');
 
@@ -499,6 +515,7 @@
 			// happens if user has admin rights
 			if (conjProjects.toString().equals("()")) {
 				conjProjects = null;
+				flagSetCritProjects = true;
 			}
 		}
 
@@ -519,9 +536,11 @@
 		if (isTemplate != null) {
 			conjProcesses = Restrictions.conjunction();
 			if (!isTemplate) {
-				conjProcesses.add(Restrictions.eq("istTemplate", false));
+				conjProcesses.add(Restrictions.eq("istTemplate", Boolean
+						.valueOf(false)));
 			} else {
-				conjProcesses.add(Restrictions.eq("istTemplate", true));
+				conjProcesses.add(Restrictions.eq("istTemplate", Boolean
+						.valueOf(true)));
 			}
 		}
 
@@ -641,44 +660,68 @@
 		}
 
 		if (conjProcesses != null || flagSteps) {
-			if (flagProcesses) {
-				crit.add(conjProcesses);
+			if (!flagProcesses) {
+				critProcess = crit.createCriteria("prozess", "proc");
+
+				if (conjProcesses != null) {
+
+					critProcess.add(conjProcesses);
+				}
+			} else {
+				if (conjProcesses != null) {
+					inCrit.add(conjProcesses);
+				}
 			}
 		}
 
-		if (conjProjects != null) {
-			if (!flagSteps) {
-				crit.createCriteria("projekt", "proj");
-			}
-			crit.add(conjProjects);
+		if (flagSteps) {
+			critProject = critProcess.createCriteria("projekt", "proj");
+			if (conjProjects != null) {
+				inCrit.add(conjProjects);
+			}
+		} else {
+			inCrit.createCriteria("projekt", "proj");
+			if (conjProjects != null) {
+				inCrit.add(conjProjects);
+			}
 		}
 
 		if (conjSteps != null) {
 			if (!flagSteps) {
 				crit.createCriteria("schritte", "steps");
+				crit.add(conjSteps);
+			} else {
+
+				inCrit.add(conjSteps);
 			}
-			crit.add(conjSteps);
 		}
 
 		if (conjTemplates != null) {
-			if (!flagSteps){
+			if (flagSteps){
+				critProcess.createCriteria("vorlagen", "vorl");
+				critProcess.createAlias("vorl.eigenschaften", "vorleig");
+				critProcess.add(conjTemplates);
+			}else{
 				crit.createCriteria("vorlagen", "vorl");
 				crit.createAlias("vorl.eigenschaften", "vorleig");
-				crit.add(conjTemplates);
+				inCrit.add(conjTemplates);
 			}
 		}
 
 		if (conjWorkPiece != null) {
-			if (!flagSteps){
+			if (flagSteps){
+				critProcess.createCriteria("werkstuecke", "werk");
+				critProcess.createAlias("werk.eigenschaften", "werkeig");
+				critProcess.add(conjWorkPiece);
+			}else{
 				crit.createCriteria("werkstuecke", "werk");
 				crit.createAlias("werk.eigenschaften", "werkeig");
-				crit.add(conjWorkPiece);
+				inCrit.add(conjWorkPiece);
 			}
 		}
-
 		if (conjUsers != null) {
 			crit.createCriteria("benutzer", "user");
-			crit.add(conjUsers);
+			inCrit.add(conjUsers);
 		}
 
 		return message;

=== modified file 'src/org/goobi/production/flow/statistics/hibernate/UserDefinedFilter.java'
--- src/org/goobi/production/flow/statistics/hibernate/UserDefinedFilter.java	2012-02-22 11:26:21 +0000
+++ src/org/goobi/production/flow/statistics/hibernate/UserDefinedFilter.java	2012-10-25 13:09:56 +0000
@@ -223,6 +223,14 @@
 		Session session = Helper.getHibernateSession();
 		PaginatingCriteria crit = new PaginatingCriteria(Prozess.class, session);
 
+		// TODO Remove workaround for bug fix https://bugs.launchpad.net/goobi-production/+bug/1043811
+		//
+		// When sorting the list of processes, a criteria including projekt is missing.
+		// There are basically to places, where this criteria gets added. One is in
+		// org.goobi.production.flow.statistics.hibernate.FilterHelper. The second place is
+		// this method.
+		crit.createCriteria("projekt", "proj");
+
 		crit.add(Restrictions.in("id", myIds));
 		return crit;
 	}


Follow ups