kopia lustrzana https://github.com/JOSM/MapWithAI
GetDataRunnable: Move away from streams
Signed-off-by: Taylor Smock <tsmock@fb.com>pull/1/head
rodzic
9e00328d33
commit
b4a32e426c
|
@ -317,22 +317,34 @@ public class GetDataRunnable extends RecursiveTask<DataSet> {
|
||||||
public static void removeAlreadyAddedData(DataSet dataSet) {
|
public static void removeAlreadyAddedData(DataSet dataSet) {
|
||||||
final List<DataSet> osmData = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class).stream()
|
final List<DataSet> osmData = MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class).stream()
|
||||||
.map(OsmDataLayer::getDataSet).filter(ds -> !ds.equals(dataSet)).collect(Collectors.toList());
|
.map(OsmDataLayer::getDataSet).filter(ds -> !ds.equals(dataSet)).collect(Collectors.toList());
|
||||||
dataSet.getWays().stream().filter(way -> !way.isDeleted() && way.getOsmId() <= 0)
|
for (Way way : dataSet.getWays()) {
|
||||||
.filter(way -> osmData.stream().anyMatch(ds -> checkIfPrimitiveDuplicatesPrimitiveInDataSet(way, ds)))
|
if (!way.isDeleted() && way.getOsmId() <= 0) {
|
||||||
.forEach(way -> {
|
for (DataSet ds : osmData) {
|
||||||
final List<Node> nodes = way.getNodes();
|
if (checkIfPrimitiveDuplicatesPrimitiveInDataSet(way, ds)) {
|
||||||
Optional.ofNullable(DeleteCommand.delete(Collections.singleton(way), true, true))
|
final List<Node> nodes = way.getNodes();
|
||||||
.ifPresent(Command::executeCommand);
|
Optional.ofNullable(DeleteCommand.delete(Collections.singleton(way), true, true))
|
||||||
nodes.stream().filter(
|
.ifPresent(Command::executeCommand);
|
||||||
node -> !node.isDeleted() && node.getReferrers().stream().allMatch(OsmPrimitive::isDeleted))
|
for (Node node : nodes) {
|
||||||
.forEach(node -> node.setDeleted(true));
|
if (!node.isDeleted()
|
||||||
});
|
&& node.referrers(OsmPrimitive.class).allMatch(OsmPrimitive::isDeleted)) {
|
||||||
|
node.setDeleted(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean checkIfPrimitiveDuplicatesPrimitiveInDataSet(OsmPrimitive primitive, DataSet ds) {
|
private static boolean checkIfPrimitiveDuplicatesPrimitiveInDataSet(OsmPrimitive primitive, DataSet ds) {
|
||||||
final List<OsmPrimitive> possibleDuplicates = searchDataSet(ds, primitive);
|
final List<OsmPrimitive> possibleDuplicates = searchDataSet(ds, primitive);
|
||||||
return possibleDuplicates.stream().filter(prim -> !prim.isDeleted())
|
for (OsmPrimitive dupe : possibleDuplicates) {
|
||||||
.anyMatch(prim -> checkIfProbableDuplicate(prim, primitive));
|
if (checkIfProbableDuplicate(dupe, primitive)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean checkIfProbableDuplicate(OsmPrimitive one, OsmPrimitive two) {
|
private static boolean checkIfProbableDuplicate(OsmPrimitive one, OsmPrimitive two) {
|
||||||
|
@ -362,19 +374,18 @@ public class GetDataRunnable extends RecursiveTask<DataSet> {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T extends AbstractPrimitive> List<OsmPrimitive> searchDataSet(DataSet ds, T primitive) {
|
private static <T extends AbstractPrimitive> List<OsmPrimitive> searchDataSet(DataSet ds, T primitive) {
|
||||||
List<OsmPrimitive> returnList = Collections.emptyList();
|
|
||||||
if (primitive instanceof OsmPrimitive) {
|
if (primitive instanceof OsmPrimitive) {
|
||||||
final BBox tBBox = new BBox();
|
final BBox tBBox = new BBox();
|
||||||
tBBox.addPrimitive((OsmPrimitive) primitive, DEGREE_BUFFER);
|
tBBox.addPrimitive((OsmPrimitive) primitive, DEGREE_BUFFER);
|
||||||
if (primitive instanceof Node) {
|
if (primitive instanceof Node) {
|
||||||
returnList = new ArrayList<>(ds.searchNodes(tBBox));
|
return new ArrayList<>(ds.searchNodes(tBBox));
|
||||||
} else if (primitive instanceof Way) {
|
} else if (primitive instanceof Way) {
|
||||||
returnList = new ArrayList<>(ds.searchWays(tBBox));
|
return new ArrayList<>(ds.searchWays(tBBox));
|
||||||
} else if (primitive instanceof Relation) {
|
} else if (primitive instanceof Relation) {
|
||||||
returnList = new ArrayList<>(ds.searchRelations(tBBox));
|
return new ArrayList<>(ds.searchRelations(tBBox));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return returnList;
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Ładowanie…
Reference in New Issue