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