org.openstreetmap.josm.gui.conflict.pair.properties
Class PropertiesMergeModel

java.lang.Object
  extended by java.util.Observable
      extended by org.openstreetmap.josm.gui.conflict.pair.properties.PropertiesMergeModel

public class PropertiesMergeModel
extends java.util.Observable

This is the model for resolving conflicts in the properties of the OsmPrimitives. In particular, it represents conflicts in the coordinates of Nodes and the deleted or visible state of OsmPrimitives. This model is an Observable. It notifies registered Observers whenever the internal state changes. This model also emits property changes for RESOLVED_COMPLETELY_PROP. Property change listeners may register themselves using addPropertyChangeListener(PropertyChangeListener).

See Also:
Node.getCoor(), AbstractPrimitive.isDeleted(), AbstractPrimitive.isVisible()

Field Summary
private  MergeDecisionType coordMergeDecision
           
static java.lang.String DELETE_PRIMITIVE_PROP
           
private  MergeDecisionType deletedMergeDecision
           
private  OsmPrimitive my
           
private  LatLon myCoords
           
private  boolean myDeletedState
           
private  java.util.List<OsmPrimitive> myReferrers
           
static java.lang.String RESOLVED_COMPLETELY_PROP
           
private  java.lang.Boolean resolvedCompletely
           
private  java.beans.PropertyChangeSupport support
           
private  LatLon theirCoords
           
private  boolean theirDeletedState
           
private  java.util.List<OsmPrimitive> theirReferrers
           
 
Constructor Summary
PropertiesMergeModel()
           
 
Method Summary
 void addPropertyChangeListener(java.beans.PropertyChangeListener listener)
           
 java.util.List<Command> buildResolveCommand(Conflict<? extends OsmPrimitive> conflict)
          Builds the command(s) to apply the conflict resolutions to my primitive
 void decideCoordsConflict(MergeDecisionType decision)
          Decides a conflict between local and server coordinates
 void decideDeletedStateConflict(MergeDecisionType decision)
          decides the conflict between two deleted states
 void fireCompletelyResolved()
           
 LatLon getMergedCoords()
          replies the coordinates of the merged OsmPrimitive.
 java.lang.Boolean getMergedDeletedState()
          Replies deleted state of combined dataset
private  boolean getMergedDeletedState(MergeDecisionType decision)
           
 LatLon getMyCoords()
          replies the coordinates of my OsmPrimitive.
 java.lang.Boolean getMyDeletedState()
          Replies deleted state of local dataset
 OsmPrimitive getMyPrimitive()
           
 java.util.List<OsmPrimitive> getMyReferrers()
          Returns local referrers
 LatLon getTheirCoords()
          replies the coordinates of their OsmPrimitive.
 java.lang.Boolean getTheirDeletedState()
          Replies deleted state of Server dataset
 java.util.List<OsmPrimitive> getTheirReferrers()
          Returns server referrers
 boolean hasCoordConflict()
          replies true if my and their primitive have a conflict between their coordinate values
 boolean hasDeletedStateConflict()
          replies true if my and their primitive have a conflict between their deleted states
 boolean isCoordMergeDecision(MergeDecisionType decision)
          replies true if the current decision for the coordinate conflict is decision
 boolean isDecidedCoord()
          replies true if there is a coordinate conflict and if this conflict is resolved
 boolean isDecidedDeletedState()
          replies true if there is a conflict in the deleted state and if this conflict is resolved
 boolean isDeletedStateDecision(MergeDecisionType decision)
          replies true if the current decision for the deleted state conflict is decision
 boolean isResolvedCompletely()
          replies true if all conflict in this model are resolved
 void populate(Conflict<? extends OsmPrimitive> conflict)
          Populates the model with the differences between local and server version
 void removePropertyChangeListener(java.beans.PropertyChangeListener listener)
           
 
Methods inherited from class java.util.Observable
addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, notifyObservers, setChanged
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

RESOLVED_COMPLETELY_PROP

public static final java.lang.String RESOLVED_COMPLETELY_PROP

DELETE_PRIMITIVE_PROP

public static final java.lang.String DELETE_PRIMITIVE_PROP

my

private OsmPrimitive my

myCoords

private LatLon myCoords

theirCoords

private LatLon theirCoords

coordMergeDecision

private MergeDecisionType coordMergeDecision

myDeletedState

private boolean myDeletedState

theirDeletedState

private boolean theirDeletedState

myReferrers

private java.util.List<OsmPrimitive> myReferrers

theirReferrers

private java.util.List<OsmPrimitive> theirReferrers

deletedMergeDecision

private MergeDecisionType deletedMergeDecision

