Ignore:
Timestamp:
2016-09-03T22:23:26+02:00 (8 years ago)
Author:
donvip
Message:

fix #josm13501 - robustness against degraded case

Location:
applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways/AlignWaysAlgnSegment.java

    r32920 r32921  
    114114     */
    115115    private EastNorth getPivotCoord(PivotLocations pp) {
    116         switch (pp) {
    117         case NONE:
    118             return null;
    119         case NODE1:
    120             return segment.way.getNode(segment.lowerIndex).getEastNorth();
    121         case NODE2:
    122             return segment.way.getNode(segment.lowerIndex + 1).getEastNorth();
    123         case CENTRE:
    124             return getPivotCoord(PivotLocations.NODE1).getCenter(
    125                     getPivotCoord(PivotLocations.NODE2));
    126         default:
    127             // Should never happen
     116        try {
     117            EastNorth n1;
     118            EastNorth n2;
     119            switch (pp) {
     120            case NODE1:
     121                return segment.way.getNode(segment.lowerIndex).getEastNorth();
     122            case NODE2:
     123                return segment.way.getNode(segment.lowerIndex + 1).getEastNorth();
     124            case CENTRE:
     125                n1 = getPivotCoord(PivotLocations.NODE1);
     126                n2 = getPivotCoord(PivotLocations.NODE2);
     127                return n1 != null && n2 != null ? n1.getCenter(n2) : null;
     128            case NONE:
     129            default:
     130                return null;
     131            }
     132        } catch (IndexOutOfBoundsException e) {
     133            Main.error(e);
    128134            return null;
    129135        }
  • applications/editors/josm/plugins/alignways/src/com/tilusnet/josm/plugins/alignways/AlignWaysSegment.java

    r32920 r32921  
    1414import java.util.HashSet;
    1515
     16import org.openstreetmap.josm.Main;
    1617import org.openstreetmap.josm.data.Bounds;
    1718import org.openstreetmap.josm.data.osm.Node;
     
    5455    void setSegmentEndpoints(WaySegment segment) {
    5556        if (segment != null) {
    56             Node node1 = segment.way.getNode(segment.lowerIndex);
    57             Node node2 = segment.way.getNode(segment.lowerIndex + 1);
     57            try {
     58                Node node1 = segment.way.getNode(segment.lowerIndex);
     59                Node node2 = segment.way.getNode(segment.lowerIndex + 1);
    5860
    59             segmentEndPoints = new HashSet<>();
    60             segmentEndPoints.add(node1);
    61             segmentEndPoints.add(node2);
     61                segmentEndPoints = new HashSet<>();
     62                segmentEndPoints.add(node1);
     63                segmentEndPoints.add(node2);
     64            } catch (IndexOutOfBoundsException e) {
     65                Main.error(e);
     66            }
    6267        }
    6368    }
     
    97102
    98103    protected void drawSegment(Graphics2D g, MapView mv) {
    99         Node n1 = segment.way.getNode(segment.lowerIndex);
    100         Node n2 = segment.way.getNode(segment.lowerIndex + 1);
     104        try {
     105            Node n1 = segment.way.getNode(segment.lowerIndex);
     106            Node n2 = segment.way.getNode(segment.lowerIndex + 1);
    101107
    102         Line2D newline = new Line2D.Double(mv.getPoint(n1), mv.getPoint(n2));
    103         g.draw(newline);
     108            g.draw(new Line2D.Double(mv.getPoint(n1), mv.getPoint(n2)));
     109        } catch (IndexOutOfBoundsException e) {
     110            Main.error(e);
     111        }
    104112    }
    105113
Note: See TracChangeset for help on using the changeset viewer.