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