Ignore:
Timestamp:
2017-08-21T10:53:02+02:00 (7 years ago)
Author:
giackserva
Message:

[pt_assistant] stop sorter renamed into relation sorter and used for fixing sorting errors

Location:
applications/editors/josm/plugins/pt_assistant
Files:
1 added
1 deleted
2 edited
2 moved

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/PTAssistantPlugin.java

    r33473 r33509  
    2424import org.openstreetmap.josm.plugins.pt_assistant.actions.EditHighlightedRelationsAction;
    2525import org.openstreetmap.josm.plugins.pt_assistant.actions.RepeatLastFixAction;
    26 import org.openstreetmap.josm.plugins.pt_assistant.actions.SortPTStopsAction;
     26import org.openstreetmap.josm.plugins.pt_assistant.actions.SortPTRouteMembersAction;
    2727import org.openstreetmap.josm.plugins.pt_assistant.actions.SplitRoundaboutAction;
    2828import org.openstreetmap.josm.plugins.pt_assistant.data.PTRouteSegment;
     
    7474        editHighlightedRelationsMenu = MainMenu.add(Main.main.menu.toolsMenu, editHighlightedRelationsAction);
    7575        MainMenu.add(Main.main.menu.toolsMenu, new SplitRoundaboutAction());
    76         MainMenu.add(Main.main.menu.toolsMenu, new SortPTStopsAction());
     76        MainMenu.add(Main.main.menu.toolsMenu, new SortPTRouteMembersAction());
    7777        MainMenu.add(Main.main.menu.toolsMenu, new CreatePlatformNodeAction());
    7878    }
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/SortPTRouteMembersAction.java

    r33506 r33509  
    3636
    3737/**
    38  * Sorts the stop positions in a PT route according to the assigned ways
     38 * Sorts the members of a PT route. It orders first the ways, then the stops
     39 * according to the assigned ways
    3940 *
    4041 * @author giacomo
    4142 *
    4243 */
    43 public class SortPTStopsAction extends JosmAction {
    44 
    45     private static final String ACTION_NAME = "Sort PT Stops";
     44public class SortPTRouteMembersAction extends JosmAction {
     45
     46    private static final String ACTION_NAME = "Sort PT Route Members";
    4647
    4748    /**
    48      * Creates a new SortPTStopsAction
     49     * Creates a new SortPTRouteMembersAction
    4950     */
    50     public SortPTStopsAction() {
    51         super(ACTION_NAME, "icons/sortptstops", ACTION_NAME, null, true);
     51    public SortPTRouteMembersAction() {
     52        super(ACTION_NAME, "icons/sortptroutemembers", ACTION_NAME, null, true);
    5253    }
    5354
     
    8687    private void continueAfterDownload(Relation rel) {
    8788        Relation newRel = new Relation(rel);
    88         sortPTStops(newRel);
     89        sortPTRouteMembers(newRel);
    8990        Main.main.undoRedo.add(new ChangeCommand(rel, newRel));
    9091    }
    9192
    92     public void sortPTStops(Relation rel) {
     93    /***
     94     * Sort the members of the PT route.
     95     *
     96     * @param rel route to be sorted
     97     */
     98    public static void sortPTRouteMembers(Relation rel) {
     99        if (!RouteUtils.isVersionTwoPTRoute(rel)) {
     100            return;
     101        }
     102
    93103        List<RelationMember> members = new ArrayList<>();
    94104        List<RelationMember> oldMembers = rel.getMembers();
     
    184194    }
    185195
    186     private List<PTStop> sortSameWayStops(List<PTStop> stps, Way way, Way prev, Way next) {
     196    private static List<PTStop> sortSameWayStops(List<PTStop> stps, Way way, Way prev, Way next) {
    187197        Map<Node, List<PTStop>> closeNodes = new HashMap<>();
    188198        List<PTStop> noLocationStops = new ArrayList<>();
     
    218228    }
    219229
    220     private List<PTStop> getSortedStops(List<Node> nodes,
     230    private static List<PTStop> getSortedStops(List<Node> nodes,
    221231            Map<Node, List<PTStop>> closeNodes) {
    222232
     
    241251    }
    242252
    243     private Node findClosestNode(PTStop stop, List<Node> nodes) {
     253    private static Node findClosestNode(PTStop stop, List<Node> nodes) {
    244254        EastNorth stopEN = stopEastNorth(stop);
    245255        if (stopEN == null)
     
    257267    }
    258268
    259     private EastNorth stopEastNorth(PTStop stop) {
     269    private static EastNorth stopEastNorth(PTStop stop) {
    260270        if (stop.getStopPosition() != null)
    261271            return stop.getStopPosition().getEastNorth();
  • applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/validation/RouteChecker.java

    r33508 r33509  
    2626import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionType.Direction;
    2727import org.openstreetmap.josm.gui.dialogs.relation.sort.WayConnectionTypeCalculator;
     28import org.openstreetmap.josm.plugins.pt_assistant.actions.SortPTRouteMembersAction;
    2829import org.openstreetmap.josm.plugins.pt_assistant.data.PTRouteDataManager;
    2930import org.openstreetmap.josm.plugins.pt_assistant.data.PTStop;
     
    328329        Relation originalRelation = (Relation) primitives.iterator().next();
    329330
    330         // separate ways from stops (because otherwise the order of
    331         // stops/platforms can be messed up by the sorter:
    332         List<RelationMember> members = originalRelation.getMembers();
    333         final List<RelationMember> stops = new ArrayList<>();
    334         final List<RelationMember> ways = new ArrayList<>();
    335         for (RelationMember member : members) {
    336             if (RouteUtils.isPTWay(member)) {
    337                 if ("".equals(member.getRole())) {
    338                     ways.add(member);
    339                 } else {
    340                     RelationMember modifiedMember = new RelationMember("", member.getWay());
    341                     ways.add(modifiedMember);
    342                 }
    343             } else { // stops:
    344                 if ("stop_positon".equals(member.getRole())) {
    345                     // it is not expected that stop_positions could
    346                     // be relations
    347                     if (member.getType().equals(OsmPrimitiveType.NODE)) {
    348                         RelationMember modifiedMember = new RelationMember("stop", member.getNode());
    349                         stops.add(modifiedMember);
    350                     } else { // if it is a primitive of type way:
    351                         RelationMember modifiedMember = new RelationMember("stop", member.getWay());
    352                         stops.add(modifiedMember);
    353                     }
    354                 } else { // if it is not a stop_position:
    355                     stops.add(member);
    356                 }
    357             }
    358         }
    359 
    360         // sort the ways:
    361         RelationSorter sorter = new RelationSorter();
    362         List<RelationMember> sortedWays = sorter.sortMembers(ways);
    363 
    364331        // create a new relation to pass to the command:
    365332        Relation sortedRelation = new Relation(originalRelation);
    366         List<RelationMember> sortedRelationMembers = new ArrayList<>(members.size());
    367         for (RelationMember rm : stops) {
    368             sortedRelationMembers.add(rm);
    369         }
    370         for (RelationMember rm : sortedWays) {
    371             sortedRelationMembers.add(rm);
    372         }
    373         sortedRelation.setMembers(sortedRelationMembers);
    374 
     333        SortPTRouteMembersAction.sortPTRouteMembers(sortedRelation);
    375334        return new ChangeCommand(originalRelation, sortedRelation);
    376335    }
  • applications/editors/josm/plugins/pt_assistant/test/unit/org/openstreetmap/josm/plugins/pt_assistant/actions/SortPTRouteMembersActionTest.java

    r33497 r33509  
    2121
    2222/**
    23  * Unit tests for class {@link SortPTStopsAction}.
     23 * Unit tests for class {@link SortPTRouteMembersAction}.
    2424 *
    2525 * @author giack
    2626 *
    2727 */
    28 public class SortPTStopsActionTest extends AbstractTest {
     28public class SortPTRouteMembersActionTest extends AbstractTest {
    2929
    3030    /**
     
    4545        Relation rel = (Relation) ds.getPrimitiveById(
    4646                new SimplePrimitiveId(7367762L, OsmPrimitiveType.RELATION));
    47         new SortPTStopsAction().sortPTStops(rel);
     47        SortPTRouteMembersAction.sortPTRouteMembers(rel);
    4848
    4949        assertEquals("Acitillo - Istituto Fortunato", rel.getMember(0).getNode().getName());
     
    7777        Relation rel = (Relation) ds.getPrimitives(p -> p.getType() == OsmPrimitiveType.RELATION &&
    7878                "150 Piazza Garibaldi → Osp. Monaldi".equals(p.getName())).iterator().next();
    79         new SortPTStopsAction().sortPTStops(rel);
     79        SortPTRouteMembersAction.sortPTRouteMembers(rel);
    8080
    8181        assertNull(rel.getMember(0).getNode().getName());
Note: See TracChangeset for help on using the changeset viewer.