Author: bpapez
Date: Sun Jul 29 19:11:09 2007
New Revision: 18066
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18066&repname=
=3Djahia
Log:
UNIL-10, UNIL-11: Errors due to backporting some code from Jahia 5, where t=
he misbehavior is also appearing, but has not been detected yet. Changed th=
e SQL back to the original Jahia 4 version, but slightly optimized the filt=
ering. If it is working, this fix has to be applied to Jahia 5, too.
Modified:
branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/containers/JahiaC=
ontainerUtilsDB.java
Modified: branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/containers/=
JahiaContainerUtilsDB.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-4-1-BR=
ANCH/src/java/org/jahia/services/containers/JahiaContainerUtilsDB.java&rev=
=3D18066&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/containers/JahiaC=
ontainerUtilsDB.java (original)
+++ branches/JAHIA-4-1-BRANCH/src/java/org/jahia/services/containers/JahiaC=
ontainerUtilsDB.java Sun Jul 29 19:11:09 2007
@@ -25,6 +25,7 @@
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
+import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
=
@@ -975,10 +976,10 @@
.prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, rank_jahia_ctn_entries FROM jahia_ctn_entries ORDER BY rank_=
jahia_ctn_entries");
} else if (loadVersion.isStaging()) {
stmt =3D dbConn
- .prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, version_id, rank_jahia_ctn_entries, workflow_state FROM jahi=
a_ctn_entries WHERE workflow_state>=3D1 ORDER BY rank_jahia_ctn_entries, wo=
rkflow_state DESC, id_jahia_ctn_entries");
+ .prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, version_id, rank_jahia_ctn_entries, workflow_state FROM jahi=
a_ctn_entries WHERE workflow_state>=3D1 ORDER BY id_jahia_ctn_entries, work=
flow_state DESC");
} else if (loadVersion.isVersioned() && !compareMode) {
stmt =3D dbConn
- .prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, version_id, rank_jahia_ctn_entries FROM jahia_ctn_entries WH=
ERE workflow_state<=3D1 AND version_id<=3D? ORDER BY rank_jahia_ctn_entries=
, id_jahia_ctn_entries, version_id DESC");
+ .prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, version_id, rank_jahia_ctn_entries FROM jahia_ctn_entries WH=
ERE workflow_state<=3D1 AND version_id<=3D? ORDER BY id_jahia_ctn_entries, =
version_id DESC");
stmt.setInt(1, loadVersion.getVersionID());
} else {
stmt =3D dbConn
@@ -992,11 +993,11 @@
stmt.setInt(1, listID);
} else if (loadVersion.isStaging()) {
stmt =3D dbConn
- .prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, version_id, rank_jahia_ctn_entries, workflow_state FROM jah=
ia_ctn_entries WHERE listid_jahia_ctn_entries=3D? AND workflow_state>=3D1 O=
RDER BY rank_jahia_ctn_entries, workflow_state DESC, id_jahia_ctn_entries");
+ .prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, version_id, rank_jahia_ctn_entries, workflow_state FROM jah=
ia_ctn_entries WHERE listid_jahia_ctn_entries=3D? AND workflow_state>=3D1 O=
RDER BY id_jahia_ctn_entries, workflow_state DESC");
stmt.setInt(1, listID);
} else if (loadVersion.isVersioned() && !compareMode) {
stmt =3D dbConn
- .prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, version_id, rank_jahia_ctn_entries FROM jahia_ctn_entries W=
HERE listid_jahia_ctn_entries=3D? AND workflow_state<=3D1 AND version_id<=
=3D? ORDER BY rank_jahia_ctn_entries, id_jahia_ctn_entries, version_id DESC=
");
+ .prepareStatement("SELECT DISTINCT id_jahi=
a_ctn_entries, version_id, rank_jahia_ctn_entries FROM jahia_ctn_entries W=
HERE listid_jahia_ctn_entries=3D? AND workflow_state<=3D1 AND version_id<=
=3D? ORDER BY id_jahia_ctn_entries, version_id DESC");
stmt.setInt(1, listID);
stmt.setInt(2, loadVersion.getVersionID());
} else {
@@ -1006,34 +1007,40 @@
}
}
rs =3D stmt.executeQuery();
- Set deletedInStaging =3D null;
- Set addedCtnIds =3D null;
- if (loadVersion !=3D null && loadVersion.isStaging()) {
- addedCtnIds =3D new HashSet(); =
- if (!loadVersion.isWithMarkedForDeletion()) {
- deletedInStaging =3D new HashSet();
- }
- }
- int rank =3D 0;
- int prevRank =3D 0; =
- while (rs.next()) {
- Integer ctnID =3D new Integer(rs.getInt(1));
- =
- if (loadVersion !=3D null && loadVersion.isStaging()) {
- long version =3D rs.getLong(2);
- rank =3D rs.getInt (3); =
- if (!addedCtnIds.contains(ctnID) && (rank =3D=3D 0=
|| rank !=3D prevRank) && !loadVersion.isWithMarkedForDeletion() && !delet=
edInStaging.contains(ctnID) && version > -1) {
- result.add(ctnID);
+ if (loadVersion !=3D null && (loadVersion.isStaging() || (=
loadVersion.isVersioned() && !compareMode))) {
+ Set addedCtnIds =3D new HashSet();
+ List sortedRanks =3D new ArrayList();
+ Integer previousCtnID =3D new Integer(-2);
+
+ while (rs.next()) {
+ Integer ctnID =3D new Integer(rs.getInt(1));
+
+ if (!addedCtnIds.contains(ctnID) && !previousCtnID=
.equals(ctnID)
+ && (loadVersion.isWithMarkedForDeletion() =
|| rs.getLong(2) !=3D -1)) {
+ int rank =3D rs.getInt(3); =
=
+ if (rank !=3D 0) {
+ int index =3D 0;
+ int size =3D sortedRanks.size();
+ while (index < size && ((Integer) sortedRa=
nks.get(index)).intValue() < rank) {
+ index++;
+ }
+ =
+ sortedRanks.add(index, new Integer(rank));
+ result.add(index, ctnID);
+ } else {
+ result.add(ctnID);
+ }
+
addedCtnIds.add(ctnID);
- } else if (!loadVersion.isWithMarkedForDeletion() =
&& !compareMode && version =3D=3D -1) {
- deletedInStaging.add(ctnID);
}
- } else {
- result.add(ctnID);
+ previousCtnID =3D ctnID;
+ }
+ } else {
+ while (rs.next()) {
+ result.add(new Integer(rs.getInt(1)));
}
- prevRank =3D rank;
}
- theList =3D new Vector(result);
+ theList =3D new Vector(result); =
rs.close();
=
} catch (SQLException se) {
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list