From a109c509843f6298eca26869d1390ef7233efe31 Mon Sep 17 00:00:00 2001 From: Oscar Gonzalez Fernandez Date: Sun, 20 Apr 2014 18:07:47 +0200 Subject: [PATCH] Performance improvement When calculating the load ratio of each resource, a new transaction is being created for each one. Now one transaction is reused for everyone, which gives a good performance boost when loading the `Advanced search`. --- .../search/AllocationSelectorController.java | 4 ++++ .../NewAllocationSelectorController.java | 18 +++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/search/AllocationSelectorController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/search/AllocationSelectorController.java index 15e9e8ab5..b428a2b31 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/search/AllocationSelectorController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/search/AllocationSelectorController.java @@ -23,6 +23,7 @@ package org.libreplan.web.resources.search; import java.util.List; +import org.libreplan.business.common.IAdHocTransactionService; import org.libreplan.business.resources.daos.IResourceLoadRatiosCalculator; import org.libreplan.business.resources.daos.IResourcesSearcher; import org.libreplan.business.resources.entities.Criterion; @@ -42,6 +43,9 @@ public abstract class AllocationSelectorController extends // injected by name protected IResourcesSearcher resourcesSearcher; + // injected by name + protected IAdHocTransactionService adHocTransactionService; + // injected by name protected IResourceLoadRatiosCalculator resourceLoadRatiosCalculator; diff --git a/libreplan-webapp/src/main/java/org/libreplan/web/resources/search/NewAllocationSelectorController.java b/libreplan-webapp/src/main/java/org/libreplan/web/resources/search/NewAllocationSelectorController.java index 4fac1d644..bf76254f5 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/web/resources/search/NewAllocationSelectorController.java +++ b/libreplan-webapp/src/main/java/org/libreplan/web/resources/search/NewAllocationSelectorController.java @@ -38,6 +38,7 @@ import java.util.Set; import org.apache.commons.lang.Validate; import org.joda.time.LocalDate; +import org.libreplan.business.common.IOnTransaction; import org.libreplan.business.resources.daos.IResourceLoadRatiosCalculator.ILoadRatiosDataType; import org.libreplan.business.resources.daos.IResourcesSearcher.IResourcesQuery; import org.libreplan.business.resources.entities.Criterion; @@ -394,14 +395,25 @@ public class NewAllocationSelectorController extends public void clearAll() { } - public void open(LocalDate start, LocalDate end) { + public void open(final LocalDate start, final LocalDate end) { setStartFilteringDate(start); setEndFilteringDate(end); - refreshListBoxResources(); clearSelection(listBoxResources); clearSelection(criterionsTree); - criterionsTree.setModel(getCriterions()); + + + adHocTransactionService + .runOnReadOnlyTransaction(new IOnTransaction() { + @Override + public Void execute() { + refreshListBoxResources(); + criterionsTree.setModel(getCriterions()); + + return null; + } + }); + doInitialSelection(); }