Author: bpapez
Date: Fri Jun 15 14:35:00 2007
New Revision: 17590

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

Modified:
    trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava

Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerMan=
ager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaContainerManager.java&rev=3D17590&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
--- trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava Fri Jun 15 14:35:00 2007
@@ -287,67 +287,53 @@
         }
         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() && !loadV=
ersion.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);
             }
@@ -502,53 +488,53 @@
         int diffVersionID =3D Jahia.getThreadParamBean().getDiffVersionID(=
);
 =

         if ( jahiaContainer =3D=3D null ){
-        try {
-            if ( request =3D=3D null ){
-                jahiaContainer =3D convertToOldJahiaContainer(dao.loadPubl=
ishedContainer(new Integer(containerId)));
-            } else if ( request.isCurrent() ){
-                //jahiaContainer =3D convertToOldJahiaContainer(dao.loadPu=
blishedContainer(new Integer(containerId)));
-                if ( cache =3D=3D null ){
+            try {
+                if ( request =3D=3D null ){
                     jahiaContainer =3D convertToOldJahiaContainer(dao.load=
PublishedContainer(new Integer(containerId)));
-                } else {
-                    if ( enableBatchLoading ){
-                        jahiaContainer =3D handleBatchLoading(containerId,
+                } else if ( request.isCurrent() ){
+                    //jahiaContainer =3D convertToOldJahiaContainer(dao.lo=
adPublishedContainer(new Integer(containerId)));
+                    if ( cache =3D=3D null ){
+                        jahiaContainer =3D convertToOldJahiaContainer(dao.=
loadPublishedContainer(new Integer(containerId)));
+                    } else {
+                        if ( enableBatchLoading ){
+                            jahiaContainer =3D handleBatchLoading(containe=
rId,
                             dao.loadPublishedContainer(new Integer(contain=
erId),
                                     Jahia.getSettings().getBatchLoadingSiz=
e()), cache, request,
-                            checkCompareMode, compareMode);
-                    } else {
-                        jahiaContainer =3D convertToOldJahiaContainer(dao.=
loadPublishedContainer(new Integer(containerId)));
+                                checkCompareMode, compareMode);
+                        } else {
+                            jahiaContainer =3D convertToOldJahiaContainer(=
dao.loadPublishedContainer(new Integer(containerId)));
+                        }
                     }
-                }
-            } else if (request.isStaging()) {
-                /*
-                jahiaContainer =3D convertToOldJahiaContainer(dao.loadStag=
ingContainer(new Integer(containerId),
-                        request));*/
-                if ( cache =3D=3D null ){
-                    jahiaContainer =3D convertToOldJahiaContainer(dao.load=
StagingContainer(new Integer(containerId),
-                            request));
-                } else {
+                } else if (request.isStaging()) {
                     /*
                     jahiaContainer =3D convertToOldJahiaContainer(dao.load=
StagingContainer(new Integer(containerId),
                             request));*/
-                    if ( enableBatchLoading ){
-                        jahiaContainer =3D handleBatchLoading(containerId,
-                            dao.loadStagingContainer(new Integer(container=
Id),request,
-                                    Jahia.getSettings().getBatchLoadingSiz=
e()), cache, request,
-                            checkCompareMode, compareMode);
-                    } else {
+                    if ( cache =3D=3D null ){
                         jahiaContainer =3D convertToOldJahiaContainer(dao.=
loadStagingContainer(new Integer(containerId),
                                 request));
+                    } else {
+                        /*
+                        jahiaContainer =3D convertToOldJahiaContainer(dao.=
loadStagingContainer(new Integer(containerId),
+                                request));*/
+                        if ( enableBatchLoading ){
+                            jahiaContainer =3D handleBatchLoading(containe=
rId,
+                            dao.loadStagingContainer(new Integer(container=
Id),request,
+                                    Jahia.getSettings().getBatchLoadingSiz=
e()), cache, request,
+                                checkCompareMode, compareMode);
+                        } else {
+                            jahiaContainer =3D convertToOldJahiaContainer(=
dao.loadStagingContainer(new Integer(containerId),
+                                    request));
+                        }
                     }
-                }
-            } else if (request.isDeleted()) {
-                jahiaContainer =3D convertToOldJahiaContainer(dao.loadDele=
tedContainer(new Integer(containerId)));
-            } else if (request.isVersioned()) {
-                jahiaContainer =3D convertToOldJahiaContainer(dao.loadVers=
ionedContainer(new Integer(containerId),
+                } else if (request.isDeleted()) {
+                    jahiaContainer =3D convertToOldJahiaContainer(dao.load=
DeletedContainer(new Integer(containerId)));
+                } else if (request.isVersioned()) {
+                    jahiaContainer =3D convertToOldJahiaContainer(dao.load=
VersionedContainer(new Integer(containerId),
                                                                           =
                 request));
+                }
+            } catch (ObjectRetrievalFailureException e) {
+                log.warn("Container not found for id " + containerId, e);
             }
-        } catch (ObjectRetrievalFailureException e) {
-            log.warn("Container not found for id " + containerId, e);
-        }
         }
         if (cache !=3D null && request !=3D null && !request.isVersioned()=
 && !request.isDeleted() && jahiaContainer !=3D null
                 && jahiaContainer.getWorkflowState()>=3DEntryLoadRequest.A=
CTIVE_WORKFLOW_STATE
@@ -575,7 +561,7 @@
                                 && container.getVersionID() =3D=3D EntryLo=
adRequest.DELETED_WORKFLOW_STATE) ){
                     jahiaContainer =3D null;
                 }
-        }
+            }
         } else if ( jahiaContainer =3D=3D null && checkCompareMode ){
             if ( compareMode ){
                 EntryLoadRequest staged =3D (EntryLoadRequest)EntryLoadReq=
uest.STAGED.clone();

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

Reply via email to