This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 53cd6bd8b5c1994148e1e4b66db8e34695744466 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Nov 26 16:41:51 2016 +0100 [ui] optimisation chargement des écrans de type liste (on réutilise ce qui est dans l'arbre sans appeler les services) --- .../swing/decoration/DecoratorService.java | 138 ++++++++++++--------- .../swing/ui/content/ContentUIHandler.java | 8 +- .../swing/ui/content/list/ContentListUI.jaxx | 2 +- .../ui/content/list/ContentListUIHandler.java | 48 +++---- .../impl/longline/ActivityLonglinesUIHandler.java | 25 ---- .../list/impl/longline/TripLonglinesUIHandler.java | 32 +---- .../list/impl/seine/ActivitySeinesUIHandler.java | 24 ---- .../content/list/impl/seine/RoutesUIHandler.java | 29 +---- .../list/impl/seine/TripSeinesUIHandler.java | 33 +---- .../swing/ui/tree/navigation/NavigationTree.java | 10 +- .../ui/tree/navigation/NavigationTreeModel.java | 34 ++--- .../ui/tree/selection/SelectionTreeModel.java | 2 +- 12 files changed, 142 insertions(+), 243 deletions(-) diff --git a/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java b/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java index d8393a7..7c2de17 100644 --- a/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java +++ b/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java @@ -138,7 +138,6 @@ import fr.ird.observe.util.GPSPoint; import org.nuiton.decorator.Decorator; import org.nuiton.decorator.DecoratorProvider; -import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -158,54 +157,10 @@ import static org.nuiton.i18n.I18n.t; */ public class DecoratorService extends DecoratorProvider { -// /** Logger */ -// private static final Log log = LogFactory.getLog(DecoratorService.class); - -// /** Le pattern pour utiliser les clef i18n generees dans les entites */ -// private static final Pattern LABEL_PATTERN = Pattern.compile("observe\\.common\\.(.+)"); - public static final String HAULING_IDENTIFIER = "haulingIdentifier"; public static final String TRIP_CONTEXT = "Trip"; - /** la locale du referentiel. */ - private ReferentialLocale referentialLocale; - - public DecoratorService(ReferentialLocale referentialLocale) { - this.referentialLocale = referentialLocale; - loadDecorators(); - } - - public ReferentialLocale getReferentialLocale() { - return referentialLocale; - } - - public void setReferentialLocale(ReferentialLocale referentialLocale) { - this.referentialLocale = referentialLocale; - } - -// public Matcher getPropertyMatch(String regex) { -// return LABEL_PATTERN.matcher(regex); -// } - - public String decorate(Object o) { - return decorate(null, o); - - } - - private String decorate(String context, Object o) { - //FIXME - if (o == null) { - return null; - } - Decorator<Object> decorator = getDecorator(o, context); - String result = ""; - if (decorator != null) { - result = decorator.toString(o); - } - return result; - } - static { // pour avoir les traduction sur le nom de la propriété n("observe.common.vesselActivitySeine/label1"); @@ -241,6 +196,40 @@ public class DecoratorService extends DecoratorProvider { } + /** la locale du referentiel. */ + private ReferentialLocale referentialLocale; + + public DecoratorService(ReferentialLocale referentialLocale) { + this.referentialLocale = referentialLocale; + loadDecorators(); + } + + public ReferentialLocale getReferentialLocale() { + return referentialLocale; + } + + public void setReferentialLocale(ReferentialLocale referentialLocale) { + this.referentialLocale = referentialLocale; + } + + public String decorate(Object o) { + return decorate(null, o); + + } + + private String decorate(String context, Object o) { + //FIXME + if (o == null) { + return null; + } + Decorator<Object> decorator = getDecorator(o, context); + String result = ""; + if (decorator != null) { + result = decorator.toString(o); + } + return result; + } + @Override protected void loadDecorators() { if (referentialLocale == null) { @@ -269,8 +258,8 @@ public class DecoratorService extends DecoratorProvider { // LengthLengthParameter decorator registerDecorator(new LengthLengthParameterDecorator()); - registerReferentialReferenceDecorator(LengthLengthParameterDto.class,"${inputSizeMeasureType}$s##${outputSizeMeasureType}$s##"+ - t("observe.common.inputOutputFormula") + " ${inputOutputFormula}$s"); + registerReferentialReferenceDecorator(LengthLengthParameterDto.class, "${inputSizeMeasureType}$s##${outputSizeMeasureType}$s##" + + t("observe.common.inputOutputFormula") + " ${inputOutputFormula}$s"); // LengthWeightParameter decorator registerDecorator(new LengthWeightParameterDecorator()); @@ -402,7 +391,7 @@ public class DecoratorService extends DecoratorProvider { // Trip commun decorator registerDecorator(TRIP_CONTEXT, - new DataReferenceDecorator("${startDate}$td/%1$tm/%1$tY##${endDate}$td/%2$tm/%2$tY##${vessel}$s##${observer}$s")); + new DataReferenceDecorator<>("${startDate}$td/%1$tm/%1$tY##${endDate}$td/%2$tm/%2$tY##${vessel}$s##${observer}$s")); // ObjectObservedSpecies decorator registerDecorator(new ObjectObservedSpeciesDecorator()); @@ -450,10 +439,15 @@ public class DecoratorService extends DecoratorProvider { } - public <T extends ReferentialDto> void sort(Class<T> type, List<ReferentialReference<T>> data) { + public <T extends ReferentialDto> void sortReferential(Class<T> type, List<ReferentialReference<T>> data) { new ReferentialReferenceComparator<>(type).sort(data); } + + public <T extends DataDto> void sortData(Class<T> type, List<DataReference<T>> data) { + new DataReferenceComparator<>(type).sort(data); + } + public <T extends ReferentialDto> ReferentialReferenceDecorator<T> getReferentialReferenceDecorator(Class<T> referenceType) { return (ReferentialReferenceDecorator<T>) (ReferentialReferenceDecorator) getDecoratorByType(ReferentialReference.class, referenceType.getSimpleName()); } @@ -470,20 +464,20 @@ public class DecoratorService extends DecoratorProvider { Decorator<D> decorator; if (DataDto.class.isAssignableFrom(referenceType)) { - decorator = getDataReferenceDecorator((Class)referenceType); + decorator = getDataReferenceDecorator((Class) referenceType); } else { - decorator = getReferentialReferenceDecorator((Class)referenceType); + decorator = getReferentialReferenceDecorator((Class) referenceType); } return decorator; } - public DataReferenceDecorator getTripReferenceDecorator(DataReference tripDto) { - DataReferenceDecorator decorator; + public DataReferenceDecorator<?> getTripReferenceDecorator(DataReference<?> tripDto) { + DataReferenceDecorator<?> decorator; if (tripDto.getType().isAssignableFrom(TripSeineDto.class)) { - decorator = (DataReferenceDecorator) getDataReferenceDecorator(TripSeineDto.class); + decorator = getDataReferenceDecorator(TripSeineDto.class); } else { - decorator = (DataReferenceDecorator) getDataReferenceDecorator(TripLonglineDto.class); + decorator = getDataReferenceDecorator(TripLonglineDto.class); } return decorator; } @@ -562,12 +556,7 @@ public class DecoratorService extends DecoratorProvider { } private String get(ReferentialReference<T> id) { - String value = cache.get(id); - if (value == null) { - value = decorator.toString(id); - cache.put(id, value); - } - return value; + return cache.computeIfAbsent(id, k -> decorator.toString(id)); } @Override @@ -576,7 +565,32 @@ public class DecoratorService extends DecoratorProvider { } public void sort(List<ReferentialReference<T>> data) { - Collections.sort(data, this); + data.sort(this); + cache.clear(); + } + } + + private class DataReferenceComparator<T extends DataDto> implements Comparator<DataReference<T>> { + + private final DataReferenceDecorator<T> decorator; + + private final Map<DataReference<T>, String> cache = new HashMap<>(); + + private DataReferenceComparator(Class<T> type) { + decorator = getDataReferenceDecorator(type); + } + + private String get(DataReference<T> id) { + return cache.computeIfAbsent(id, k -> decorator.toString(id)); + } + + @Override + public int compare(DataReference<T> o1, DataReference<T> o2) { + return get(o1).compareTo(get(o2)); + } + + public void sort(List<DataReference<T>> data) { + data.sort(this); cache.clear(); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java index 10eae41..256bcf2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java @@ -937,7 +937,7 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U } - // sort data from first decorator context + // sortReferential data from first decorator context DataReferenceDecorator<R> decorator = getDataReferenceDecorator(dtoClass); DecoratorUtil.sort(decorator, data, 0); @@ -964,7 +964,7 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U } - // sort data from first decorator context + // sortReferential data from first decorator context ReferentialReferenceDecorator<R> decorator = getReferentialReferenceDecorator(dtoClass); DecoratorUtil.sort(decorator, data, 0); @@ -998,7 +998,7 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U } - // sort data from first decorator context + // sortReferential data from first decorator context ReferentialReferenceDecorator<R> decorator = getReferentialReferenceDecorator(dtoClass); DecoratorUtil.sort(decorator, data, 0); @@ -1030,7 +1030,7 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U } - // sort data from first decorator context + // sortReferential data from first decorator context DataReferenceDecorator<R> decorator = getDataReferenceDecorator(dtoClass); DecoratorUtil.sort(decorator, data, 0); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx index 349a395..d44ab79 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx @@ -73,7 +73,7 @@ public final List<DataReference<C>> getSelectedDatas() { <JScrollPane id='listPane' constraints='BorderLayout.CENTER' onFocusGained='list.requestFocus()' columnHeaderView='{listHeader}'> - <JList id='list' onMouseClicked='getHandler().onDataSelected(event)'/> + <JList id='list' genericType='DataReference<C>' onMouseClicked='getHandler().onDataSelected(event)'/> <BeanListHeader id='listHeader' genericType='DataReference< C >'/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java index 1a8af7a..131a5e0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java @@ -46,6 +46,8 @@ import javax.swing.SwingUtilities; import java.awt.Color; import java.awt.Component; import java.awt.event.MouseEvent; +import java.util.ArrayList; +import java.util.Enumeration; import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -59,21 +61,10 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U /** Logger */ private static final Log log = LogFactory.getLog(ContentListUIHandler.class); - public ContentListUIHandler(U ui, - DataContextType parentType, - DataContextType type) { + public ContentListUIHandler(U ui, DataContextType parentType, DataContextType type) { super(ui, parentType, type); } - /** - * Obtain the list of entities to display on ui from his container - * {@code bean}. - * - * @param parentId the parent id of entities to display - * @return the list of entities to display - */ - protected abstract List<DataReference<C>> getChilds(String parentId); - public abstract boolean isCanCloseChild(); @Override @@ -96,23 +87,16 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U NavigationTree treeHelper = getTreeHelper(getUi()); ListCellRenderer renderer2 = new EntityListCellRenderer(renderer, treeHelper); - getUi().getList().setCellRenderer(renderer2); } -// @Override -// protected void addFocusabelOnForm() { -// // pas besoin de gérer le focus, pas de formulaire -// } - @Override public final void openUI() { super.openUI(); // init renderer - EntityListCellRenderer renderer = (EntityListCellRenderer) - getUi().getList().getCellRenderer(); + EntityListCellRenderer renderer = (EntityListCellRenderer) getUi().getList().getCellRenderer(); renderer.init(); ContentListUIModel<E, C> model = getModel(); @@ -152,14 +136,24 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U model.setCanReopen(canReopen); // il n'est pas nécessaire de charger le bean car seuls ses enfants nous sont utile dans cette ecran + List<DataReference<C>> data = new ArrayList<>(); + + NavigationTree treeHelper = getTreeHelper(ui); + NavigationTreeNodeSupport selectedNode = treeHelper.getSelectedNode(); - List<DataReference<C>> data = getChilds(getSelectedParentId()); + // on charge si besoin les enfants du nœud + selectedNode.populateChilds(treeHelper.getTreeModel()); + + Enumeration children = selectedNode.children(); + while (children.hasMoreElements()) { + NavigationTreeNodeSupport o = (NavigationTreeNodeSupport) children.nextElement(); + data.add((DataReference<C>) o.getData()); + } model.setData(data); SwingUtilities.invokeLater(() -> { getUi().getListSelectionModel().clearSelection(); -// getUi().getGotoOpenChild().setEnabled(false); }); getUi().getCloseChild().setEnabled(isCanCloseChild()); @@ -234,7 +228,7 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U private final ThreadLocal<NavigationTreeNodeSupport> containerNode = new ThreadLocal<>(); - EntityListCellRenderer(ListCellRenderer delegate, NavigationTree treeHelper) { + EntityListCellRenderer(ListCellRenderer<?> delegate, NavigationTree treeHelper) { this.delegate = delegate; this.treeHelper = treeHelper; } @@ -251,13 +245,7 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U boolean cellHasFocus) { // obtain the text from the delegate renderer - JLabel comp = (JLabel) - delegate.getListCellRendererComponent(list, - value, - index, - isSelected, - cellHasFocus - ); + JLabel comp = (JLabel) delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if (value == null || !(value instanceof AbstractReference) || containerNode.get() == null) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java index 799d23a..726e92b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java @@ -22,21 +22,12 @@ package fr.ird.observe.application.swing.ui.content.list.impl.longline; * #L% */ -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; -import fr.ird.observe.services.service.data.longline.ActivityLonglineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.ArrayList; -import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -48,9 +39,6 @@ import static org.nuiton.i18n.I18n.n; */ public class ActivityLonglinesUIHandler extends ContentListUIHandler<TripLonglineDto, ActivityLonglineDto, ActivityLonglinesUI> { - /** Logger */ - private static final Log log = LogFactory.getLog(ActivityLonglinesUIHandler.class); - public ActivityLonglinesUIHandler(ActivityLonglinesUI ui) { super(ui, DataContextType.TripLongline, DataContextType.ActivityLongline); } @@ -115,17 +103,4 @@ public class ActivityLonglinesUIHandler extends ContentListUIHandler<TripLonglin } - @Override - protected List<DataReference<ActivityLonglineDto>> getChilds(String parentId) { - - ActivityLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivityLonglineService(); - DataReferenceSet<ActivityLonglineDto> activityLonglineStubByRoute = service.getActivityLonglineByTripLongline(parentId); - - if (log.isDebugEnabled()) { - log.debug("Will use " + activityLonglineStubByRoute.sizeReference() + " activities."); - } - - return new ArrayList<>(activityLonglineStubByRoute.getReferences()); - - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java index e9472b8..c4a8f92 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java @@ -27,17 +27,11 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.DataReferenceSet; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; -import fr.ird.observe.services.service.data.longline.TripLonglineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.ArrayList; -import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -49,9 +43,6 @@ import static org.nuiton.i18n.I18n.n; */ public class TripLonglinesUIHandler extends ContentListUIHandler<ProgramDto, TripLonglineDto, TripLonglinesUI> { - /** Logger */ - static private final Log log = LogFactory.getLog(TripLonglinesUIHandler.class); - public TripLonglinesUIHandler(TripLonglinesUI ui) { super(ui, DataContextType.Program, DataContextType.TripLongline); } @@ -95,23 +86,12 @@ public class TripLonglinesUIHandler extends ContentListUIHandler<ProgramDto, Tri @Override protected void finalizeOpenUI() { - Class referenceType = ProgramDto.class; - ReferentialReference<ProgramDto> programRef = getDataSource().getReferentialReference(referenceType, getSelectedParentId()); - String title = getDecoratorService().getReferentialReferenceDecorator(referenceType).toString(programRef); + NavigationTree treeHelper = getTreeHelper(ui); + ProgramLonglineNavigationTreeNode selectedNode = (ProgramLonglineNavigationTreeNode) treeHelper.getSelectedNode(); + ReferentialReference<ProgramDto> data = selectedNode.getData(); + String title = getDecoratorService().getReferentialReferenceDecorator(ProgramDto.class).toString(data); getUi().setContentTitle(title); } - @Override - protected List<DataReference<TripLonglineDto>> getChilds(String parentId) { - - TripLonglineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); - DataReferenceSet<TripLonglineDto> tripLonglineByProgram = service.getTripLonglineByProgram(parentId); - - if (log.isDebugEnabled()) { - log.debug("Will use " + tripLonglineByProgram.sizeReference() + " trips."); - } - - return new ArrayList<>(tripLonglineByProgram.getReferences()); - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java index 56536bd..e796f5b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java @@ -21,21 +21,12 @@ */ package fr.ird.observe.application.swing.ui.content.list.impl.seine; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.RouteDto; -import fr.ird.observe.services.service.data.seine.ActivitySeineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.ArrayList; -import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -45,9 +36,6 @@ import static org.nuiton.i18n.I18n.n; */ public class ActivitySeinesUIHandler extends ContentListUIHandler<RouteDto, ActivitySeineDto, ActivitySeinesUI> { - /** Logger */ - private static final Log log = LogFactory.getLog(ActivitySeinesUIHandler.class); - public ActivitySeinesUIHandler(ActivitySeinesUI ui) { super(ui, DataContextType.Route, DataContextType.ActivitySeine); } @@ -113,16 +101,4 @@ public class ActivitySeinesUIHandler extends ContentListUIHandler<RouteDto, Acti } - @Override - protected List<DataReference<ActivitySeineDto>> getChilds(String parentId) { - - ActivitySeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newActivitySeineService(); - DataReferenceSet<ActivitySeineDto> activitySeineByRoute = service.getActivitySeineByRoute(parentId); - - if (log.isDebugEnabled()) { - log.debug("Will use " + activitySeineByRoute.sizeReference() + " activities."); - } - - return new ArrayList<>(activitySeineByRoute.getReferences()); - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java index ce25730..d2f3d5b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java @@ -24,18 +24,10 @@ package fr.ird.observe.application.swing.ui.content.list.impl.seine; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.DataReferenceSet; -import fr.ird.observe.services.dto.seine.RouteDto; -import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.services.service.data.seine.RouteService; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.ArrayList; -import java.util.List; +import fr.ird.observe.services.dto.seine.RouteDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; import static org.nuiton.i18n.I18n.n; @@ -45,14 +37,10 @@ import static org.nuiton.i18n.I18n.n; */ public class RoutesUIHandler extends ContentListUIHandler<TripSeineDto, RouteDto, RoutesUI> { - /** Logger */ - private static final Log log = LogFactory.getLog(RoutesUIHandler.class); - public RoutesUIHandler(RoutesUI ui) { super(ui, DataContextType.TripSeine, DataContextType.Route); } - @Override public boolean isCanCloseChild() { return !getModel().isCanReopen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenActivitySeine(); @@ -111,17 +99,4 @@ public class RoutesUIHandler extends ContentListUIHandler<TripSeineDto, RouteDto return ContentMode.READ; } - @Override - protected List<DataReference<RouteDto>> getChilds(String parentId) { - - RouteService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); - DataReferenceSet<RouteDto> routeByTripSeine = service.getRouteByTripSeine(parentId); - - if (log.isDebugEnabled()) { - log.debug("Will use " + routeByTripSeine.sizeReference() + " routes."); - } - - return new ArrayList<>(routeByTripSeine.getReferences()); - - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java index 0840ef3..b6ac39c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java @@ -26,17 +26,11 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.DataReferenceSet; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.services.service.data.seine.TripSeineService; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.ArrayList; -import java.util.List; import static org.nuiton.i18n.I18n.n; @@ -46,9 +40,6 @@ import static org.nuiton.i18n.I18n.n; */ public class TripSeinesUIHandler extends ContentListUIHandler<ProgramDto, TripSeineDto, TripSeinesUI> { - /** Logger */ - static private final Log log = LogFactory.getLog(TripSeinesUIHandler.class); - public TripSeinesUIHandler(TripSeinesUI ui) { super(ui, DataContextType.Program, DataContextType.TripSeine); } @@ -87,9 +78,10 @@ public class TripSeinesUIHandler extends ContentListUIHandler<ProgramDto, TripSe @Override protected void finalizeOpenUI() { - Class referenceType = ProgramDto.class; - ReferentialReference<ProgramDto> programRef = getDataSource().getReferentialReference(referenceType, getSelectedParentId()); - String title = getDecoratorService().getReferentialReferenceDecorator(referenceType).toString(programRef); + NavigationTree treeHelper = getTreeHelper(ui); + ProgramSeineNavigationTreeNode selectedNode = (ProgramSeineNavigationTreeNode) treeHelper.getSelectedNode(); + ReferentialReference<ProgramDto> data = selectedNode.getData(); + String title = getDecoratorService().getReferentialReferenceDecorator(ProgramDto.class).toString(data); getUi().setContentTitle(title); } @@ -98,17 +90,4 @@ public class TripSeinesUIHandler extends ContentListUIHandler<ProgramDto, TripSe return !getModel().isCanReopen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenRoute(); } - @Override - protected List<DataReference<TripSeineDto>> getChilds(String parentId) { - - TripSeineService service = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); - DataReferenceSet<TripSeineDto> tripSeineByProgram = service.getTripSeineByProgram(parentId); - - if (log.isDebugEnabled()) { - log.debug("Will use " + tripSeineByProgram.sizeReference() + " trips."); - } - - return new ArrayList<>(tripSeineByProgram.getReferences()); - - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java index b087000..4d9d080 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java @@ -83,7 +83,15 @@ public class NavigationTree extends JXTree { private static final Log log = LogFactory.getLog(NavigationTree.class); public static void sortPrograms(List<ReferentialReference<ProgramDto>> data) { - ObserveSwingApplicationContext.get().getDecoratorService().sort(ProgramDto.class, data); + ObserveSwingApplicationContext.get().getDecoratorService().sortReferential(ProgramDto.class, data); + } + + public static void sortTripSeines(List<DataReference<TripSeineDto>> data) { + ObserveSwingApplicationContext.get().getDecoratorService().sortData(TripSeineDto.class, data); + } + + public static void sortTripLLonglines(List<DataReference<TripLonglineDto>> data) { + ObserveSwingApplicationContext.get().getDecoratorService().sortData(TripLonglineDto.class, data); } public NavigationTree() { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java index 898d83a..ef5e065 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java @@ -72,7 +72,7 @@ public class NavigationTreeModel extends DefaultTreeModel { if (result == null) { - // un des noeud n'a pas ete trouve, on sort + // un des noeud n'a pas ete trouve, on sortReferential break; } node = result; @@ -98,12 +98,16 @@ public class NavigationTreeModel extends DefaultTreeModel { if (ProgramHelper.isProgramLongline(program)) { - Collection<DataReference<TripLonglineDto>> references = tripsLonglineByProgram.getOrDefault(program, Collections.emptyList()); + List<DataReference<TripLonglineDto>> references = new ArrayList<>(tripsLonglineByProgram.getOrDefault(program, Collections.emptyList())); + NavigationTree.sortTripLLonglines(references); + ProgramLonglineNavigationTreeNode programNode = new ProgramLonglineNavigationTreeNode(program, references); root.add(programNode); } else if (ProgramHelper.isProgramSeine(program)) { - Collection<DataReference<TripSeineDto>> references = tripsSeineByProgram.getOrDefault(program, Collections.emptyList()); + List<DataReference<TripSeineDto>> references = new ArrayList<>(tripsSeineByProgram.getOrDefault(program, Collections.emptyList())); + NavigationTree.sortTripSeines(references); + ProgramSeineNavigationTreeNode programNode = new ProgramSeineNavigationTreeNode(program, references); root.add(programNode); } @@ -131,30 +135,30 @@ public class NavigationTreeModel extends DefaultTreeModel { return (RootNavigationTreeNode) super.getRoot(); } - public void setLoadSeine(boolean loadSeine) { - this.loadSeine = loadSeine; - } - - public void setLoadLongline(boolean loadLongline) { - this.loadLongline = loadLongline; - } - - public void setLoadReferential(boolean loadReferential) { - this.loadReferential = loadReferential; - } - public boolean isLoadSeine() { return loadSeine; } + public void setLoadSeine(boolean loadSeine) { + this.loadSeine = loadSeine; + } + public boolean isLoadLongline() { return loadLongline; } + public void setLoadLongline(boolean loadLongline) { + this.loadLongline = loadLongline; + } + public boolean isLoadReferential() { return loadReferential; } + public void setLoadReferential(boolean loadReferential) { + this.loadReferential = loadReferential; + } + public <N extends NavigationTreeNodeSupport> void reload(N node) { node.reload(); super.reload(node); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java index 17a41a9..d6ff1ab 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java @@ -193,7 +193,7 @@ public class SelectionTreeModel extends DefaultTreeModel { List<ReferentialReference<ProgramDto>> programs = new ArrayList<>(navigationResult.getPrograms()); - ObserveSwingApplicationContext.get().getDecoratorService().sort(ProgramDto.class, programs); + ObserveSwingApplicationContext.get().getDecoratorService().sortReferential(ProgramDto.class, programs); boolean showEmptyTrips = isShowEmptyTrips(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.