Ignore:
Timestamp:
2016-11-20T17:33:33+01:00 (3 years ago)
Author:
simon04
Message:

see #13376 - Use TimeUnit instead of combinations of 1000/60/60/24

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/gpx/GpxData.java

    r11095 r11288  
    66import java.util.Collections;
    77import java.util.Date;
     8import java.util.DoubleSummaryStatistics;
    89import java.util.HashSet;
    910import java.util.Iterator;
     
    1819import org.openstreetmap.josm.data.DataSource;
    1920import org.openstreetmap.josm.data.coor.EastNorth;
    20 import org.openstreetmap.josm.tools.Utils;
    2121
    2222/**
     
    193193     */
    194194    public static Date[] getMinMaxTimeForTrack(GpxTrack trk) {
    195         WayPoint earliest = null, latest = null;
    196 
    197         for (GpxTrackSegment seg : trk.getSegments()) {
    198             for (WayPoint pnt : seg.getWayPoints()) {
    199                 if (latest == null) {
    200                     latest = earliest = pnt;
    201                 } else {
    202                     if (pnt.compareTo(earliest) < 0) {
    203                         earliest = pnt;
    204                     } else if (pnt.compareTo(latest) > 0) {
    205                         latest = pnt;
    206                     }
    207                 }
    208             }
    209         }
    210         if (earliest == null || latest == null) return null;
    211         return new Date[]{earliest.getTime(), latest.getTime()};
     195        final DoubleSummaryStatistics statistics = trk.getSegments().stream()
     196                .flatMap(seg -> seg.getWayPoints().stream())
     197                .mapToDouble(pnt -> pnt.time)
     198                .summaryStatistics();
     199        return statistics.getCount() == 0
     200                ? null
     201                : new Date[]{new Date((long) (statistics.getMin() * 1000)), new Date((long) (statistics.getMax() * 1000))};
    212202    }
    213203
     
    220210    */
    221211    public Date[] getMinMaxTimeForAllTracks() {
    222         double min = 1e100;
    223         double max = -1e100;
    224         double now = System.currentTimeMillis()/1000.0;
    225         for (GpxTrack trk: tracks) {
    226             for (GpxTrackSegment seg : trk.getSegments()) {
    227                 for (WayPoint pnt : seg.getWayPoints()) {
    228                     double t = pnt.time;
    229                     if (t > 0 && t <= now) {
    230                         if (t > max) max = t;
    231                         if (t < min) min = t;
    232                     }
    233                 }
    234             }
    235         }
    236         if (Utils.equalsEpsilon(min, 1e100) || Utils.equalsEpsilon(max, -1e100)) return new Date[0];
    237         return new Date[]{new Date((long) (min * 1000)), new Date((long) (max * 1000))};
     212        double now = System.currentTimeMillis() / 1000.0;
     213        final DoubleSummaryStatistics statistics = tracks.stream()
     214                .flatMap(trk -> trk.getSegments().stream())
     215                .flatMap(seg -> seg.getWayPoints().stream())
     216                .mapToDouble(pnt -> pnt.time)
     217                .filter(t -> t > 0 && t <= now)
     218                .summaryStatistics();
     219        return statistics.getCount() == 0
     220                ? new Date[0]
     221                : new Date[]{new Date((long) (statistics.getMin() * 1000)), new Date((long) (statistics.getMax() * 1000))};
    238222    }
    239223
Note: See TracChangeset for help on using the changeset viewer.