From 764152f168a501dbfc9f19e9002b5b37763f5209 Mon Sep 17 00:00:00 2001 From: Hallvard Traetteberg <hal@ntnu.no> Date: Tue, 20 Aug 2019 20:16:31 +0200 Subject: [PATCH] Fikset en del av det som ble rapportert av PMD og SpotBugs --- .../doc/AbstractDocumentStorageImpl.java | 2 +- .../java/fxutil/doc/FileMenuController.java | 11 ++--- .../fxutil/doc/SimpleJsonFileStorageImpl.java | 5 ++- .../src/main/java/simpleex/core/LatLong.java | 16 ++++--- .../src/main/java/simpleex/core/LatLongs.java | 6 +-- .../simpleex/json/LatLongDeserializer.java | 4 +- .../java/simpleex/json/LatLongSerializer.java | 4 +- .../simpleex/ui/DraggableNodeController.java | 42 ++++++++++--------- .../java/simpleex/ui/FxAppController.java | 26 ++++++------ .../src/main/java/simpleex/ui/MapMarker.java | 4 +- .../test/java/simpleex/core/LatLongTest.java | 4 +- .../test/java/simpleex/core/LatLongsTest.java | 4 +- .../java/simpleex/json/AbstractJsonTest.java | 2 +- .../java/simpleex/json/LatLongJsonTest.java | 6 +-- .../src/test/java/simpleex/ui/FxAppTest.java | 6 +-- 15 files changed, 75 insertions(+), 67 deletions(-) diff --git a/simpleexample/src/main/java/fxutil/doc/AbstractDocumentStorageImpl.java b/simpleexample/src/main/java/fxutil/doc/AbstractDocumentStorageImpl.java index 13bc9e9..d602b6c 100644 --- a/simpleexample/src/main/java/fxutil/doc/AbstractDocumentStorageImpl.java +++ b/simpleexample/src/main/java/fxutil/doc/AbstractDocumentStorageImpl.java @@ -20,7 +20,7 @@ import java.util.Collection; */ public abstract class AbstractDocumentStorageImpl<D, L> implements IDocumentStorage<L>, IDocumentPersistence<D, L> { - private L documentLocation; + private L documentLocation = null; @Override public L getDocumentLocation() { diff --git a/simpleexample/src/main/java/fxutil/doc/FileMenuController.java b/simpleexample/src/main/java/fxutil/doc/FileMenuController.java index 3aef54e..406a211 100644 --- a/simpleexample/src/main/java/fxutil/doc/FileMenuController.java +++ b/simpleexample/src/main/java/fxutil/doc/FileMenuController.java @@ -186,18 +186,15 @@ public class FileMenuController { inputDialog.setHeaderText("Enter URL to import from"); inputDialog.setContentText("Enter URL: "); // https://developer.garmin.com/downloads/connect-api/sample_file.gpx - URL url = null; - while (url == null) { + while (true) { final Optional<String> result = inputDialog.showAndWait(); if (! result.isPresent()) { - return; + break; } try { - url = new URL(result.get()); - if (handleURLImportAction(url)) { - return; + if (handleURLImportAction(new URL(result.get()))) { + break; } - url = null; inputDialog.setHeaderText("Problems reading it..."); inputDialog.setContentText("Enter another URL: "); } catch (final MalformedURLException e1) { diff --git a/simpleexample/src/main/java/fxutil/doc/SimpleJsonFileStorageImpl.java b/simpleexample/src/main/java/fxutil/doc/SimpleJsonFileStorageImpl.java index cf35d0f..1ad4d73 100644 --- a/simpleexample/src/main/java/fxutil/doc/SimpleJsonFileStorageImpl.java +++ b/simpleexample/src/main/java/fxutil/doc/SimpleJsonFileStorageImpl.java @@ -3,6 +3,7 @@ package fxutil.doc; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; +import java.io.OutputStream; import java.util.Collection; import java.util.Collections; @@ -34,7 +35,9 @@ public abstract class SimpleJsonFileStorageImpl<T> extends AbstractDocumentStora @Override public void saveDocument(final T document, final File documentLocation) throws Exception { - objectMapper.writeValue(new FileOutputStream(documentLocation, false), document); + try (OutputStream outputStream = new FileOutputStream(documentLocation, false)) { + objectMapper.writeValue(outputStream, document); + } } @Override diff --git a/simpleexample/src/main/java/simpleex/core/LatLong.java b/simpleexample/src/main/java/simpleex/core/LatLong.java index 74fa119..53ea3af 100644 --- a/simpleexample/src/main/java/simpleex/core/LatLong.java +++ b/simpleexample/src/main/java/simpleex/core/LatLong.java @@ -2,7 +2,7 @@ package simpleex.core; public class LatLong { - public final double latitude, longitude; + private final double latitude, longitude; public LatLong(final double latitude, final double longitude) { super(); @@ -12,6 +12,14 @@ public class LatLong { public final static String SEPARATOR = ","; + public double getLatitude() { + return latitude; + } + + public double getLongitude() { + return longitude; + } + @Override public String toString() { return latitude + SEPARATOR + longitude; @@ -20,10 +28,8 @@ public class LatLong { @Override public int hashCode() { final int prime = 31; - int result = 1; - long temp; - temp = Double.doubleToLongBits(latitude); - result = prime * result + (int) (temp ^ (temp >>> 32)); + long temp = Double.doubleToLongBits(latitude); + int result = prime + (int) (temp ^ (temp >>> 32)); temp = Double.doubleToLongBits(longitude); result = prime * result + (int) (temp ^ (temp >>> 32)); return result; diff --git a/simpleexample/src/main/java/simpleex/core/LatLongs.java b/simpleexample/src/main/java/simpleex/core/LatLongs.java index 98f3837..1115017 100644 --- a/simpleexample/src/main/java/simpleex/core/LatLongs.java +++ b/simpleexample/src/main/java/simpleex/core/LatLongs.java @@ -47,17 +47,17 @@ public class LatLongs implements Iterable<LatLong> { return pos; } - public int addLatLongs(final Collection<LatLong> latLongs) { + public final int addLatLongs(final Collection<LatLong> latLongs) { final int pos = this.latLongs.size(); this.latLongs.addAll(latLongs); return pos; } - public int addLatLongs(final LatLong... latLongs) { + public final int addLatLongs(final LatLong... latLongs) { return addLatLongs(List.of(latLongs)); } - public int addLatLongs(final double... latLongsArray) { + public final int addLatLongs(final double... latLongsArray) { final Collection<LatLong> latLongs = new ArrayList<>(latLongsArray.length / 2); for (int i = 0; i < latLongsArray.length; i += 2) { latLongs.add(new LatLong(latLongsArray[i], latLongsArray[i + 1])); diff --git a/simpleexample/src/main/java/simpleex/json/LatLongDeserializer.java b/simpleexample/src/main/java/simpleex/json/LatLongDeserializer.java index 9851952..e78c577 100644 --- a/simpleexample/src/main/java/simpleex/json/LatLongDeserializer.java +++ b/simpleexample/src/main/java/simpleex/json/LatLongDeserializer.java @@ -14,6 +14,8 @@ import simpleex.core.LatLong; public class LatLongDeserializer extends JsonDeserializer<LatLong> { + private static final int ARRAY_JSON_NODE_SIZE = 2; + @Override public LatLong deserialize(final JsonParser jsonParser, final DeserializationContext deserContext) throws IOException, JsonProcessingException { final JsonNode jsonNode = jsonParser.getCodec().readTree(jsonParser); @@ -28,7 +30,7 @@ public class LatLongDeserializer extends JsonDeserializer<LatLong> { return new LatLong(latitude, longitude); } else if (jsonNode instanceof ArrayNode) { final ArrayNode locationArray = (ArrayNode) jsonNode; - if (locationArray.size() == 2) { + if (locationArray.size() == ARRAY_JSON_NODE_SIZE) { final double latitude = locationArray.get(0).asDouble(); final double longitude = locationArray.get(1).asDouble(); return new LatLong(latitude, longitude); diff --git a/simpleexample/src/main/java/simpleex/json/LatLongSerializer.java b/simpleexample/src/main/java/simpleex/json/LatLongSerializer.java index 5c93960..0a12779 100644 --- a/simpleexample/src/main/java/simpleex/json/LatLongSerializer.java +++ b/simpleexample/src/main/java/simpleex/json/LatLongSerializer.java @@ -17,9 +17,9 @@ public class LatLongSerializer extends JsonSerializer<LatLong> { public void serialize(final LatLong latLon, final JsonGenerator jsonGen, final SerializerProvider provider) throws IOException { jsonGen.writeStartObject(); jsonGen.writeFieldName(LATITUDE_FIELD_NAME); - jsonGen.writeNumber(latLon.latitude); + jsonGen.writeNumber(latLon.getLatitude()); jsonGen.writeFieldName(LONGITUDE_FIELD_NAME); - jsonGen.writeNumber(latLon.longitude); + jsonGen.writeNumber(latLon.getLongitude()); jsonGen.writeEndObject(); } } diff --git a/simpleexample/src/main/java/simpleex/ui/DraggableNodeController.java b/simpleexample/src/main/java/simpleex/ui/DraggableNodeController.java index 4be472f..36dab05 100644 --- a/simpleexample/src/main/java/simpleex/ui/DraggableNodeController.java +++ b/simpleexample/src/main/java/simpleex/ui/DraggableNodeController.java @@ -1,5 +1,7 @@ package simpleex.ui; +import java.util.Optional; + import javafx.event.EventHandler; import javafx.geometry.Point2D; import javafx.scene.Node; @@ -10,13 +12,13 @@ public class DraggableNodeController { public DraggableNodeController() { } - public DraggableNodeController(final NodeDraggedHandler nodeDraggedHandler) { + public DraggableNodeController(final Optional<NodeDraggedHandler> nodeDraggedHandler) { setNodeDraggedHandler(nodeDraggedHandler); } - private NodeDraggedHandler nodeDraggedHandler; + private Optional<NodeDraggedHandler> nodeDraggedHandler = Optional.empty(); - public void setNodeDraggedHandler(final NodeDraggedHandler nodeDraggedHandler) { + public final void setNodeDraggedHandler(final Optional<NodeDraggedHandler> nodeDraggedHandler) { this.nodeDraggedHandler = nodeDraggedHandler; } @@ -26,7 +28,7 @@ public class DraggableNodeController { this.immediate = immediate; } - private Node currentNode = null; + private Optional<Node> currentNode = Optional.empty(); private Point2D startPoint = null; private Point2D startTranslate = null; @@ -47,16 +49,16 @@ public class DraggableNodeController { } private void mousePressed(final MouseEvent mouseEvent) { - if (currentNode == null && mouseEvent.getSource() instanceof Node) { - currentNode = (Node) mouseEvent.getSource(); + if (currentNode.isEmpty() && mouseEvent.getSource() instanceof Node) { + currentNode = Optional.of((Node) mouseEvent.getSource()); startPoint = new Point2D(mouseEvent.getSceneX(), mouseEvent.getSceneY()); - startTranslate = new Point2D(currentNode.getTranslateX(), currentNode.getTranslateY()); + startTranslate = new Point2D(currentNode.get().getTranslateX(), currentNode.get().getTranslateY()); mouseEvent.consume(); } } private void mouseDragged(final MouseEvent mouseEvent) { - if (currentNode != null && currentNode == mouseEvent.getSource()) { + if (currentNode.isPresent() && currentNode == mouseEvent.getSource()) { final double dx = mouseEvent.getSceneX() - startPoint.getX(); final double dy = mouseEvent.getSceneY() - startPoint.getY(); updateNode(dx, dy); @@ -64,27 +66,27 @@ public class DraggableNodeController { } protected void updateNode(final double dx, final double dy) { - if (immediate && nodeDraggedHandler != null) { - nodeDraggedHandler.nodeDragged(currentNode, dx, dy); + if (immediate && nodeDraggedHandler.isPresent()) { + nodeDraggedHandler.get().nodeDragged(currentNode.get(), dx, dy); startPoint = startPoint.add(dx, dy); - } else { - currentNode.setTranslateX(startTranslate.getX() + dx); - currentNode.setTranslateY(startTranslate.getY() + dy); + } else if (currentNode.isPresent()) { + currentNode.get().setTranslateX(startTranslate.getX() + dx); + currentNode.get().setTranslateY(startTranslate.getY() + dy); } } private void mouseReleased(final MouseEvent mouseEvent) { - if (currentNode != null && currentNode == mouseEvent.getSource()) { + if (currentNode.isPresent() && currentNode.get() == mouseEvent.getSource()) { final double dx = mouseEvent.getSceneX() - startPoint.getX(); final double dy = mouseEvent.getSceneY() - startPoint.getY(); if (! immediate) { - currentNode.setTranslateX(startTranslate.getX()); - currentNode.setTranslateY(startTranslate.getY()); + currentNode.get().setTranslateX(startTranslate.getX()); + currentNode.get().setTranslateY(startTranslate.getY()); } - final Node node = currentNode; - currentNode = null; - if (nodeDraggedHandler != null) { - nodeDraggedHandler.nodeDragged(node, dx, dy); + final Node node = currentNode.get(); + currentNode = Optional.empty(); + if (nodeDraggedHandler.isPresent()) { + nodeDraggedHandler.get().nodeDragged(node, dx, dy); } } } diff --git a/simpleexample/src/main/java/simpleex/ui/FxAppController.java b/simpleexample/src/main/java/simpleex/ui/FxAppController.java index ab1bc32..b8968b6 100644 --- a/simpleexample/src/main/java/simpleex/ui/FxAppController.java +++ b/simpleexample/src/main/java/simpleex/ui/FxAppController.java @@ -1,6 +1,7 @@ package simpleex.ui; import java.io.File; +import java.util.Optional; import fxmapcontrol.Location; import fxmapcontrol.MapBase; @@ -47,7 +48,7 @@ public class FxAppController extends FileMenuController implements IDocumentList private MapBase mapView; private MapItemsControl<MapNode> markersParent; - private MapMarker marker = null; + private Optional<MapMarker> marker = Optional.empty(); private DraggableNodeController draggableMapController = null; private DraggableNodeController draggableMarkerController = null; @@ -64,10 +65,10 @@ public class FxAppController extends FileMenuController implements IDocumentList zoomSlider.setValue(8); markersParent = new MapItemsControl<MapNode>(); mapView.getChildren().add(markersParent); - draggableMapController = new DraggableNodeController(this::handleMapDragged); + draggableMapController = new DraggableNodeController(Optional.of(this::handleMapDragged)); draggableMapController.setImmediate(true); draggableMapController.attach(mapView); - draggableMarkerController = new DraggableNodeController(this::handleMarkerDragged); + draggableMarkerController = new DraggableNodeController(Optional.of(this::handleMarkerDragged)); // the location list locationListView.getSelectionModel().selectedIndexProperty().addListener((prop, oldValue, newValue) -> updateMapMarker(true)); } @@ -81,7 +82,7 @@ public class FxAppController extends FileMenuController implements IDocumentList private void handleMarkerDragged(final Node node, final double dx, final double dy) { final MapProjection projection = mapView.getProjection(); - final Point2D point = projection.locationToViewportPoint(marker.getLocation()); + final Point2D point = projection.locationToViewportPoint(marker.get().getLocation()); final Location newLocation = projection.viewportPointToLocation(point.add(dx, dy)); getLatLongs().setLatLong(locationListView.getSelectionModel().getSelectedIndex(), location2LatLong(newLocation)); updateLocationViewListSelection(false); @@ -96,22 +97,23 @@ public class FxAppController extends FileMenuController implements IDocumentList if (num < 0 || num >= getLatLongs().getLatLongCount()) { markersParent.getItems().clear(); if (draggableMarkerController != null) { - draggableMarkerController.detach(marker); + draggableMarkerController.detach(marker.get()); } - marker = null; + marker = Optional.empty(); } else { final LatLong latLong = getLatLongs().getLatLong(num); - if (marker == null) { - marker = new MapMarker(latLong); - markersParent.getItems().add(marker); + if (marker.isEmpty()) { + final MapMarker aMarker = new MapMarker(latLong); + markersParent.getItems().add(aMarker); if (draggableMarkerController != null) { - draggableMarkerController.attach(marker); + draggableMarkerController.attach(aMarker); } + marker = Optional.of(aMarker); } else { - marker.setLocation(latLong); + marker.get().setLocation(latLong); } if (centerOnMarker) { - mapView.setCenter(marker.getLocation()); + mapView.setCenter(marker.get().getLocation()); } } } diff --git a/simpleexample/src/main/java/simpleex/ui/MapMarker.java b/simpleexample/src/main/java/simpleex/ui/MapMarker.java index f61ce55..a2365b7 100644 --- a/simpleexample/src/main/java/simpleex/ui/MapMarker.java +++ b/simpleexample/src/main/java/simpleex/ui/MapMarker.java @@ -16,7 +16,7 @@ public class MapMarker extends MapItem<LatLong> { getChildren().add(circle); } - public void setLocation(final LatLong latLong) { - setLocation(new Location(latLong.latitude, latLong.longitude)); + public final void setLocation(final LatLong latLong) { + setLocation(new Location(latLong.getLatitude(), latLong.getLongitude())); } } diff --git a/simpleexample/src/test/java/simpleex/core/LatLongTest.java b/simpleexample/src/test/java/simpleex/core/LatLongTest.java index b6a3335..c51d3ac 100644 --- a/simpleexample/src/test/java/simpleex/core/LatLongTest.java +++ b/simpleexample/src/test/java/simpleex/core/LatLongTest.java @@ -19,8 +19,8 @@ public class LatLongTest { } private void testLatLong(final LatLong latLong, final double lat, final double lon) { - Assert.assertEquals(lat, latLong.latitude, 0.0); - Assert.assertEquals(lon, latLong.longitude, 0.0); + Assert.assertEquals(lat, latLong.getLatitude(), 0.0); + Assert.assertEquals(lon, latLong.getLongitude(), 0.0); } @Test diff --git a/simpleexample/src/test/java/simpleex/core/LatLongsTest.java b/simpleexample/src/test/java/simpleex/core/LatLongsTest.java index 0c7d4f2..55566eb 100644 --- a/simpleexample/src/test/java/simpleex/core/LatLongsTest.java +++ b/simpleexample/src/test/java/simpleex/core/LatLongsTest.java @@ -4,14 +4,12 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import simpleex.core.LatLongs; - public class LatLongsTest { private LatLongs latLongs; @Before - public void setup() { + public void setUp() { latLongs = new LatLongs(); } diff --git a/simpleexample/src/test/java/simpleex/json/AbstractJsonTest.java b/simpleexample/src/test/java/simpleex/json/AbstractJsonTest.java index cfbd5e6..6b84096 100644 --- a/simpleexample/src/test/java/simpleex/json/AbstractJsonTest.java +++ b/simpleexample/src/test/java/simpleex/json/AbstractJsonTest.java @@ -19,7 +19,7 @@ public abstract class AbstractJsonTest { return objectMapper; } - public void setup() { + protected void setUp() { objectMapper = createObjectMapper(); } diff --git a/simpleexample/src/test/java/simpleex/json/LatLongJsonTest.java b/simpleexample/src/test/java/simpleex/json/LatLongJsonTest.java index 7e926a5..8add899 100644 --- a/simpleexample/src/test/java/simpleex/json/LatLongJsonTest.java +++ b/simpleexample/src/test/java/simpleex/json/LatLongJsonTest.java @@ -7,15 +7,13 @@ import org.junit.Test; import com.fasterxml.jackson.databind.ObjectMapper; import simpleex.core.LatLong; -import simpleex.json.LatLongDeserializer; -import simpleex.json.LatLongSerializer; public class LatLongJsonTest extends AbstractJsonTest { @Before @Override - public void setup() { - super.setup(); + public void setUp() { + super.setUp(); } @Override diff --git a/simpleexample/src/test/java/simpleex/ui/FxAppTest.java b/simpleexample/src/test/java/simpleex/ui/FxAppTest.java index fad97d3..bdeea45 100644 --- a/simpleexample/src/test/java/simpleex/ui/FxAppTest.java +++ b/simpleexample/src/test/java/simpleex/ui/FxAppTest.java @@ -72,7 +72,7 @@ public class FxAppTest extends ApplicationTest { @Test public void testController() { - Assert.assertTrue(this.controller instanceof FxAppController); + Assert.assertNotNull(this.controller); } @Test @@ -90,8 +90,8 @@ public class FxAppTest extends ApplicationTest { // center of map view is approx. the first LatLong object final Location center = mapView.getCenter(); final double epsilon = 0.000001; // round-off error - Assert.assertEquals(latLongList.get(0).latitude, center.getLatitude(), epsilon); - Assert.assertEquals(latLongList.get(0).longitude, center.getLongitude(), epsilon); + Assert.assertEquals(latLongList.get(0).getLatitude(), center.getLatitude(), epsilon); + Assert.assertEquals(latLongList.get(0).getLongitude(), center.getLongitude(), epsilon); } @Test -- GitLab