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

Reply via email to