|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.openstreetmap.josm.data.osm.DataSetMerger
public class DataSetMerger
A dataset merger which takes a target and a source dataset and merges the source data set onto the target dataset.
Field Summary | |
---|---|
private ConflictCollection |
conflicts
the collection of conflicts created during merging |
private java.util.Map<PrimitiveId,PrimitiveId> |
mergedMap
A map of all primitives that got replaced with other primitives. |
private java.util.Set<OsmPrimitive> |
objectsToDelete
|
private java.util.Set<PrimitiveId> |
objectsWithChildrenToMerge
a set of primitive ids for which we have to fix references (to nodes and to relation members) after the first phase of merging |
private DataSet |
sourceDataSet
the source dataset where primitives are merged from |
private DataSet |
targetDataSet
the target dataset for merging |
Constructor Summary | |
---|---|
DataSetMerger(DataSet targetDataSet,
DataSet sourceDataSet)
constructor The visitor will merge theirDataSet onto myDataSet |
Method Summary | |
---|---|
protected void |
addConflict(Conflict<?> c)
|
protected void |
addConflict(OsmPrimitive my,
OsmPrimitive their)
|
protected void |
deleteMarkedObjects()
Deleted objects in objectsToDelete set and create conflicts for objects that cannot be deleted because they're referenced in the target dataset. |
protected void |
fixIncomplete(Way other)
|
void |
fixReferences()
Postprocess the dataset and fix all merged references to point to the actual data. |
ConflictCollection |
getConflicts()
replies the map of conflicts |
protected OsmPrimitive |
getMergeTarget(OsmPrimitive mergeSource)
|
DataSet |
getTargetDataSet()
replies my dataset |
void |
merge()
Runs the merge operation. |
void |
merge(ProgressMonitor progressMonitor)
Runs the merge operation. |
private boolean |
mergeById(OsmPrimitive source)
Tries to merge a primitive source into an existing primitive with the same id. |
private void |
mergeNodeList(Way source)
Merges the node list of a source way onto its target way. |
protected void |
mergePrimitive(OsmPrimitive source,
java.util.Collection<? extends OsmPrimitive> candidates)
Merges a primitive other of type |
private void |
mergeRelationMembers(Relation source)
Merges the relation members of a source relation onto the corresponding target relation. |
private void |
resetPrimitive(OsmPrimitive osm)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final ConflictCollection conflicts
private final DataSet targetDataSet
private final DataSet sourceDataSet
private final java.util.Map<PrimitiveId,PrimitiveId> mergedMap
private final java.util.Set<PrimitiveId> objectsWithChildrenToMerge
private final java.util.Set<OsmPrimitive> objectsToDelete
Constructor Detail |
---|
public DataSetMerger(DataSet targetDataSet, DataSet sourceDataSet) throws java.lang.IllegalArgumentException
theirDataSet
onto myDataSet
targetDataSet
- dataset with my primitives. Must not be null.sourceDataSet
- dataset with their primitives. Ignored, if null.
java.lang.IllegalArgumentException
- thrown if myDataSet is nullMethod Detail |
---|
protected void mergePrimitive(OsmPrimitive source, java.util.Collection<? extends OsmPrimitive> candidates)
other
of type onto my primitives.
If other.id != 0 it tries to merge it with an corresponding primitive from
my dataset with the same id. If this is not possible a conflict is remembered
in conflicts
.
If other.id == 0 it tries to find a primitive in my dataset with id == 0 which
is semantically equal. If it finds one it merges its technical attributes onto
my primitive.
P
- the type of the other primitivesource
- the other primitiveprotected OsmPrimitive getMergeTarget(OsmPrimitive mergeSource) throws java.lang.IllegalStateException
java.lang.IllegalStateException
protected void addConflict(Conflict<?> c)
protected void addConflict(OsmPrimitive my, OsmPrimitive their)
protected void fixIncomplete(Way other)
public void fixReferences()
protected void deleteMarkedObjects()
private final void resetPrimitive(OsmPrimitive osm)
private void mergeNodeList(Way source) throws java.lang.IllegalStateException
source
- the source way
java.lang.IllegalStateException
- thrown if no target way can be found for the source way
java.lang.IllegalStateException
- thrown if there isn't a target node for one of the nodes in the source wayprivate void mergeRelationMembers(Relation source) throws java.lang.IllegalStateException
source
- the source relation
java.lang.IllegalStateException
- thrown if there is no corresponding target relation
java.lang.IllegalStateException
- thrown if there isn't a corresponding target object for one of the relation
members in sourceprivate boolean mergeById(OsmPrimitive source)
source
into an existing primitive with the same id.
source
- the source primitive which is to be merged into a target primitive
source
into a target object; false, otherwisepublic void merge()
OsmPrimitive
s are in
#getMyDataSet()
.
See getConflicts()
for a map of conflicts after the merge operation.
public void merge(ProgressMonitor progressMonitor)
OsmPrimitive
s are in
#getMyDataSet()
.
See getConflicts()
for a map of conflicts after the merge operation.
public DataSet getTargetDataSet()
public ConflictCollection getConflicts()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |