From 23f89f07363f9897ed6940d54c5b4cb98c866648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Thu, 9 Sep 2010 03:14:23 +0200 Subject: [PATCH] Use mechanism for auto updating snapshots of data in OrderElementsMultipleFiltersFinder FEA: ItEr60S04ValidacionEProbasFuncionaisItEr59S04 --- .../OrderElementsMultipleFiltersFinder.java | 98 +++++++++++-------- 1 file changed, 58 insertions(+), 40 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrderElementsMultipleFiltersFinder.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrderElementsMultipleFiltersFinder.java index c84d462fb..ccda9f07a 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrderElementsMultipleFiltersFinder.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/common/components/finders/OrderElementsMultipleFiltersFinder.java @@ -25,14 +25,15 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.concurrent.Callable; import org.apache.commons.lang.StringUtils; -import org.navalplanner.business.common.IOnTransaction; +import org.navalplanner.business.hibernate.notification.IAutoUpdatedSnapshot; +import org.navalplanner.business.hibernate.notification.ReloadOn; import org.navalplanner.business.labels.daos.ILabelDAO; import org.navalplanner.business.labels.daos.ILabelTypeDAO; import org.navalplanner.business.labels.entities.Label; import org.navalplanner.business.labels.entities.LabelType; -import org.navalplanner.business.orders.entities.OrderStatusEnum; import org.navalplanner.business.resources.daos.ICriterionDAO; import org.navalplanner.business.resources.daos.ICriterionTypeDAO; import org.navalplanner.business.resources.entities.Criterion; @@ -61,11 +62,9 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder { @Autowired private ILabelDAO labelDAO; - private static final Map> mapCriterions = new HashMap>(); + private IAutoUpdatedSnapshot>> mapCriterions; - private static final Map> mapLabels = new HashMap>(); - - private static OrderStatusEnum[] ordersStatusEnums; + private IAutoUpdatedSnapshot>> mapLabels; protected OrderElementsMultipleFiltersFinder() { @@ -73,37 +72,45 @@ public class OrderElementsMultipleFiltersFinder extends MultipleFiltersFinder { @Transactional(readOnly = true) public void init() { - getAdHocTransactionService() - .runOnReadOnlyTransaction(new IOnTransaction() { + mapCriterions = getSnapshotRefresher().takeSnapshot( + onTransaction(getCriterionsMapCallable()), + ReloadOn.onChangeOf(Criterion.class, CriterionType.class)); + mapLabels = getSnapshotRefresher().takeSnapshot( + onTransaction(getMapLabelsCallable()), + ReloadOn.onChangeOf(LabelType.class, Label.class)); + } + + private Callable>> getMapLabelsCallable() { + return new Callable>>() { + @Override - public Void execute() { - loadLabels(); - loadCriterions(); - return null; - } - }); + public Map> call() throws Exception { + Map> result = new HashMap>(); + for (LabelType labelType : labelTypeDAO.getAll()) { + List