slub.team team mailing list archive
-
slub.team team
-
Mailing list archive
-
Message #00411
[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