source: josm/trunk/src/org/openstreetmap/josm/command/conflict/VersionConflictResolveCommand.java@ 19050

Last change on this file since 19050 was 19050, checked in by taylor.smock, 15 months ago

Revert most var changes from r19048, fix most new compile warnings and checkstyle issues

Also, document why various ErrorProne checks were originally disabled and fix
generic SonarLint issues.

  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.command.conflict;
3
4import static org.openstreetmap.josm.tools.I18n.marktr;
5import static org.openstreetmap.josm.tools.I18n.tr;
6
7import java.util.Collection;
8import java.util.Objects;
9
10import javax.swing.Icon;
11
12import org.openstreetmap.josm.data.conflict.Conflict;
13import org.openstreetmap.josm.data.osm.OsmPrimitive;
14import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
15import org.openstreetmap.josm.tools.ImageProvider;
16
17/**
18 * Represents the resolution of a version conflict between two {@link OsmPrimitive}s.
19 * @since 1622
20 */
21public class VersionConflictResolveCommand extends ConflictResolveCommand {
22
23 /** the conflict to resolve */
24 private final Conflict<? extends OsmPrimitive> conflict;
25
26 /**
27 * constructor
28 * @param conflict the conflict data set
29 */
30 public VersionConflictResolveCommand(Conflict<? extends OsmPrimitive> conflict) {
31 super(conflict.getMy().getDataSet());
32 this.conflict = conflict;
33 }
34
35 @Override
36 public String getDescriptionText() {
37 String msg;
38 switch (OsmPrimitiveType.from(conflict.getMy())) {
39 case NODE: msg = marktr("Resolve version conflict for node {0}"); break;
40 case WAY: msg = marktr("Resolve version conflict for way {0}"); break;
41 case RELATION: msg = marktr("Resolve version conflict for relation {0}"); break;
42 default: throw new AssertionError();
43 }
44 return tr(msg, conflict.getMy().getId());
45 }
46
47 @Override
48 public Icon getDescriptionIcon() {
49 return ImageProvider.get("data", "object");
50 }
51
52 @Override
53 public boolean executeCommand() {
54 super.executeCommand();
55 if (!conflict.getMy().isNew()) {
56 long myVersion = conflict.getMy().getVersion();
57 long theirVersion = conflict.getTheir().getVersion();
58 conflict.getMy().setOsmId(
59 conflict.getMy().getId(),
60 (int) Math.max(myVersion, theirVersion)
61 );
62 // update visibility state
63 if (theirVersion >= myVersion) {
64 conflict.getMy().setVisible(conflict.getTheir().isVisible());
65 }
66 }
67 getAffectedDataSet().getConflicts().remove(conflict);
68 rememberConflict(conflict);
69 return true;
70 }
71
72 @Override
73 public void fillModifiedData(Collection<OsmPrimitive> modified, Collection<OsmPrimitive> deleted,
74 Collection<OsmPrimitive> added) {
75 modified.add(conflict.getMy());
76 }
77
78 @Override
79 public int hashCode() {
80 return Objects.hash(super.hashCode(), conflict);
81 }
82
83 @Override
84 public boolean equals(Object obj) {
85 if (this == obj) return true;
86 if (obj == null || getClass() != obj.getClass()) return false;
87 if (!super.equals(obj)) return false;
88 VersionConflictResolveCommand that = (VersionConflictResolveCommand) obj;
89 return Objects.equals(conflict, that.conflict);
90 }
91}
Note: See TracBrowser for help on using the repository browser.