Ticket #6233: APIDataSet_cleanup.diff

File APIDataSet_cleanup.diff, 6.0 KB (added by brycenesbitt, 14 years ago)

Cleanup of existing redundancy (per comment above). No functional changes.

  • src/org/openstreetmap/josm/data/APIDataSet.java

     
    3737    private LinkedList<OsmPrimitive> toUpdate;
    3838    private LinkedList<OsmPrimitive> toDelete;
    3939
     40    /* Sort order: Relations, then Ways, then Nodes. */
     41    private Comparator<OsmPrimitive> sortRWN = new Comparator<OsmPrimitive>() {
     42        public int compare(OsmPrimitive o1, OsmPrimitive o2) {
     43            if (o1 instanceof Node && o2 instanceof Node)
     44                return 0;
     45            else if (o1 instanceof Node)
     46                return 1;
     47            else if (o2 instanceof Node)
     48                return -1;
     49
     50            if (o1 instanceof Way && o2 instanceof Way)
     51                return 0;
     52            else if (o1 instanceof Way && o2 instanceof Relation)
     53                return 1;
     54            else if (o2 instanceof Way && o1 instanceof Relation)
     55                return -1;
     56
     57            return 0;
     58        }
     59    };
     60
     61    /* Sort order: Way, then Nodes, then Relations. */
     62    private Comparator<OsmPrimitive> sortWNR = new Comparator<OsmPrimitive>() {
     63        public int compare(OsmPrimitive o1, OsmPrimitive o2) {
     64            if (o1 instanceof Node && o2 instanceof Node)
     65                return 0;
     66            else if (o1 instanceof Node)
     67                return -1;
     68            else if (o2 instanceof Node)
     69                return 1;
     70
     71            if (o1 instanceof Way && o2 instanceof Way)
     72                return 0;
     73            else if (o1 instanceof Way && o2 instanceof Relation)
     74                return -1;
     75            else if (o2 instanceof Way && o1 instanceof Relation)
     76                return 1;
     77
     78            return 0;
     79        }
     80    };
     81
    4082    /**
    4183     * creates a new empty data set
    4284     */
     
    4991    /**
    5092     * initializes the API data set with the modified primitives in <code>ds</code>
    5193     *
     94     * @todo merge with nearly identical APIDataSet()
    5295     * @param ds the data set. Ignored, if null.
    5396     */
    5497    public void init(DataSet ds) {
     
    69112                toDelete.add(osm);
    70113            }
    71114        }
    72         sortDeleted();
    73         sortNew();
    74         sortUpdated();
     115        Collections.sort(toDelete,sortRWN);
     116        Collections.sort(toAdd,   sortWNR);
     117        Collections.sort(toUpdate,sortWNR);
    75118    }
    76119
    77120    /**
    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    
    164     /**
    165121     * initializes the API data set with the modified primitives in <code>ds</code>
    166122     *
    167123     * @param ds the data set. Ignored, if null.
     
    235191                toDelete.addFirst(osm);
    236192            }
    237193        }
    238         sortNew();
    239         sortDeleted();
     194        Collections.sort(toDelete,sortRWN);
     195        Collections.sort(toAdd,   sortWNR);
     196        Collections.sort(toUpdate,sortWNR);
    240197    }
    241198
    242199    /**