Author: bpapez
Date: Tue May 15 16:19:03 2007
New Revision: 17309

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D17309&repname=
=3Djahia
Log:
performance improvement:  use hashset to check, whether the object has alre=
ady been added to the list

Modified:
    branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/manager/=
JahiaContainerManager.java

Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/ma=
nager/JahiaContainerManager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.jav=
a&rev=3D17309&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-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/manager/=
JahiaContainerManager.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/hibernate/manager/=
JahiaContainerManager.java Tue May 15 16:19:03 2007
@@ -287,66 +287,52 @@
         }
         if (retval =3D=3D null) {
             if (fromAllLists) {
-                if (loadVersion =3D=3D null) {
+                if (loadVersion =3D=3D null || loadVersion.isVersioned() &=
& compareMode) {
                     retval =3D dao.getAllContainerIds();
                 } else if (loadVersion.isStaging()) {
                     if (loadVersion.isWithMarkedForDeletion()) {
                         retval =3D dao.getAllStagingContainerIds();
                     } else {
-                        List list =3D dao.getAllNonDeletedStagingContainer=
Ids();
-                        retval =3D new ArrayList(list.size());
-                        List deletedInStaging =3D new ArrayList(list.size(=
));
-                        for (int i =3D 0; i < list.size(); i++) {
-                            Object[] objects =3D (Object[]) list.get(i);
-                            long version =3D ((Long) objects[1]).longValue=
();
-                            if (!deletedInStaging.contains(objects[0]) &&
-                                !retval.contains(objects[0]) && version > =
-1) {
-                                    retval.add(objects[0]);
-                            } else if(!compareMode && version=3D=3D-1) {
-                                deletedInStaging.add(objects[0]);
-                            }
-                        }
+                        retval =3D dao.getAllNonDeletedStagingContainerIds=
();
                     }
-                } else if (loadVersion.isVersioned()) {
-                    if ( !compareMode ){
+                } else if (loadVersion.isVersioned() && !compareMode) {
                     retval =3D dao.getAllVersionedContainerIds(new Long(lo=
adVersion.getVersionID()));
                 } else {
-                        retval =3D dao.getAllContainerIds();
-                    }
-                } else {
                     retval =3D dao.getAllPublishedContainerIds();
                 }
             } else {
                 Integer id =3D new Integer(listID);
-                if (loadVersion =3D=3D null) {
+                if (loadVersion =3D=3D null || loadVersion.isVersioned() &=
& compareMode) {
                     retval =3D dao.getAllContainerIdsFromList(id);
                 } else if (loadVersion.isStaging()) {
                     if (loadVersion.isWithMarkedForDeletion()) {
                         retval =3D dao.getStagingContainerIdsFromList(id);
                     } else {
-                        List list =3D dao.getNonDeletedStagingContainerIds=
FromList(id);
-                        retval =3D new ArrayList(list.size());
-                        List deletedInStaging =3D new ArrayList(list.size(=
));
-                        for (int i =3D 0; i < list.size(); i++) {
-                            Object[] objects =3D (Object[]) list.get(i);
-                            long version =3D ((Long) objects[1]).longValue=
();
-                            if (!deletedInStaging.contains(objects[0]) && =
!retval.contains(objects[0])
-                                    && version > -1) {
-                                    retval.add(objects[0]);
-                            } else if(!compareMode && version=3D=3D-1) {
-                                deletedInStaging.add(objects[0]);
-                            }
-                        }
+                        retval =3D dao.getNonDeletedStagingContainerIdsFro=
mList(id);
                     }
-                } else if (loadVersion.isVersioned()) {
-                    if ( !compareMode ){
+                } else if (loadVersion.isVersioned() && !compareMode ){
                     retval =3D dao.getVersionedContainerIdsFromList(id, ne=
w Long(loadVersion.getVersionID()));
                 } else {
-                        retval =3D dao.getAllContainerIdsFromList(id);
-                    }
-                } else {
                     retval =3D dao.getPublishedContainerIdsFromList(id);
                 }
+                if (loadVersion !=3D null && loadVersion.isStaging() && !l=
oadVersion.isWithMarkedForDeletion()) {
+                       List list =3D retval;
+                                       retval =3D new ArrayList(list.size());
+                                       Set addedCtnIds =3D new HashSet();
+                                       Set deletedInStaging =3D new HashSet();
+                                       =

+                                       for (int i =3D 0; i < list.size(); i++) 
{
+                                               Object[] objects =3D (Object[]) 
list.get(i);
+                                               long version =3D ((Long) 
objects[1]).longValue();
+                                               if 
(!deletedInStaging.contains(objects[0])
+                                                               && 
!addedCtnIds.contains(objects[0]) && version > -1) {
+                                                       retval.add(objects[0]);
+                                                       
addedCtnIds.add(objects[0]);
+                                               } else if (!compareMode && 
version =3D=3D -1) {
+                                                       
deletedInStaging.add(objects[0]);
+                                               }
+                                       }
+                }
             }
             if(!compareMode && cache!=3Dnull && !(loadVersion !=3D null &&=
 loadVersion.getWorkflowState()<=3DEntryLoadRequest.VERSIONED_WORKFLOW_STAT=
E)) {
                 cache.put(cacheKey,retval);

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to