This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 93826a74b4e97a3d7ef137ee11bf3731582829d0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 9 08:34:25 2015 +0200 refs #6914 Ajout dans le modèle de sélection de l'arbre d'un cache d'entités utilisées pour le construire --- .../ird/observe/db/model/DataSelectionModel.java | 30 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java b/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java index bfe0353..ee4a093 100644 --- a/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java +++ b/observe-business/src/main/java/fr/ird/observe/db/model/DataSelectionModel.java @@ -34,6 +34,7 @@ import fr.ird.observe.entities.seine.TripSeine; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.util.TopiaEntityHelper; import java.beans.PropertyChangeListener; @@ -47,6 +48,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeMap; /** * Un modèle pour représenter la sélection de données. @@ -64,16 +66,16 @@ public class DataSelectionModel implements Serializable { Map<String, List<String>> datas = new HashMap<String, List<String>>(); - List<Program> programs = service.getList(source, Program.class); + List<Program> programs = service.getAllProgramStub(source); for (Program program : programs) { if (Programs.isProgramSeine(program)) { - List<TripSeine> trips = service.getTripSeineByProgram(source, program.getTopiaId(), false); + List<TripSeine> trips = service.getTripSeineStubByProgram(source, program.getTopiaId()); populate(model, program, trips, datas); } if (Programs.isProgramLongline(program)) { - List<TripLongline> trips = service.getTripLonglineByProgram(source, program.getTopiaId(), false); + List<TripLongline> trips = service.getTripLonglineStubByProgram(source, program.getTopiaId()); populate(model, program, trips, datas); } @@ -87,6 +89,8 @@ public class DataSelectionModel implements Serializable { List<T> trips, Map<String, List<String>> datas) { + model.cacheEntity(program); + if (!trips.isEmpty()) { List<String> tripIds = new ArrayList<String>(); @@ -94,6 +98,7 @@ public class DataSelectionModel implements Serializable { // ajout de toutes les marées ouvertes ou non for (T trip : trips) { + model.cacheEntity(trip); tripIds.add(trip.getTopiaId()); } @@ -102,6 +107,7 @@ public class DataSelectionModel implements Serializable { // ajout de toutes les marées non ouvertes for (T trip : trips) { if (!trip.isOpen()) { + model.cacheEntity(trip); tripIds.add(trip.getTopiaId()); } } @@ -150,6 +156,15 @@ public class DataSelectionModel implements Serializable { /** la liste des programs utilisables (qui ont des marees) */ protected transient Map<String, List<String>> datas; + /** + * Le cache des entités chargées pour construire le modèle de sélection. + * + * Ces entités pourront ensuite être injectées dans les noeuds sans avoir à les recharger. + * + * @since 4.0 + */ + protected final Map<String, ? super TopiaEntity> entityCache; + /** la liste des marees selectionnee */ protected transient Set<String> selectedData; @@ -178,6 +193,7 @@ public class DataSelectionModel implements Serializable { referentiel = new HashSet<Class<?>>(list); selectedReferentiel = new HashSet<Class<?>>(); nbReferentiels = referentiel.size(); + entityCache = new TreeMap<String, TopiaEntity>(); } public boolean isUseReferentiel() { @@ -206,6 +222,14 @@ public class DataSelectionModel implements Serializable { return true; } + protected void cacheEntity(TopiaEntity entity) { + entityCache.put(entity.getTopiaId(), entity); + } + + public TopiaEntity getEntityCache(String id) { + return (TopiaEntity) entityCache.get(id); + } + public boolean isReferentielEmpty() { return selectedReferentiel.isEmpty(); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.