Rev 3175 |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
/*
* Copyright (C) 2010, 2012.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 3 or
* version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*/
package uk.me.parabola.mkgmap.reader.polish;
import uk.me.parabola.imgfmt.app.CoordNode;
import uk.me.parabola.imgfmt.app.net.GeneralRouteRestriction;
import uk.me.parabola.mkgmap.general.MapDetails;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* Helps handling turn restrictions for Polish format.
* Remembers, and later, after reading through the map,
* adds all restrictions to the map.
*
* Use one instance of this class per file.
*
* @author Supun Jayathilake
*/
public class RestrictionHelper
{
// Holds all collected restrictions.
private final List<PolishTurnRestriction
> allRestrictions =
new ArrayList<PolishTurnRestriction
>();
public void processAndAddRestrictions
(RoadHelper roadHelper, MapDetails mapper
) {
Map<Long, CoordNode
> allNodes = roadHelper.
getNodeCoords();
for (PolishTurnRestriction tr : allRestrictions
) {
GeneralRouteRestriction grr =
new GeneralRouteRestriction
("not", tr.
getExceptMask(),
Long.
toString(tr.
getNodId()));
grr.
setFromNode(allNodes.
get(tr.
getFromNodId()));
grr.
setFromWayId(tr.
getRoadIdA());
grr.
setToNode(allNodes.
get(tr.
getToNodId()));
if (tr.
getViaNodId() !=
0){
grr.
setViaNodes(Arrays.
asList(allNodes.
get(tr.
getNodId()),allNodes.
get(tr.
getViaNodId())));
grr.
setViaWayIds(Arrays.
asList(tr.
getRoadIdB()));
grr.
setToWayId(tr.
getRoadIdC());
} else {
grr.
setViaNodes(Arrays.
asList(allNodes.
get(tr.
getNodId())));
grr.
setToWayId(tr.
getRoadIdB());
}
mapper.
addRestriction(grr
); // restriction should be part of the map
}
}
/**
* Restriction collector.
* @param restriction Restriction to be added to the map.
*/
public void addRestriction
(PolishTurnRestriction restriction
) {
allRestrictions.
add(restriction
);
}
}