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 4289e1ee14ae368b65ef271a08e8bff2ce91d3db Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Apr 9 08:35:51 2015 +0200 refs #6914 Ajout d'un cache d'entité chargée dans les noeuds de l'arbre de navigation + ne pas accéder à la datasource depuis le renderer --- .../ird/observe/ui/content/ContentUIHandler.java | 5 +- .../impl/longline/SetLonglineUIHandler.java | 3 +- .../impl/seine/FloatingObjectUIHandler.java | 3 +- .../ui/content/impl/seine/SetSeineUIHandler.java | 3 +- .../ui/content/open/ContentOpenableUIHandler.java | 28 ++-- .../ui/content/open/impl/seine/RouteUIHandler.java | 3 +- .../ui/tree/AbstractObserveTreeCellRenderer.java | 41 +++--- .../ird/observe/ui/tree/ActivityLonglineNode.java | 28 ++++ .../fr/ird/observe/ui/tree/ActivitySeineNode.java | 28 ++++ .../fr/ird/observe/ui/tree/EntityNodeSupport.java | 146 +++++++++++++++++++++ .../observe/ui/tree/FloatingObjectSeineNode.java | 28 ++++ .../ird/observe/ui/tree/ObserveDataProvider.java | 11 ++ .../java/fr/ird/observe/ui/tree/ObserveNode.java | 66 +--------- .../fr/ird/observe/ui/tree/ObserveTreeHelper.java | 75 ++++++++--- .../ird/observe/ui/tree/ProgramLonglineNode.java | 29 ++++ .../fr/ird/observe/ui/tree/ProgramSeineNode.java | 28 ++++ .../fr/ird/observe/ui/tree/RouteSeineNode.java | 27 ++++ .../fr/ird/observe/ui/tree/SetLonglineNode.java | 28 ++++ .../java/fr/ird/observe/ui/tree/SetSeineNode.java | 28 ++++ .../fr/ird/observe/ui/tree/TripLonglineNode.java | 27 ++++ .../java/fr/ird/observe/ui/tree/TripSeineNode.java | 27 ++++ .../actions/ChangeTripProgramActionListener.java | 6 +- .../loadors/ActivityLonglineNodeChildLoador.java | 22 ++-- .../loadors/ActivityLonglinesNodeChildLoador.java | 26 ++-- .../tree/loadors/ActivitySeineNodeChildLoador.java | 49 +++---- .../loadors/ActivitySeinesNodeChildLoador.java | 27 ++-- .../loadors/FloatingObjectNodeChildLoador.java | 4 +- .../loadors/ProgramLonglineNodeChildLoador.java | 12 +- .../tree/loadors/ProgramSeineNodeChildLoador.java | 14 +- .../ui/tree/loadors/RootNodeChildLoador.java | 25 ++-- .../ui/tree/loadors/RoutesNodeChildLoador.java | 24 ++-- .../tree/loadors/SetLonglineNodeChildLoador.java | 4 +- .../ui/tree/loadors/SetSeineNodeChildLoador.java | 1 + 33 files changed, 632 insertions(+), 244 deletions(-) diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java index 6f5f3e3..7a5c374 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/ContentUIHandler.java @@ -488,11 +488,12 @@ public abstract class ContentUIHandler<E extends TopiaEntity> { // on ne peut redemarrer une edition que si la donnee // est exactement une entites (pas possible sur une liste) ObserveTreeHelper treeHelper = getTreeHelper(ui); - ObserveNode node = treeHelper.getSelectedNode(); +// ObserveNode node = treeHelper.getSelectedNode(); removeAllMessages(ui); - treeHelper.refreshNode(node, true); +// treeHelper.refreshNode(node, true); + treeHelper.reloadSelectedNode(false, true); model.setMode(ContentMode.UPDATE); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/SetLonglineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/SetLonglineUIHandler.java index 7d828b5..1baa2bb 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/SetLonglineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/longline/SetLonglineUIHandler.java @@ -404,7 +404,8 @@ public class SetLonglineUIHandler extends ContentUIHandler<SetLongline> { } else { // select ancestor node - treeHelper.refreshNode(node, false); +// treeHelper.refreshNode(node, false); + treeHelper.reloadSelectedNode(false, false); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectUIHandler.java index b35dc16..6787aa7 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/FloatingObjectUIHandler.java @@ -219,7 +219,8 @@ public class FloatingObjectUIHandler extends ContentUIHandler<FloatingObject> { } else { // select ancestor node - treeHelper.refreshNode(node, false); +// treeHelper.refreshNode(node, false); + treeHelper.reloadSelectedNode(false, false); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java index ffcc579..5a71b4f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/impl/seine/SetSeineUIHandler.java @@ -355,7 +355,8 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeine> { treeHelper.selectNode(node); } else { // select ancestor node - treeHelper.refreshNode(node, false); +// treeHelper.refreshNode(node, false); + treeHelper.reloadSelectedNode(false, false); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java index d141b06..3755f64 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/ContentOpenableUIHandler.java @@ -28,7 +28,6 @@ import fr.ird.observe.db.DataSourceException; import fr.ird.observe.db.constants.DataContextType; import fr.ird.observe.entities.OpenableEntity; import fr.ird.observe.entities.Trip; -import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.ui.content.ContentMode; import fr.ird.observe.ui.content.ContentUIHandler; import fr.ird.observe.ui.tree.ObserveNode; @@ -108,8 +107,9 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE // on repaint le parent (le program devient alors ouvert) ObserveTreeHelper treeHelper = getTreeHelper(ui); - ObserveNode node = treeHelper.getSelectedNode(); - treeHelper.refreshNode(node.getParent(), true); + treeHelper.reloadSelectedNode(true, true); +// ObserveNode node = treeHelper.getSelectedNode(); +// treeHelper.refreshNode(node.getParent(), true); // on chage l'état 'canReopen' du model ui.getModel().setCanReopen(false); @@ -162,12 +162,13 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE getEntityLabel(bean.getClass()), t(closeMessage)); ObserveTreeHelper treeHelper = getTreeHelper(ui); - ObserveNode selectedNode = treeHelper.getSelectedNode(); - if (bean instanceof TripSeine) { - // le program peut change d'etat open - selectedNode = selectedNode.getParent(); - } - treeHelper.refreshNode(selectedNode, true); +// ObserveNode selectedNode = treeHelper.getSelectedNode(); +// if (bean instanceof Trip) { +// // le program peut change d'etat open +// selectedNode = selectedNode.getParent(); +// } +// treeHelper.refreshNode(selectedNode, true); + treeHelper.reloadSelectedNode(bean instanceof Trip, true); updateActions(); } @@ -227,7 +228,9 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE } // on repaint le noeud et ses enfants - treeHelper.refreshNode(node, true); +// treeHelper.refreshNode(node, true); + treeHelper.reloadSelectedNode(false, true); + // treeHelper.refreshNode(node, false); } } @@ -241,8 +244,7 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE // fermeture de la donnée try { - boolean b; - b = doCloseData(); + boolean b = doCloseData(); if (!b) { // la fermeture a ete abandonnee @@ -264,6 +266,8 @@ public abstract class ContentOpenableUIHandler<E extends TopiaEntity & OpenableE ObserveTreeHelper treeHelper = getTreeHelper(getUi()); + treeHelper.reloadSelectedNode(false, true); + ObserveNode parentNode = treeHelper.getSelectedNode().getParent(); if (log.isDebugEnabled()) { log.debug("PARENT NODE = " + parentNode); diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java index 77949c4..a2d8cd4 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/content/open/impl/seine/RouteUIHandler.java @@ -521,7 +521,8 @@ public class RouteUIHandler extends ContentOpenableUIHandler<Route> { if (log.isInfoEnabled()) { log.info("Refresh trip node : " + tripNode); } - treeHelper.refreshNode(tripNode, false); + treeHelper.reloadNode(tripNode, false); +// treeHelper.refreshNode(tripNode, false); } protected void updateDateFin(TripSeine parentBean) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java index 0b151ef..d7e16d7 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/AbstractObserveTreeCellRenderer.java @@ -21,6 +21,7 @@ */ package fr.ird.observe.ui.tree; +import com.google.common.base.Preconditions; import fr.ird.observe.DecoratorService; import fr.ird.observe.ObserveContext; import fr.ird.observe.db.DataContext; @@ -43,6 +44,7 @@ import jaxx.runtime.swing.nav.tree.AbstractNavTreeCellRenderer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; +import org.nuiton.topia.persistence.TopiaEntity; import javax.swing.Icon; import javax.swing.UIManager; @@ -243,14 +245,8 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel protected String computeNodeText(ObserveNode node) { - if (log.isDebugEnabled()) { - log.debug("for node : " + node.getId()); - } - - String text; - if (node.isStringNode()) { - text = t(node.getId()); + String text = t(node.getId()); return text; } @@ -258,7 +254,7 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel if (node.isReferentielNode()) { - text = t(DecoratorService.getEntityLabel(ObserveTreeHelper.TREE_NODE_PREFIX, beanType)); + String text = t(DecoratorService.getEntityLabel(ObserveTreeHelper.TREE_NODE_PREFIX, beanType)); return text; } @@ -270,40 +266,33 @@ public abstract class AbstractObserveTreeCellRenderer extends AbstractNavTreeCel // noeud d'un objet en cours de création - text = t(node.getContext()); + String text = t(node.getContext()); return text; } // noeud de donnée connue en base - Decorator<?> decorator = - getDecoratorService().getDecoratorByType(beanType); - if (getDataProvider() == null) { // data provider non utilisable - text = "No data provider opened to render " + id; + String text = "No data provider opened to render " + id; return text; } - DataSource source = getDataProvider().getDataSource(); + if (node instanceof EntityNodeSupport) { + EntityNodeSupport entityNodeSupport = (EntityNodeSupport) node; - if (source == null || !source.isOpen()) { + TopiaEntity entity = entityNodeSupport.getEntity(); + + Preconditions.checkNotNull(entity, "L'entité doit être chargée dans le noeud: " + node); + + Decorator<?> decorator = getDecoratorService().getDecoratorByType(beanType); + String text = decorator.toString(entity); - // source non utilisable - text = "No source opened to render " + id; return text; } - try { - text = source.decorateEntity(null, id, decorator); - } catch (Exception e) { - if (log.isErrorEnabled()) { - log.error("Could not decorate entity " + id, e); - } - text = node.getId(); - } + throw new IllegalStateException("Don't know how to render node: " + node); - return text; } public Color getNavigationTextColor(ObserveNode node) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java new file mode 100644 index 0000000..29f8e47 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivityLonglineNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.longline.ActivityLongline; +import fr.ird.observe.ui.tree.loadors.ActivityLonglineNodeChildLoador; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ActivityLonglineNode extends EntityNodeSupport<ActivityLongline> { + + private static final long serialVersionUID = 1L; + + public ActivityLonglineNode(ActivityLongline entity) { + super(ActivityLongline.class, entity, ObserveTreeHelper.getChildLoador(ActivityLonglineNodeChildLoador.class)); + } + + @Override + protected ActivityLongline getEntity(DataService dataService, DataSource source) throws DataSourceException { + return dataService.getActivityLonglineStub(source, id); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java new file mode 100644 index 0000000..e95efe2 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ActivitySeineNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.seine.ActivitySeine; +import fr.ird.observe.ui.tree.loadors.ActivitySeineNodeChildLoador; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ActivitySeineNode extends EntityNodeSupport<ActivitySeine> { + + private static final long serialVersionUID = 1L; + + public ActivitySeineNode(ActivitySeine entity) { + super(ActivitySeine.class, entity, ObserveTreeHelper.getChildLoador(ActivitySeineNodeChildLoador.class)); + } + + @Override + protected ActivitySeine getEntity(DataService dataService, DataSource source) throws DataSourceException { + return dataService.getActivitySeineStub(source, id); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java new file mode 100644 index 0000000..c3e9453 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/EntityNodeSupport.java @@ -0,0 +1,146 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.ObserveContext; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.OpenableEntity; +import fr.ird.observe.ui.tree.loadors.AbstractNodeChildLoador; +import jaxx.runtime.swing.nav.NavBridge; +import jaxx.runtime.swing.nav.NavDataProvider; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaEntity; + +import javax.swing.tree.DefaultTreeModel; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public abstract class EntityNodeSupport<E extends TopiaEntity> extends ObserveNode { + + /** Logger. */ + private static final Log log = LogFactory.getLog(EntityNodeSupport.class); + + private static final long serialVersionUID = 1L; + + /** + * Pour cacher l'entité attachée au noeud. + * Elle pourra être directement injectée pour éviter de la recharger (lors de la création d'un modèle initiale). + * + * @since 4.0 + */ + protected transient E entity; + + protected transient DataService dataService; + + private boolean reloadEntity; + + protected abstract E getEntity(DataService dataService, DataSource source) throws DataSourceException; + + protected EntityNodeSupport(Class<E> internalClass, E entity) { + this(internalClass, entity, null); + } + + protected EntityNodeSupport(Class<E> type, E entity, AbstractNodeChildLoador<?> childLoador) { + this(type, entity, null, childLoador); + } + + protected EntityNodeSupport(Class<E> type, E entity, String context, AbstractNodeChildLoador<?> childLoador) { + super(type, entity.getTopiaId(), context, childLoador, false); + setEntity(entity); + } + + @Override + public void populateNode(NavBridge<DefaultTreeModel, ObserveNode> bridge, + NavDataProvider provider, + boolean populateChilds) { + + + try { + super.populateNode(bridge, provider, populateChilds); + } finally { + reloadEntity = false; + } + + if (provider != null && id != null) { + + if (entity == null) { + + loadEntity((ObserveDataProvider) provider); + + } + + if (OpenableEntity.class.isAssignableFrom(entity.getClass())) { + open = ((OpenableEntity) entity).isOpen(); + + if (log.isDebugEnabled()) { + log.debug("Set open: " + open + " for entity: " + id); + } + + } + + } + + } + + @Override + public void setDirty(boolean dirty) { + super.setDirty(dirty); + + if (dirty && reloadEntity) { + entity = null; + } + + } + + public E getEntity() { + return entity; + } + + public void setEntity(E entity) { + this.entity = entity; + } + + + protected void loadEntity(ObserveDataProvider oProvider) { + + if (oProvider.getSelectionModel() != null) { + + if (log.isDebugEnabled()) { + log.debug("try to get entity from selectionModel " + internalClass + " : " + id); + } + entity = (E) oProvider.getSelectionModel().getEntityCache(id); + } + + if (entity == null) { + + if (log.isInfoEnabled()) { + log.info("will load entity " + internalClass.getSimpleName() + " : " + id); + } + + try { + entity = getEntity(getDataService(), oProvider.getDataSource()); + } catch (DataSourceException e) { + throw new RuntimeException(e); + } + + } + + } + + private DataService getDataService() { + if (dataService == null) { + dataService = ObserveContext.get().getDataService(); + } + return dataService; + } + + public void setReloadEntity(boolean reloadEntity) { + this.reloadEntity = reloadEntity; + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java new file mode 100644 index 0000000..9279992 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/FloatingObjectSeineNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.seine.FloatingObject; +import fr.ird.observe.ui.tree.loadors.FloatingObjectNodeChildLoador; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class FloatingObjectSeineNode extends EntityNodeSupport<FloatingObject> { + + private static final long serialVersionUID = 1L; + + public FloatingObjectSeineNode(FloatingObject entity) { + super(FloatingObject.class, entity, ObserveTreeHelper.getChildLoador(FloatingObjectNodeChildLoador.class)); + } + + @Override + protected FloatingObject getEntity(DataService dataService, DataSource source) throws DataSourceException { + return dataService.getFloatinObjectStub(source, id); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java index 1527f37..0df4adf 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveDataProvider.java @@ -46,6 +46,8 @@ public class ObserveDataProvider implements NavDataProvider { protected DataSelectionModel selectionModel; + private boolean creating; + public ObserveDataProvider(DataSource dataSource) { this.dataSource = dataSource; } @@ -80,4 +82,13 @@ public class ObserveDataProvider implements NavDataProvider { } return dataService; } + + public boolean isCreating() { + return creating; + } + + public void setCreating(boolean creating) { + this.creating = creating; + } + } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNode.java index 5f08908..538a095 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNode.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNode.java @@ -21,21 +21,12 @@ */ package fr.ird.observe.ui.tree; -import fr.ird.observe.ObserveContext; -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; -import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.OpenableEntity; import fr.ird.observe.entities.Trip; -import jaxx.runtime.swing.nav.NavBridge; -import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.tree.NavTreeNode; import jaxx.runtime.swing.nav.tree.NavTreeNodeChildLoador; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.TopiaEntity; - -import javax.swing.tree.DefaultTreeModel; /** * Le modèle d'une noeud. @@ -62,8 +53,6 @@ public class ObserveNode extends NavTreeNode<ObserveNode> { */ protected Boolean open; - protected transient DataService dataService; - public ObserveNode(String id, boolean referentiel) { this(String.class, id, null, null, referentiel); } @@ -94,7 +83,6 @@ public class ObserveNode extends NavTreeNode<ObserveNode> { } } - public boolean isDataNode() { return !referentiel; } @@ -108,59 +96,7 @@ public class ObserveNode extends NavTreeNode<ObserveNode> { } public boolean isTripNode() { - return isDataNode() && Trip.class.isAssignableFrom(internalClass); - } - - @Override - public void populateNode(NavBridge<DefaultTreeModel, ObserveNode> bridge, - NavDataProvider provider, - boolean populateChilds) { - - super.populateNode(bridge, provider, populateChilds); - - ObserveDataProvider oProvider = (ObserveDataProvider) provider; - - if (isStringNode()) { - return; - } - - if (isReferentielNode()) { - return; - } - - if (id == null) { - - // on est sur un noeud de création - return; - } - - try { - - if (TopiaEntity.class.isAssignableFrom(internalClass)) { - - if (log.isDebugEnabled()) { - log.debug("will load entity " + internalClass + " : " + id); - } - DataSource source = oProvider.getDataSource(); - TopiaEntity e = getDataService().loadEntity(source, id, true); - - if (OpenableEntity.class.isAssignableFrom(e.getClass())) { - open = ((OpenableEntity) e).isOpen(); - } - return; - } - } catch (DataSourceException e) { - throw new RuntimeException(e); - } - - throw new IllegalStateException("Can not populate node [" + internalClass + ":" + id + "]"); - } - - protected DataService getDataService() { - if (dataService == null) { - dataService = ObserveContext.get().getDataService(); - } - return dataService; + return isDataNode() && Trip.class.isAssignableFrom(internalClass); } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java index 0c7b126..f334560 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ObserveTreeHelper.java @@ -162,17 +162,23 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { setDataSource(source); - ObserveNode node = new ObserveNode( - String.class, - "Root node", - null, - new RootNodeChildLoador(true, true), - false - ); - DefaultTreeModel model = createModel(node); - node.populateChilds(getBridge(), getDataProvider()); -// loadAllNodes(node, getDataProvider()); - return model; + ObserveDataProvider provider = getDataProvider(); + provider.setCreating(true); + + try { + + RootNodeChildLoador loador = new RootNodeChildLoador(true, true); + ObserveNode node = new ObserveNode(String.class, "Root node", null, loador, false); + + DefaultTreeModel model = createModel(node); + node.populateChilds(getBridge(), provider); + return model; + + } finally { + + provider.setCreating(false); + + } } public DefaultTreeModel createModel(JAXXContext context, @@ -186,16 +192,26 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { log.debug("create tree model " + this); } - ObserveDataProvider dataProvider = getDataProvider(); + ObserveDataProvider provider = getDataProvider(); + provider.setSelectionModel(dataModel); + provider.setCreating(true); - RootNodeChildLoador loador = getChildLoador(RootNodeChildLoador.class); - loador.setAddData(dataModel.isUseData()); - loador.setAddReferentiel(dataModel.isUseReferentiel()); - dataProvider.setSelectionModel(dataModel); - ObserveNode node = new ObserveNode(String.class, "Root node", loador, false); - DefaultTreeModel model = createModel(node); - loadAllNodes(node, getDataProvider()); - return model; + try { + + RootNodeChildLoador loador = getChildLoador(RootNodeChildLoador.class); + loador.setAddData(dataModel.isUseData()); + loador.setAddReferentiel(dataModel.isUseReferentiel()); + ObserveNode node = new ObserveNode(String.class, "Root node", loador, false); + + DefaultTreeModel model = createModel(node); + loadAllNodes(node, provider); + return model; + + } finally { + + provider.setCreating(false); + + } } @@ -500,9 +516,26 @@ public class ObserveTreeHelper extends NavTreeHelper<ObserveNode> { ObserveNode rootNode = getRootNode(); ObserveNode result = rootNode.getChild(bean.getTopiaId(), getBridge(), dataProvider); Preconditions.checkNotNull(result, "Could not find program node with id: " + bean.getTopiaId()); - refreshNode(result, false); + reloadNode(result, false); +// refreshNode(result, false); } + public void reloadSelectedNode(boolean refreshFromParent, boolean refreshChilds) { + ObserveNode node = getSelectedNode(); + ((EntityNodeSupport) node).setReloadEntity(true); + + if (refreshFromParent) { + node = node.getParent(); + } + refreshNode(node, refreshChilds); + } + + public void reloadNode(ObserveNode node, boolean refreshChilds) { + ((EntityNodeSupport) node).setReloadEntity(true); + refreshNode(node, refreshChilds); + } + + void setDataSource(DataSource source) { NavDataProvider provider = null; if (source != null) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java new file mode 100644 index 0000000..b403e3d --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramLonglineNode.java @@ -0,0 +1,29 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.ui.tree.loadors.ProgramLonglineNodeChildLoador; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ProgramLonglineNode extends EntityNodeSupport<Program> { + + private static final long serialVersionUID = 1L; + + public ProgramLonglineNode(Program entity) { + super(Program.class, entity, entity.getGearType().name(), ObserveTreeHelper.getChildLoador(ProgramLonglineNodeChildLoador.class)); + setEntity(entity); + } + + @Override + protected Program getEntity(DataService dataService, DataSource source) throws DataSourceException { + return dataService.getProgramStub(source, id); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java new file mode 100644 index 0000000..845f017 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/ProgramSeineNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.referentiel.Program; +import fr.ird.observe.ui.tree.loadors.ProgramSeineNodeChildLoador; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class ProgramSeineNode extends EntityNodeSupport<Program> { + + private static final long serialVersionUID = 1L; + + public ProgramSeineNode(Program entity) { + super(Program.class, entity, entity.getGearType().name(), ObserveTreeHelper.getChildLoador(ProgramSeineNodeChildLoador.class)); + } + + @Override + protected Program getEntity(DataService dataService, DataSource source) throws DataSourceException { + return dataService.getProgramStub(source, id); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java new file mode 100644 index 0000000..f528307 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/RouteSeineNode.java @@ -0,0 +1,27 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.seine.Route; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class RouteSeineNode extends EntityNodeSupport<Route> { + + private static final long serialVersionUID = 1L; + + public RouteSeineNode(Route entity) { + super(Route.class, entity); + } + + @Override + protected Route getEntity(DataService dataService, DataSource source) throws DataSourceException { + return dataService.getRouteStub(source, id); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java new file mode 100644 index 0000000..af917d4 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetLonglineNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.ui.tree.loadors.SetLonglineNodeChildLoador; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class SetLonglineNode extends EntityNodeSupport<SetLongline> { + + private static final long serialVersionUID = 1L; + + public SetLonglineNode(SetLongline entity) { + super(SetLongline.class, entity, ObserveTreeHelper.getChildLoador(SetLonglineNodeChildLoador.class)); + } + + @Override + protected SetLongline getEntity(DataService dataService, DataSource source) throws DataSourceException { + return (SetLongline) dataService.loadEntity(source, id, true); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java new file mode 100644 index 0000000..2b97b33 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/SetSeineNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.ui.tree.loadors.SetSeineNodeChildLoador; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class SetSeineNode extends EntityNodeSupport<SetSeine> { + + private static final long serialVersionUID = 1L; + + public SetSeineNode(SetSeine entity) { + super(SetSeine.class, entity, ObserveTreeHelper.getChildLoador(SetSeineNodeChildLoador.class)); + } + + @Override + protected SetSeine getEntity(DataService dataService, DataSource source) throws DataSourceException { + return (SetSeine) dataService.loadEntity(source, id, true); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java new file mode 100644 index 0000000..c6ca912 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripLonglineNode.java @@ -0,0 +1,27 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.longline.TripLongline; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class TripLonglineNode extends EntityNodeSupport<TripLongline> { + + private static final long serialVersionUID = 1L; + + public TripLonglineNode(TripLongline entity) { + super(TripLongline.class, entity); + } + + @Override + protected TripLongline getEntity(DataService dataService, DataSource source) throws DataSourceException { + return dataService.getTripLonglineStub(source, id); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java new file mode 100644 index 0000000..ce415f9 --- /dev/null +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/TripSeineNode.java @@ -0,0 +1,27 @@ +package fr.ird.observe.ui.tree; + +import fr.ird.observe.DataService; +import fr.ird.observe.db.DataSource; +import fr.ird.observe.db.DataSourceException; +import fr.ird.observe.entities.seine.TripSeine; + +/** + * Created on 4/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.0 + */ +public class TripSeineNode extends EntityNodeSupport<TripSeine> { + + private static final long serialVersionUID = 1L; + + public TripSeineNode(TripSeine entity) { + super(TripSeine.class, entity); + } + + @Override + protected TripSeine getEntity(DataService dataService, DataSource source) throws DataSourceException { + return dataService.getTripSeineStub(source, id); + } + +} diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java index 2a786d6..766e3d3 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java @@ -102,8 +102,10 @@ public class ChangeTripProgramActionListener implements ActionListener { treeHelper.insertNode(newProgramNode, tripNode, position); newTripNode = tripNode; } - treeHelper.refreshNode(oldProgramNode, true); - treeHelper.refreshNode(newProgramNode, true); + treeHelper.reloadNode(oldProgramNode, true); + treeHelper.reloadNode(newProgramNode, true); +// treeHelper.refreshNode(oldProgramNode, true); +// treeHelper.refreshNode(newProgramNode, true); treeHelper.selectNode(newTripNode); } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java index 9029597..c29fd4f 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglineNodeChildLoador.java @@ -22,13 +22,13 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ -import fr.ird.observe.DataService; -import fr.ird.observe.db.DataSource; import fr.ird.observe.db.DataSourceException; import fr.ird.observe.entities.longline.ActivityLongline; import fr.ird.observe.entities.longline.SetLongline; +import fr.ird.observe.ui.tree.ActivityLonglineNode; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.SetLonglineNode; import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.tree.NavTreeBridge; @@ -68,13 +68,8 @@ public class ActivityLonglineNodeChildLoador extends AbstractNodeChildLoador<Str } { - DataSource source = getDataSource(dataProvider); - DataService service = getDataService(); - ActivityLongline activity = (ActivityLongline) service.loadEntity( - source, - containerNode.getId(), - false); + ActivityLongline activity = ((ActivityLonglineNode) parentNode).getEntity(); SetLongline setLongline = activity.getSetLongline(); if (setLongline != null) { @@ -82,6 +77,7 @@ public class ActivityLonglineNodeChildLoador extends AbstractNodeChildLoador<Str // si set present, ajout d'un noeud ObserveNode child = createSetNode(setLongline); parentNode.add(child); + } } @@ -99,6 +95,7 @@ public class ActivityLonglineNodeChildLoador extends AbstractNodeChildLoador<Str result.add(ActivityLongline.PROPERTY_ENCOUNTER); result.add(ActivityLongline.PROPERTY_SENSOR_USED); return result; + } @Override @@ -113,12 +110,9 @@ public class ActivityLonglineNodeChildLoador extends AbstractNodeChildLoador<Str if (data == null) { throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode child = new ObserveNode( - SetLongline.class, - data.getTopiaId(), - ObserveTreeHelper.getChildLoador(SetLonglineNodeChildLoador.class), - false - ); + + ObserveNode child = new SetLonglineNode(data); return child; + } } \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java index 006849a..f58994d 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivityLonglinesNodeChildLoador.java @@ -22,11 +22,11 @@ package fr.ird.observe.ui.tree.loadors; * #L% */ +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.longline.ActivityLongline; -import fr.ird.observe.entities.longline.ActivityLonglines; -import fr.ird.observe.entities.longline.TripLongline; +import fr.ird.observe.ui.tree.ActivityLonglineNode; +import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; -import fr.ird.observe.ui.tree.ObserveTreeHelper; import jaxx.runtime.swing.nav.NavDataProvider; import java.util.List; @@ -37,21 +37,21 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 3.7 */ -public class ActivityLonglinesNodeChildLoador extends AbstractAssociationNodeChildLoador<ActivityLongline> { +public class ActivityLonglinesNodeChildLoador extends AbstractNodeChildLoador<ActivityLongline> { private static final long serialVersionUID = 1L; public ActivityLonglinesNodeChildLoador() { - super(ActivityLongline.class, TripLongline.PROPERTY_ACTIVITY_LONGLINE); + super(ActivityLongline.class); } @Override public List<ActivityLongline> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + String parentId, + NavDataProvider dataProvider) throws Exception { - List<ActivityLongline> data = super.getData(parentClass, parentId, dataProvider); - ActivityLonglines.sort(data); + DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + List<ActivityLongline> data = getDataService().getActivityLonglineStubByTrip(dataSource, parentId); return data; } @@ -62,12 +62,8 @@ public class ActivityLonglinesNodeChildLoador extends AbstractAssociationNodeChi throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new ObserveNode( - ActivityLongline.class, - data.getTopiaId(), - ObserveTreeHelper.getChildLoador(ActivityLonglineNodeChildLoador.class), - false - ); + ObserveNode result = new ActivityLonglineNode(data); return result; + } } \ No newline at end of file diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java index 7c17abc..6b69659 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeineNodeChildLoador.java @@ -21,16 +21,21 @@ */ package fr.ird.observe.ui.tree.loadors; -import fr.ird.observe.DataService; import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.FloatingObject; import fr.ird.observe.entities.seine.SetSeine; +import fr.ird.observe.ui.tree.ActivitySeineNode; +import fr.ird.observe.ui.tree.FloatingObjectSeineNode; +import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.SetSeineNode; import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.tree.NavTreeBridge; +import java.util.List; + import static org.nuiton.i18n.I18n.n; /** @@ -39,7 +44,7 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class ActivitySeineNodeChildLoador extends AbstractAssociationNodeChildLoador<FloatingObject> { +public class ActivitySeineNodeChildLoador extends AbstractNodeChildLoador<FloatingObject> { private static final long serialVersionUID = 1L; @@ -48,7 +53,7 @@ public class ActivitySeineNodeChildLoador extends AbstractAssociationNodeChildLo } public ActivitySeineNodeChildLoador() { - super(FloatingObject.class, ActivitySeine.PROPERTY_FLOATING_OBJECT); + super(FloatingObject.class); } @Override @@ -68,13 +73,7 @@ public class ActivitySeineNodeChildLoador extends AbstractAssociationNodeChildLo parentNode.add(child); - DataSource source = getDataSource(dataProvider); - DataService service = getDataService(); - - ActivitySeine activitySeine = (ActivitySeine) service.loadEntity( - source, - containerNode.getId(), - false); + ActivitySeine activitySeine = ((ActivitySeineNode) parentNode).getEntity(); SetSeine set = activitySeine.getSetSeine(); if (set != null) { @@ -92,13 +91,10 @@ public class ActivitySeineNodeChildLoador extends AbstractAssociationNodeChildLo if (data == null) { throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode child = new ObserveNode( - SetSeine.class, - data.getTopiaId(), - ObserveTreeHelper.getChildLoador(SetSeineNodeChildLoador.class), - false - ); + + SetSeineNode child = new SetSeineNode(data); return child; + } @Override @@ -106,12 +102,21 @@ public class ActivitySeineNodeChildLoador extends AbstractAssociationNodeChildLo if (data == null) { throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new ObserveNode( - getBeanType(), - data.getTopiaId(), - ObserveTreeHelper.getChildLoador(FloatingObjectNodeChildLoador.class), - false - ); + + FloatingObjectSeineNode result = new FloatingObjectSeineNode(data); return result; + } + + @Override + public List<FloatingObject> getData(Class<?> parentClass, + String parentId, + NavDataProvider dataProvider) throws Exception { + + DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + List<FloatingObject> data = getDataService().getFloatinObjectStubByActivitySeine(dataSource, parentId); + return data; + + } + } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java index bf40915..e4891d8 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ActivitySeinesNodeChildLoador.java @@ -21,11 +21,11 @@ */ package fr.ird.observe.ui.tree.loadors; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.ActivitySeine; -import fr.ird.observe.entities.seine.ActivitySeines; -import fr.ird.observe.entities.seine.Route; +import fr.ird.observe.ui.tree.ActivitySeineNode; +import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; -import fr.ird.observe.ui.tree.ObserveTreeHelper; import jaxx.runtime.swing.nav.NavDataProvider; import java.util.List; @@ -36,22 +36,23 @@ import java.util.List; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class ActivitySeinesNodeChildLoador extends AbstractAssociationNodeChildLoador<ActivitySeine> { +public class ActivitySeinesNodeChildLoador extends AbstractNodeChildLoador<ActivitySeine> { private static final long serialVersionUID = 1L; public ActivitySeinesNodeChildLoador() { - super(ActivitySeine.class, Route.PROPERTY_ACTIVITY_SEINE); + super(ActivitySeine.class); } @Override public List<ActivitySeine> getData(Class<?> parentClass, - String parentId, - NavDataProvider dataProvider) throws Exception { + String parentId, + NavDataProvider dataProvider) throws Exception { - List<ActivitySeine> data = super.getData(parentClass, parentId, dataProvider); - ActivitySeines.sort(data); + DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + List<ActivitySeine> data = getDataService().getActivitySeineStubByRoute(dataSource, parentId); return data; + } @Override @@ -60,12 +61,8 @@ public class ActivitySeinesNodeChildLoador extends AbstractAssociationNodeChildL throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new ObserveNode( - ActivitySeine.class, - data.getTopiaId(), - ObserveTreeHelper.getChildLoador(ActivitySeineNodeChildLoador.class), - false - ); + ActivitySeineNode result = new ActivitySeineNode(data); return result; + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/FloatingObjectNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/FloatingObjectNodeChildLoador.java index 754c001..0b23ea8 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/FloatingObjectNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/FloatingObjectNodeChildLoador.java @@ -46,7 +46,7 @@ public class FloatingObjectNodeChildLoador extends AbstractNodeChildLoador<Strin super(String.class); } - static { + static { n("observe.tree.objectOperation"); n("observe.tree.objectSchoolEstimate"); n("observe.tree.objectObservedSpecies"); @@ -62,6 +62,7 @@ public class FloatingObjectNodeChildLoador extends AbstractNodeChildLoador<Strin result.add(FloatingObject.PROPERTY_OBJECT_SCHOOL_ESTIMATE); result.add(FloatingObject.PROPERTY_OBJECT_OBSERVED_SPECIES); return result; + } @Override @@ -69,6 +70,7 @@ public class FloatingObjectNodeChildLoador extends AbstractNodeChildLoador<Strin ObserveNode result = ObserveTreeHelper.createStringNode(data); return result; + } } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java index b76637a..a887b05 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramLonglineNodeChildLoador.java @@ -28,6 +28,7 @@ import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.longline.TripLongline; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.TripLonglineNode; import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.tree.NavTreeBridge; import org.apache.commons.collections.CollectionUtils; @@ -90,13 +91,13 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip List<String> tripIds = selectionModel.getDatas().get(parentId); if (!CollectionUtils.isEmpty(tripIds)) { for (String tripId : tripIds) { - result.add((TripLongline) service.loadEntity(dataSource, tripId, true)); + result.add((TripLongline) selectionModel.getEntityCache(tripId)); } } } else { - result = service.getTripLonglineByProgram(dataSource, parentId, false); + result = service.getTripLonglineStubByProgram(dataSource, parentId); } @@ -111,12 +112,7 @@ public class ProgramLonglineNodeChildLoador extends AbstractNodeChildLoador<Trip throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new ObserveNode( - TripLongline.class, - data.getTopiaId(), - null, - false - ); + ObserveNode result = new TripLonglineNode(data); if (addActivities) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java index 4a23ead..5409fdd 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/ProgramSeineNodeChildLoador.java @@ -27,6 +27,7 @@ import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.seine.TripSeine; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.TripSeineNode; import jaxx.runtime.swing.nav.NavDataProvider; import jaxx.runtime.swing.nav.tree.NavTreeBridge; import org.apache.commons.collections.CollectionUtils; @@ -87,14 +88,16 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<TripSei List<String> tripIds = selectionModel.getDatas().get(parentId); if (!CollectionUtils.isEmpty(tripIds)) { for (String tripId : tripIds) { - result.add((TripSeine) service.loadEntity(dataSource, tripId, true)); + result.add((TripSeine) selectionModel.getEntityCache(tripId)); } } } else { - result = service.getTripSeineByProgram(dataSource, parentId, false); + result = service.getTripSeineStubByProgram(dataSource, parentId); + } return result; + } @Override @@ -104,12 +107,7 @@ public class ProgramSeineNodeChildLoador extends AbstractNodeChildLoador<TripSei throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new ObserveNode( - getBeanType(), - data.getTopiaId(), - null, - false - ); + ObserveNode result = new TripSeineNode(data); if (addChilds) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java index bcf28d7..7c8ec84 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RootNodeChildLoador.java @@ -26,9 +26,10 @@ import fr.ird.observe.db.DataSource; import fr.ird.observe.db.model.DataSelectionModel; import fr.ird.observe.entities.constants.GearType; import fr.ird.observe.entities.referentiel.Program; -import fr.ird.observe.entities.referentiel.Programs; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.ProgramLonglineNode; +import fr.ird.observe.ui.tree.ProgramSeineNode; import jaxx.runtime.swing.nav.NavDataProvider; import java.util.ArrayList; @@ -84,18 +85,20 @@ public class RootNodeChildLoador extends AbstractNodeChildLoador<Program> { if (selectionModel != null) { data = new ArrayList<Program>(); for (String programId : selectionModel.getDatas().keySet()) { - data.add((Program) service.loadEntity(dataSource, programId, true)); + data.add((Program) selectionModel.getEntityCache(programId)); } } else { - data = service.loadDecoratedEntities(dataSource, getBeanType()); + data = service.getAllProgramStub(dataSource); } - // on trie les programs pour toujours avoir le même ordre dans l'arbre - Programs.sort(data); } else { + data = Collections.emptyList(); + } + return data; + } @Override @@ -145,20 +148,12 @@ public class RootNodeChildLoador extends AbstractNodeChildLoador<Program> { case seine: - result = new ObserveNode(getBeanType(), - data.getTopiaId(), - gearType.name(), - ObserveTreeHelper.getChildLoador(ProgramSeineNodeChildLoador.class), - false); + result = new ProgramSeineNode(data); break; case longline: - result = new ObserveNode(getBeanType(), - data.getTopiaId(), - gearType.name(), - ObserveTreeHelper.getChildLoador(ProgramLonglineNodeChildLoador.class), - false); + result = new ProgramLonglineNode(data); break; default: diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java index b96e7af..3b1125d 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/RoutesNodeChildLoador.java @@ -21,11 +21,12 @@ */ package fr.ird.observe.ui.tree.loadors; +import fr.ird.observe.db.DataSource; import fr.ird.observe.entities.seine.Route; -import fr.ird.observe.entities.seine.Routes; -import fr.ird.observe.entities.seine.TripSeine; +import fr.ird.observe.ui.tree.ObserveDataProvider; import fr.ird.observe.ui.tree.ObserveNode; import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.RouteSeineNode; import jaxx.runtime.swing.nav.NavDataProvider; import java.util.List; @@ -38,15 +39,16 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class RoutesNodeChildLoador extends AbstractAssociationNodeChildLoador<Route> { +public class RoutesNodeChildLoador extends AbstractNodeChildLoador<Route> { private static final long serialVersionUID = 1L; static { n("observe.tree.activitySeine"); } + public RoutesNodeChildLoador() { - super(Route.class, TripSeine.PROPERTY_ROUTE); + super(Route.class); } @Override @@ -54,9 +56,10 @@ public class RoutesNodeChildLoador extends AbstractAssociationNodeChildLoador<Ro String parentId, NavDataProvider dataProvider) throws Exception { - List<Route> data = super.getData(parentClass, parentId, dataProvider); - Routes.sort(data); + DataSource dataSource = ((ObserveDataProvider) dataProvider).getDataSource(); + List<Route> data = getDataService().getRouteStubByTrip(dataSource, parentId); return data; + } @Override @@ -66,16 +69,13 @@ public class RoutesNodeChildLoador extends AbstractAssociationNodeChildLoador<Ro throw new NullPointerException("Ne peut pas ajouter un objet null"); } - ObserveNode result = new ObserveNode( - getBeanType(), - data.getTopiaId(), - null, - false - ); + ObserveNode result = new RouteSeineNode(data); // Creation d'un node activites ObserveNode child = ObserveTreeHelper.createStringNode(Route.PROPERTY_ACTIVITY_SEINE, ActivitySeinesNodeChildLoador.class); result.add(child); return result; + } + } diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetLonglineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetLonglineNodeChildLoador.java index a671699..698f66e 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetLonglineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetLonglineNodeChildLoador.java @@ -43,7 +43,7 @@ public class SetLonglineNodeChildLoador extends AbstractNodeChildLoador<String> private static final long serialVersionUID = 1L; - static { + static { n("observe.tree.longlineGlobalComposition"); n("observe.tree.longlineDetailComposition"); n("observe.tree.catchLongline"); @@ -66,8 +66,8 @@ public class SetLonglineNodeChildLoador extends AbstractNodeChildLoador<String> result.add(SetLongline.PROPERTY_TDR); return result; - } + } @Override public ObserveNode createNode(String data, NavDataProvider dataProvider) { diff --git a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java index 3fc38e5..2085dc1 100644 --- a/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java +++ b/observe-swing/src/main/java/fr/ird/observe/ui/tree/loadors/SetSeineNodeChildLoador.java @@ -70,6 +70,7 @@ public class SetSeineNodeChildLoador extends AbstractNodeChildLoador<String> { result.add(SetSeine.PROPERTY_NON_TARGET_CATCH); result.add(SetSeine.PROPERTY_NON_TARGET_SAMPLE); return result; + } @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.