From 091015f3dab170ea8ed1d3e01843232c88c0b097 Mon Sep 17 00:00:00 2001 From: Stanislav Nowogrudski Date: Thu, 13 Oct 2022 12:57:52 +0200 Subject: [PATCH] moved to openjdk:17, refactoring, dependency update, code cleanup --- .travis.yml | 2 +- pom.xml | 16 ++++++++------ .../de/dj_steam/bot/cli/LoopingConsole.java | 2 +- .../java/de/dj_steam/bot/domain/Command.java | 21 ++++--------------- .../java/de/dj_steam/bot/domain/Position.java | 4 ++-- .../de/dj_steam/bot/domain/ToyBotField.java | 4 ++-- .../bot/moving/DirectionCalculator.java | 8 +++---- .../bot/moving/strategy/ChangingStrategy.java | 2 +- .../bot/moving/strategy/MoveStrategy.java | 2 +- .../bot/moving/strategy/PlaceStrategy.java | 12 ++++++----- .../bot/moving/strategy/ReportStrategy.java | 2 +- .../bot/moving/strategy/TurnStrategy.java | 4 ++-- .../dj_steam/bot/cli/LoopingConsoleTest.java | 14 ++++++------- .../dj_steam/bot/domain/ToyBotFieldTest.java | 2 +- .../dj_steam/bot/engine/RobotEngineTest.java | 2 +- .../moving/LoopedDirectionsArrayListTest.java | 4 ++-- 16 files changed, 47 insertions(+), 54 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7fdf6ec..1e87f13 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,3 @@ language: java -jdk: oraclejdk8 +jdk: openjdk:17 script: mvn clean test diff --git a/pom.xml b/pom.xml index 272f23e..e2c8485 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,10 @@ UTF-8 + 2.0.3 + 1.18.24 + 3.12.0 + 4.13.2 @@ -18,25 +22,25 @@ org.slf4j slf4j-simple - 1.7.25 + ${slf4j.version} org.projectlombok lombok - 1.16.14 + ${lombok.version} org.apache.commons commons-lang3 - 3.4 + ${apache.commons.version} junit junit - 4.12 + ${junit.version} test @@ -49,8 +53,8 @@ maven-compiler-plugin 3.6.1 - 1.8 - 1.8 + 17 + 17 diff --git a/src/main/java/de/dj_steam/bot/cli/LoopingConsole.java b/src/main/java/de/dj_steam/bot/cli/LoopingConsole.java index ed982bc..6156eb9 100644 --- a/src/main/java/de/dj_steam/bot/cli/LoopingConsole.java +++ b/src/main/java/de/dj_steam/bot/cli/LoopingConsole.java @@ -36,7 +36,7 @@ public class LoopingConsole { printUsageBanner(); } - if (input.trim().toLowerCase().equals(EXIT_COMMAND)) { + if (input.trim().equalsIgnoreCase(EXIT_COMMAND)) { System.out.println("exiting"); return; } diff --git a/src/main/java/de/dj_steam/bot/domain/Command.java b/src/main/java/de/dj_steam/bot/domain/Command.java index 1da4b86..27dac6e 100644 --- a/src/main/java/de/dj_steam/bot/domain/Command.java +++ b/src/main/java/de/dj_steam/bot/domain/Command.java @@ -3,23 +3,18 @@ package de.dj_steam.bot.domain; import java.util.List; import java.util.Optional; -import lombok.EqualsAndHashCode; -import lombok.Getter; - /** * @author steam - * + *

* this is a general command implementation. - * + *

* The arguments as {@link String} is intentionally, to be flexible * define some different argument formats. - * + *

* Use some kind of {@link List} for arguments in futher implementations. */ -@Getter -@EqualsAndHashCode -public class Command { +public record Command(String command, Optional arguments) { public static final String TURN_LEFT = "LEFT"; public static final String TURN_RIGHT = "RIGHT"; @@ -27,12 +22,4 @@ public class Command { public static final String PLACE = "PLACE"; public static final String REPORT = "REPORT"; - private String command; - - private Optional arguments; - - public Command(final String command, Optional arguments) { - this.command = command; - this.arguments = arguments; - } } diff --git a/src/main/java/de/dj_steam/bot/domain/Position.java b/src/main/java/de/dj_steam/bot/domain/Position.java index f8d5aee..b362f0b 100644 --- a/src/main/java/de/dj_steam/bot/domain/Position.java +++ b/src/main/java/de/dj_steam/bot/domain/Position.java @@ -12,8 +12,8 @@ import lombok.ToString; @ToString @EqualsAndHashCode public class Position { - private int x; - private int y; + private final int x; + private final int y; public Position() { this.x = 0; diff --git a/src/main/java/de/dj_steam/bot/domain/ToyBotField.java b/src/main/java/de/dj_steam/bot/domain/ToyBotField.java index 860b569..3c627bd 100644 --- a/src/main/java/de/dj_steam/bot/domain/ToyBotField.java +++ b/src/main/java/de/dj_steam/bot/domain/ToyBotField.java @@ -7,8 +7,8 @@ import lombok.Getter; */ @Getter public class ToyBotField { - private int width = 4; - private int height = 4; + private final int width = 4; + private final int height = 4; public boolean isInsideTheField(final Position position) { return (position.getX() >= 0 && diff --git a/src/main/java/de/dj_steam/bot/moving/DirectionCalculator.java b/src/main/java/de/dj_steam/bot/moving/DirectionCalculator.java index 56fcdcf..e34f074 100644 --- a/src/main/java/de/dj_steam/bot/moving/DirectionCalculator.java +++ b/src/main/java/de/dj_steam/bot/moving/DirectionCalculator.java @@ -11,10 +11,10 @@ import de.dj_steam.bot.domain.ToyBot; */ public class DirectionCalculator { - private LoopedDirectionsArrayList directions; + private final LoopedDirectionsArrayList directions; public DirectionCalculator() { - directions = new LoopedDirectionsArrayList(); + directions = new LoopedDirectionsArrayList<>(); directions.addAll(Arrays.asList(Direction.values())); } @@ -22,9 +22,9 @@ public class DirectionCalculator { Direction actualDirection = toyBot.getDirection(); - if (turnDirection.getCommand().equals(Command.TURN_LEFT)) { + if (turnDirection.command().equals(Command.TURN_LEFT)) { return directions.get(directions.indexOf(actualDirection) - 1); - } else if (turnDirection.getCommand().equals(Command.TURN_RIGHT)) { + } else if (turnDirection.command().equals(Command.TURN_RIGHT)) { return directions.get(directions.indexOf(actualDirection) + 1); } return toyBot.getDirection(); diff --git a/src/main/java/de/dj_steam/bot/moving/strategy/ChangingStrategy.java b/src/main/java/de/dj_steam/bot/moving/strategy/ChangingStrategy.java index 2dad9bb..8848958 100644 --- a/src/main/java/de/dj_steam/bot/moving/strategy/ChangingStrategy.java +++ b/src/main/java/de/dj_steam/bot/moving/strategy/ChangingStrategy.java @@ -9,7 +9,7 @@ import de.dj_steam.bot.domain.ToyBotField; * * this strategy defines how the robot will be manipulated * implement this, if new change variant is wanted. - * + *

* use {@link Command} to define new commans to implement */ diff --git a/src/main/java/de/dj_steam/bot/moving/strategy/MoveStrategy.java b/src/main/java/de/dj_steam/bot/moving/strategy/MoveStrategy.java index 13f7e4d..3772d1b 100644 --- a/src/main/java/de/dj_steam/bot/moving/strategy/MoveStrategy.java +++ b/src/main/java/de/dj_steam/bot/moving/strategy/MoveStrategy.java @@ -12,7 +12,7 @@ import de.dj_steam.bot.domain.ToyBotField; public class MoveStrategy implements ChangingStrategy { @Override public void change(final ToyBot toyBot, final ToyBotField toyBotField, final Command command) { - if (command.getCommand().equals(Command.MOVE)) { + if (command.command().equals(Command.MOVE)) { Position newPosition = toyBot.getPosition(); // TODO - refactor this ugly code diff --git a/src/main/java/de/dj_steam/bot/moving/strategy/PlaceStrategy.java b/src/main/java/de/dj_steam/bot/moving/strategy/PlaceStrategy.java index 9835963..d9d5e5c 100644 --- a/src/main/java/de/dj_steam/bot/moving/strategy/PlaceStrategy.java +++ b/src/main/java/de/dj_steam/bot/moving/strategy/PlaceStrategy.java @@ -9,6 +9,8 @@ import de.dj_steam.bot.domain.Position; import de.dj_steam.bot.domain.ToyBot; import de.dj_steam.bot.domain.ToyBotField; +import java.util.NoSuchElementException; + /** * @author steam */ @@ -16,10 +18,10 @@ public class PlaceStrategy implements ChangingStrategy { @Override public void change(ToyBot toyBot, ToyBotField toyBotField, Command command) { - if (command.getCommand().equals(Command.PLACE) && + if (command.command().equals(Command.PLACE) && isPlaceCommandValid(command) && canBePlaced(toyBotField, command)) { - String[] arguments = command.getArguments().get().split(","); + String[] arguments = command.arguments().orElseThrow(NoSuchElementException::new).split(","); toyBot.setPosition(new Position(Integer.parseInt(arguments[0].trim()), Integer.parseInt(arguments[1].trim()))); toyBot.setDirection(Direction.valueOf(arguments[2].trim())); @@ -27,8 +29,8 @@ public class PlaceStrategy implements ChangingStrategy { } boolean isPlaceCommandValid(Command command) { - if (command.getArguments().isPresent()) { - String[] arguments = command.getArguments().get().split(","); + if (command.arguments().isPresent()) { + String[] arguments = command.arguments().orElseThrow(NoSuchElementException::new).split(","); return arguments.length == 3 && StringUtils.isNumeric(arguments[0].trim()) && StringUtils.isNumeric(arguments[1].trim()) && @@ -38,7 +40,7 @@ public class PlaceStrategy implements ChangingStrategy { } boolean canBePlaced(final ToyBotField toyBotField, final Command command) { - String[] arguments = command.getArguments().get().split(","); + String[] arguments = command.arguments().orElseThrow(NoSuchElementException::new).split(","); return toyBotField.isInsideTheField(new Position(Integer.parseInt(arguments[0].trim()),Integer.parseInt(arguments[1].trim()))); } } diff --git a/src/main/java/de/dj_steam/bot/moving/strategy/ReportStrategy.java b/src/main/java/de/dj_steam/bot/moving/strategy/ReportStrategy.java index 2e2199c..5f57e58 100644 --- a/src/main/java/de/dj_steam/bot/moving/strategy/ReportStrategy.java +++ b/src/main/java/de/dj_steam/bot/moving/strategy/ReportStrategy.java @@ -10,7 +10,7 @@ import de.dj_steam.bot.domain.ToyBotField; public class ReportStrategy implements ChangingStrategy { @Override public void change(final ToyBot toyBot, final ToyBotField toyBotField, final Command command) { - if (command.getCommand().equals(Command.REPORT)) { + if (command.command().equals(Command.REPORT)) { printReport(toyBot); } } diff --git a/src/main/java/de/dj_steam/bot/moving/strategy/TurnStrategy.java b/src/main/java/de/dj_steam/bot/moving/strategy/TurnStrategy.java index a076af6..91c1448 100644 --- a/src/main/java/de/dj_steam/bot/moving/strategy/TurnStrategy.java +++ b/src/main/java/de/dj_steam/bot/moving/strategy/TurnStrategy.java @@ -10,7 +10,7 @@ import de.dj_steam.bot.moving.DirectionCalculator; */ public class TurnStrategy implements ChangingStrategy { - private DirectionCalculator directionCalculator; + private final DirectionCalculator directionCalculator; public TurnStrategy() { directionCalculator = new DirectionCalculator(); @@ -18,7 +18,7 @@ public class TurnStrategy implements ChangingStrategy { @Override public void change(final ToyBot toyBot, final ToyBotField toyBotField, final Command command) { - if (command.getCommand().equals(Command.TURN_LEFT) || command.getCommand().equals(Command.TURN_RIGHT)) { + if (command.command().equals(Command.TURN_LEFT) || command.command().equals(Command.TURN_RIGHT)) { toyBot.setDirection(directionCalculator.calculateNewDirection(toyBot, command)); } } diff --git a/src/test/java/de/dj_steam/bot/cli/LoopingConsoleTest.java b/src/test/java/de/dj_steam/bot/cli/LoopingConsoleTest.java index dcb3914..9d59ffe 100644 --- a/src/test/java/de/dj_steam/bot/cli/LoopingConsoleTest.java +++ b/src/test/java/de/dj_steam/bot/cli/LoopingConsoleTest.java @@ -15,28 +15,28 @@ public class LoopingConsoleTest { @Test(expected = InvalidUserInputException.class) - public void createCommandExpectedUserInputExceptionOnEmptyInput() throws Exception { + public void createCommandExpectedUserInputExceptionOnEmptyInput() { LoopingConsole.createCommand(""); } @Test(expected = InvalidUserInputException.class) - public void createCommandExpectedUserInputExceptionOnMoreThenTwoParams() throws Exception { + public void createCommandExpectedUserInputExceptionOnMoreThenTwoParams() { LoopingConsole.createCommand("INPUT X,Y,F WRONG_PARAM"); } @Test public void createCommandWithoutParam() { Command command = LoopingConsole.createCommand("INPUT"); - assertEquals("INPUT", command.getCommand()); - assertFalse(command.getArguments().isPresent()); + assertEquals("INPUT", command.command()); + assertFalse(command.arguments().isPresent()); } @Test public void createCommandWithParam() { Command command = LoopingConsole.createCommand("INPUT X,Y,F"); - assertEquals("INPUT", command.getCommand()); - assertTrue(command.getArguments().isPresent()); - assertEquals("X,Y,F", command.getArguments().get()); + assertEquals("INPUT", command.command()); + assertTrue(command.arguments().isPresent()); + assertEquals("X,Y,F", command.arguments().get()); } } \ No newline at end of file diff --git a/src/test/java/de/dj_steam/bot/domain/ToyBotFieldTest.java b/src/test/java/de/dj_steam/bot/domain/ToyBotFieldTest.java index e2c9b41..2764099 100644 --- a/src/test/java/de/dj_steam/bot/domain/ToyBotFieldTest.java +++ b/src/test/java/de/dj_steam/bot/domain/ToyBotFieldTest.java @@ -10,7 +10,7 @@ import org.junit.Test; */ public class ToyBotFieldTest { @Test - public void isInsideTheField() throws Exception { + public void isInsideTheField() { ToyBotField toyBotField = new ToyBotField(); assertTrue(toyBotField.isInsideTheField(new Position(0,0))); assertTrue(toyBotField.isInsideTheField(new Position(4,4))); diff --git a/src/test/java/de/dj_steam/bot/engine/RobotEngineTest.java b/src/test/java/de/dj_steam/bot/engine/RobotEngineTest.java index c91c411..2150316 100644 --- a/src/test/java/de/dj_steam/bot/engine/RobotEngineTest.java +++ b/src/test/java/de/dj_steam/bot/engine/RobotEngineTest.java @@ -26,7 +26,7 @@ public class RobotEngineTest { private Command moveCommand; private Command placeCommand; - private ToyBotField toyBotField = new ToyBotField(); + private final ToyBotField toyBotField = new ToyBotField(); @Before public void setup() { diff --git a/src/test/java/de/dj_steam/bot/moving/LoopedDirectionsArrayListTest.java b/src/test/java/de/dj_steam/bot/moving/LoopedDirectionsArrayListTest.java index 09951be..0b29845 100644 --- a/src/test/java/de/dj_steam/bot/moving/LoopedDirectionsArrayListTest.java +++ b/src/test/java/de/dj_steam/bot/moving/LoopedDirectionsArrayListTest.java @@ -13,11 +13,11 @@ import de.dj_steam.bot.domain.Direction; * @author steam */ public class LoopedDirectionsArrayListTest { - private LoopedDirectionsArrayList directions; + private LoopedDirectionsArrayList directions; @Before public void setup() { - directions = new LoopedDirectionsArrayList(); + directions = new LoopedDirectionsArrayList<>(); directions.addAll(Arrays.asList(Direction.values())); }