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 c54d9e52ac762d8c2a1dec0b6b01ff4db375e502 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Nov 26 17:42:23 2016 +0100 [ui] optimize sort --- .../swing/decoration/DecoratorService.java | 102 ++++----------------- .../ui/content/list/ContentListUIHandler.java | 6 +- .../swing/ui/tree/navigation/NavigationTree.java | 14 +-- .../ui/tree/navigation/NavigationTreeModel.java | 8 +- .../ui/tree/selection/SelectionTreeModel.java | 3 +- .../services/dto/longline/TripLonglineHelper.java | 14 +++ .../services/dto/referential/ProgramHelper.java | 13 +++ .../services/dto/seine/TripSeineHelper.java | 16 +++- 8 files changed, 72 insertions(+), 104 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 7c2de17..74ae5bb 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,11 +138,7 @@ import fr.ird.observe.util.GPSPoint; import org.nuiton.decorator.Decorator; import org.nuiton.decorator.DecoratorProvider; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; import java.util.Locale; -import java.util.Map; import static org.nuiton.i18n.I18n.l; import static org.nuiton.i18n.I18n.n; @@ -212,23 +208,23 @@ public class DecoratorService extends DecoratorProvider { 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; - } +// 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() { @@ -439,25 +435,16 @@ public class DecoratorService extends DecoratorProvider { } - 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()); + return (ReferentialReferenceDecorator) getDecoratorByType(ReferentialReference.class, referenceType.getSimpleName()); } public <T extends DataDto> DataReferenceDecorator<T> getDataReferenceDecorator(Class<T> referenceType) { - return (DataReferenceDecorator<T>) (DataReferenceDecorator) getDecoratorByType(DataReference.class, referenceType.getSimpleName()); + return (DataReferenceDecorator) getDecoratorByType(DataReference.class, referenceType.getSimpleName()); } public <T extends DataDto> DataReferenceDecorator<T> getDataReferenceDecorator(Class<T> referenceType, String context) { - return (DataReferenceDecorator<T>) (DataReferenceDecorator) getDecoratorByType(DataReference.class, referenceType.getSimpleName() + context); + return (DataReferenceDecorator) getDecoratorByType(DataReference.class, referenceType.getSimpleName() + context); } public <D extends IdDto> Decorator<D> getReferenceDecorator(Class<D> referenceType) { @@ -545,53 +532,4 @@ public class DecoratorService extends DecoratorProvider { registerDecorator(context, new ObserveDecorator<>(referenceType, expression, separator)); } - private class ReferentialReferenceComparator<T extends ReferentialDto> implements Comparator<ReferentialReference<T>> { - - private final ReferentialReferenceDecorator<T> decorator; - - private final Map<ReferentialReference<T>, String> cache = new HashMap<>(); - - private ReferentialReferenceComparator(Class<T> type) { - decorator = getReferentialReferenceDecorator(type); - } - - private String get(ReferentialReference<T> id) { - return cache.computeIfAbsent(id, k -> decorator.toString(id)); - } - - @Override - public int compare(ReferentialReference<T> o1, ReferentialReference<T> o2) { - return get(o1).compareTo(get(o2)); - } - - public void sort(List<ReferentialReference<T>> data) { - 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/list/ContentListUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java index 131a5e0..8f182fc 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 @@ -86,8 +86,7 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U ListCellRenderer renderer = getUi().getList().getCellRenderer(); NavigationTree treeHelper = getTreeHelper(getUi()); - ListCellRenderer renderer2 = new EntityListCellRenderer(renderer, treeHelper); - getUi().getList().setCellRenderer(renderer2); + getUi().getList().setCellRenderer(new EntityListCellRenderer(renderer, treeHelper)); } @Override @@ -266,7 +265,8 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U comp.setIcon(icon); Color color = node.getColor(); comp.setForeground(color); - comp.setBackground(null); + comp.setText(node.getText()); +// comp.setBackground(null); return comp; } } 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 4d9d080..832e5ce 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 @@ -82,18 +82,6 @@ public class NavigationTree extends JXTree { /** Logger */ private static final Log log = LogFactory.getLog(NavigationTree.class); - public static void sortPrograms(List<ReferentialReference<ProgramDto>> 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() { super(new NavigationTreeModel()); setLargeModel(true); @@ -504,7 +492,7 @@ public class NavigationTree extends JXTree { List<ReferentialReference<ProgramDto>> data = new ArrayList<>(programs); int newIndex = 0; if (CollectionUtils.isNotEmpty(data)) { - sortPrograms(data); + data = ProgramHelper.sort(data); newIndex = data.indexOf(bean); } 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 ef5e065..29253a2 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 @@ -30,11 +30,13 @@ import fr.ird.observe.application.swing.ui.tree.navigation.nodes.referential.Ref import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.longline.TripLonglineHelper; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ProgramHelper; import fr.ird.observe.services.dto.referential.ReferentialHelper; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.dto.seine.TripSeineHelper; import fr.ird.observe.services.service.data.NavigationRequest; import fr.ird.observe.services.service.data.NavigationResult; import fr.ird.observe.services.service.data.NavigationService; @@ -88,7 +90,7 @@ public class NavigationTreeModel extends DefaultTreeModel { NavigationResult navigationResult = navigationService.getNavigation(navigationRequest); List<ReferentialReference<ProgramDto>> programs = new ArrayList<>(navigationResult.getPrograms()); - NavigationTree.sortPrograms(programs); + programs = ProgramHelper.sort(programs); RootNavigationTreeNode root = new RootNavigationTreeNode(); @@ -99,14 +101,14 @@ public class NavigationTreeModel extends DefaultTreeModel { if (ProgramHelper.isProgramLongline(program)) { List<DataReference<TripLonglineDto>> references = new ArrayList<>(tripsLonglineByProgram.getOrDefault(program, Collections.emptyList())); - NavigationTree.sortTripLLonglines(references); + references = TripLonglineHelper.sort(references); ProgramLonglineNavigationTreeNode programNode = new ProgramLonglineNavigationTreeNode(program, references); root.add(programNode); } else if (ProgramHelper.isProgramSeine(program)) { List<DataReference<TripSeineDto>> references = new ArrayList<>(tripsSeineByProgram.getOrDefault(program, Collections.emptyList())); - NavigationTree.sortTripSeines(references); + references = TripSeineHelper.sort(references); ProgramSeineNavigationTreeNode programNode = new ProgramSeineNavigationTreeNode(program, references); root.add(programNode); 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 d6ff1ab..274bdde 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 @@ -25,7 +25,6 @@ package fr.ird.observe.application.swing.ui.tree.selection; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.admin.export.TripEntry; import fr.ird.observe.application.swing.ui.tree.selection.nodes.ProgramSelectionTreeNode; @@ -193,7 +192,7 @@ public class SelectionTreeModel extends DefaultTreeModel { List<ReferentialReference<ProgramDto>> programs = new ArrayList<>(navigationResult.getPrograms()); - ObserveSwingApplicationContext.get().getDecoratorService().sortReferential(ProgramDto.class, programs); + programs = ProgramHelper.sort(programs); boolean showEmptyTrips = isShowEmptyTrips(); diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/longline/TripLonglineHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/longline/TripLonglineHelper.java index 7228b95..f8a9693 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/longline/TripLonglineHelper.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/longline/TripLonglineHelper.java @@ -24,6 +24,11 @@ package fr.ird.observe.services.dto.longline; import fr.ird.observe.services.dto.DataReference; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + public class TripLonglineHelper extends GeneratedTripLonglineHelper { public static int getActivityCount(DataReference<TripLonglineDto> data) { @@ -33,4 +38,13 @@ public class TripLonglineHelper extends GeneratedTripLonglineHelper { public static String getProgramId(DataReference<TripLonglineDto> data) { return (String) data.getPropertyValue(TripLonglineDto.PROPERTY_PROGRAM + "Id"); } + + public static List<DataReference<TripLonglineDto>> sort(List<DataReference<TripLonglineDto>> data) { + Map<Object, DataReference<TripLonglineDto>> map = new TreeMap<>(); + for (DataReference<TripLonglineDto> datum : data) { + map.put(datum.getPropertyValue(TripLonglineDto.PROPERTY_START_DATE), datum); + } + return new ArrayList<>(map.values()); + } + } diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ProgramHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ProgramHelper.java index dfae73d..242b775 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ProgramHelper.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/ProgramHelper.java @@ -24,6 +24,11 @@ package fr.ird.observe.services.dto.referential; import fr.ird.observe.services.dto.constants.GearType; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + public class ProgramHelper extends GeneratedProgramHelper { public static boolean isProgramLongline(ReferentialReference<ProgramDto> programDtoRef) { @@ -58,4 +63,12 @@ public class ProgramHelper extends GeneratedProgramHelper { return (int) reference.getPropertyValue(ProgramDto.PROPERTY_TRIP_COUNT); } + public static List<ReferentialReference<ProgramDto>> sort(List<ReferentialReference<ProgramDto>> data) { + Map<Object, ReferentialReference<ProgramDto>> map = new TreeMap<>(); + for (ReferentialReference<ProgramDto> datum : data) { + map.put(datum.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE) + "" + datum.getPropertyValue(ProgramDto.PROPERTY_LABEL), datum); + } + return new ArrayList<>(map.values()); + } + } diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/seine/TripSeineHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/seine/TripSeineHelper.java index d42c8a7..1efebb5 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/seine/TripSeineHelper.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/seine/TripSeineHelper.java @@ -24,12 +24,26 @@ package fr.ird.observe.services.dto.seine; import fr.ird.observe.services.dto.DataReference; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + public class TripSeineHelper extends GeneratedTripSeineHelper { + public static int getRouteCount(DataReference<TripSeineDto> data) { return (int) data.getPropertyValue(TripSeineDto.PROPERTY_ROUTE_COUNT); } public static String getProgramId(DataReference<TripSeineDto> data) { - return (String) data.getPropertyValue(TripSeineDto.PROPERTY_PROGRAM+"Id"); + return (String) data.getPropertyValue(TripSeineDto.PROPERTY_PROGRAM + "Id"); + } + + public static List<DataReference<TripSeineDto>> sort(List<DataReference<TripSeineDto>> data) { + Map<Object, DataReference<TripSeineDto>> map = new TreeMap<>(); + for (DataReference<TripSeineDto> datum : data) { + map.put(datum.getPropertyValue(TripSeineDto.PROPERTY_START_DATE), datum); + } + return new ArrayList<>(map.values()); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.