Ignore:
Timestamp:
2011-06-01T21:50:26+02:00 (13 years ago)
Author:
stoecker
Message:

fix #6233 - better sorting for upload dialog

Location:
trunk/src/org/openstreetmap/josm/data
Files:
1 added
1 edited

Legend:

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

    r4104 r4113  
    2020import org.openstreetmap.josm.data.osm.Node;
    2121import org.openstreetmap.josm.data.osm.OsmPrimitive;
     22import org.openstreetmap.josm.data.osm.OsmPrimitiveComparator;
    2223import org.openstreetmap.josm.data.osm.PrimitiveId;
    2324import org.openstreetmap.josm.data.osm.Relation;
     
    7071            }
    7172        }
    72         sortDeleted();
    73         sortNew();
    74         sortUpdated();
    75     }
    76 
    77     /**
    78      * Ensures that primitives are deleted in the following order: Relations, then Ways,
    79      * then Nodes.
    80      *
    81      */
    82     protected void sortDeleted() {
    83         Collections.sort(
    84                 toDelete,
    85                 new Comparator<OsmPrimitive>() {
    86                     public int compare(OsmPrimitive o1, OsmPrimitive o2) {
    87                         if (o1 instanceof Node && o2 instanceof Node)
    88                             return 0;
    89                         else if (o1 instanceof Node)
    90                             return 1;
    91                         else if (o2 instanceof Node)
    92                             return -1;
    93 
    94                         if (o1 instanceof Way && o2 instanceof Way)
    95                             return 0;
    96                         else if (o1 instanceof Way && o2 instanceof Relation)
    97                             return 1;
    98                         else if (o2 instanceof Way && o1 instanceof Relation)
    99                             return -1;
    100 
    101                         return 0;
    102                     }
    103                 }
    104         );
    105     }
    106 
    107     /**
    108      * Ensures that primitives are added in the following order: Nodes, then Ways,
    109      * then Relations.
    110      *
    111      */
    112     protected void sortNew() {
    113         Collections.sort(
    114                 toAdd,
    115                 new Comparator<OsmPrimitive>() {
    116                     public int compare(OsmPrimitive o1, OsmPrimitive o2) {
    117                         if (o1 instanceof Node && o2 instanceof Node)
    118                             return 0;
    119                         else if (o1 instanceof Node)
    120                             return -1;
    121                         else if (o2 instanceof Node)
    122                             return 1;
    123 
    124                         if (o1 instanceof Way && o2 instanceof Way)
    125                             return 0;
    126                         else if (o1 instanceof Way && o2 instanceof Relation)
    127                             return -1;
    128                         else if (o2 instanceof Way && o1 instanceof Relation)
    129                             return 1;
    130 
    131                         return 0;
    132                     }
    133                 }
    134         );
    135     }
    136     /*
    137      * Sort list of updated elements, so it looks neat in the confirmation dialog.
    138      */
    139     protected void sortUpdated() {
    140         Collections.sort(
    141                 toUpdate,
    142                 new Comparator<OsmPrimitive>() {
    143                     public int compare(OsmPrimitive o1, OsmPrimitive o2) {
    144                         if (o1 instanceof Node && o2 instanceof Node)
    145                             return 0;
    146                         else if (o1 instanceof Node)
    147                             return -1;
    148                         else if (o2 instanceof Node)
    149                             return 1;
    150 
    151                         if (o1 instanceof Way && o2 instanceof Way)
    152                             return 0;
    153                         else if (o1 instanceof Way && o2 instanceof Relation)
    154                             return -1;
    155                         else if (o2 instanceof Way && o1 instanceof Relation)
    156                             return 1;
    157 
    158                         return 0;
    159                     }
    160                 }
    161         );
    162     }
    163    
     73        OsmPrimitiveComparator c = new OsmPrimitiveComparator();
     74        c.relationsFirst = true;
     75        Collections.sort(toDelete, c);
     76        Collections.sort(toAdd, c);
     77        Collections.sort(toUpdate, c);
     78    }
     79
    16480    /**
    16581     * initializes the API data set with the modified primitives in <code>ds</code>
     
    236152            }
    237153        }
    238         sortNew();
    239         sortDeleted();
     154        OsmPrimitiveComparator c = new OsmPrimitiveComparator();
     155        c.relationsFirst = true;
     156        Collections.sort(toDelete, c);
     157        Collections.sort(toAdd, c);
     158        Collections.sort(toUpdate, c);
    240159    }
    241160
Note: See TracChangeset for help on using the changeset viewer.