support

private final java.beans.PropertyChangeSupport support

resolvedCompletely

private java.lang.Boolean resolvedCompletely
Constructor Detail

PropertiesMergeModel

public PropertiesMergeModel()
Method Detail

addPropertyChangeListener

public void addPropertyChangeListener(java.beans.PropertyChangeListener listener)

removePropertyChangeListener

public void removePropertyChangeListener(java.beans.PropertyChangeListener listener)

fireCompletelyResolved

public void fireCompletelyResolved()

isDecidedCoord

public boolean isDecidedCoord()
replies true if there is a coordinate conflict and if this conflict is resolved

Returns:
true if there is a coordinate conflict and if this conflict is resolved; false, otherwise

isDecidedDeletedState

public boolean isDecidedDeletedState()
replies true if there is a conflict in the deleted state and if this conflict is resolved

Returns:
true if there is a conflict in the deleted state and if this conflict is resolved; false, otherwise

isCoordMergeDecision

public boolean isCoordMergeDecision(MergeDecisionType decision)
replies true if the current decision for the coordinate conflict is decision

Returns:
true if the current decision for the coordinate conflict is decision; false, otherwise

isDeletedStateDecision

public boolean isDeletedStateDecision(MergeDecisionType decision)
replies true if the current decision for the deleted state conflict is decision

Returns:
true if the current decision for the deleted state conflict is decision; false, otherwise

populate

public void populate(Conflict<? extends OsmPrimitive> conflict)
Populates the model with the differences between local and server version

Parameters:
conflict - The conflict information

getMyCoords

public LatLon getMyCoords()
replies the coordinates of my OsmPrimitive. null, if my primitive hasn't coordinates (i.e. because it is a Way).

Returns:
the coordinates of my OsmPrimitive. null, if my primitive hasn't coordinates (i.e. because it is a Way).

getTheirCoords

public LatLon getTheirCoords()
replies the coordinates of their OsmPrimitive. null, if their primitive hasn't coordinates (i.e. because it is a Way).

Returns:
the coordinates of my OsmPrimitive. null, if my primitive hasn't coordinates (i.e. because it is a Way).

getMergedCoords

public LatLon getMergedCoords()
replies the coordinates of the merged OsmPrimitive. null, if the current primitives have no coordinates or if the conflict is yet MergeDecisionType.UNDECIDED

Returns:
the coordinates of the merged OsmPrimitive. null, if the current primitives have no coordinates or if the conflict is yet MergeDecisionType.UNDECIDED

decideCoordsConflict

public void decideCoordsConflict(MergeDecisionType decision)
Decides a conflict between local and server coordinates

Parameters:
decision - the decision

getMyDeletedState

public java.lang.Boolean getMyDeletedState()
Replies deleted state of local dataset

Returns:
The state of deleted flag

getTheirDeletedState

public java.lang.Boolean getTheirDeletedState()
Replies deleted state of Server dataset

Returns:
The state of deleted flag

getMergedDeletedState

public java.lang.Boolean getMergedDeletedState()
Replies deleted state of combined dataset

Returns:
The state of deleted flag

getMyReferrers

public java.util.List<OsmPrimitive> getMyReferrers()
Returns local referrers

Returns:
The referrers

getTheirReferrers

public java.util.List<OsmPrimitive> getTheirReferrers()
Returns server referrers

Returns:
The referrers

getMergedDeletedState

private boolean getMergedDeletedState(MergeDecisionType decision)

decideDeletedStateConflict

public void decideDeletedStateConflict(MergeDecisionType decision)
                                throws java.lang.IllegalArgumentException
decides the conflict between two deleted states

Parameters:
decision - the decision (must not be null)
Throws:
java.lang.IllegalArgumentException - thrown, if decision is null

hasCoordConflict

public boolean hasCoordConflict()
replies true if my and their primitive have a conflict between their coordinate values

Returns:
true if my and their primitive have a conflict between their coordinate values; false otherwise

hasDeletedStateConflict

public boolean hasDeletedStateConflict()
replies true if my and their primitive have a conflict between their deleted states

Returns:
true if my and their primitive have a conflict between their deleted states

isResolvedCompletely

public boolean isResolvedCompletely()
replies true if all conflict in this model are resolved

Returns:
true if all conflict in this model are resolved; false otherwise

buildResolveCommand

public java.util.List<Command> buildResolveCommand(Conflict<? extends OsmPrimitive> conflict)
Builds the command(s) to apply the conflict resolutions to my primitive

Parameters:
conflict - The conflict information
Returns:
The list of commands

getMyPrimitive

public OsmPrimitive getMyPrimitive()


JOSM