Checkstyle

This commit is contained in:
Arne Keller 2020-02-17 13:59:42 +01:00
parent efcd3a721b
commit bb9d014508
3 changed files with 37 additions and 63 deletions

View File

@ -64,11 +64,9 @@ public class Coach extends RollingStock {
*/
public Coach(final int identifier, final CoachType type, final int length,
final boolean couplingFront, final boolean couplingBack) {
super(length, couplingFront, couplingBack);
this.identifier = identifier;
this.type = type;
super.length = length;
super.couplingFront = couplingFront;
super.couplingBack = couplingBack;
}
@Override

View File

@ -2,12 +2,13 @@ package edu.kit.informatik.model;
import edu.kit.informatik.Terminal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Set;
import java.util.stream.Collectors;
/**
* A rail network consisting of tracks and switches. Is only concerned with rails, does not process trains.
@ -19,7 +20,7 @@ public class RailwayNetwork {
/**
* Rail in this railway network. Usually contains tracks and switches.
*/
private List<Rail> rails = new ArrayList<>();
private final Map<Integer, Rail> rails = new HashMap<>();
/**
* Add a new track to the rail network.
@ -31,25 +32,25 @@ public class RailwayNetwork {
if (start.distanceTo(end) == 0) {
return -1;
}
long startPossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(start)).count();
long endPossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(end)).count();
long startPossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(start)).count();
long endPossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(end)).count();
if (startPossibleConnections == 2 || endPossibleConnections == 2) {
return -1; // TODO better error msg?
}
if (rails.isEmpty()) {
Track newTrack = new Track(start, end, 1);
rails.add(newTrack);
return newTrack.id;
rails.put(1, newTrack);
return newTrack.getIdentifier();
} else {
for (Rail rail : rails) {
for (Rail rail : rails.values()) {
if (rail.canConnectTo(start) || rail.canConnectTo(end)) {
int id = getNextRailIdentifier();
if (id < 0) {
return -1;
}
Track newTrack = new Track(start, end, id);
rails.add(newTrack.id - 1, newTrack);
return newTrack.id;
rails.put(id, newTrack);
return newTrack.getIdentifier();
}
}
return -1;
@ -69,24 +70,24 @@ public class RailwayNetwork {
}
if (rails.isEmpty()) {
Switch newSwitch = new Switch(start, end1, end2, 1);
rails.add(newSwitch);
return newSwitch.id;
rails.put(1, newSwitch);
return newSwitch.getIdentifier();
} else {
long startPossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(start)).count();
long end1PossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(end1)).count();
long end2PossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(end2)).count();
long startPossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(start)).count();
long end1PossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(end1)).count();
long end2PossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(end2)).count();
if (startPossibleConnections == 2 || end1PossibleConnections == 2 || end2PossibleConnections == 2) {
return -1; // TODO better error msg?
}
for (Rail rail : rails) {
for (Rail rail : rails.values()) {
if (rail.canConnectTo(start) || rail.canConnectTo(end1) || rail.canConnectTo(end2)) {
int id = getNextRailIdentifier();
if (id < 0) {
return -1;
}
Switch newSwitch = new Switch(start, end1, end2, id);
rails.add(newSwitch.id - 1, newSwitch);
return newSwitch.id;
rails.put(id, newSwitch);
return newSwitch.getIdentifier();
}
}
return -1;
@ -102,14 +103,14 @@ public class RailwayNetwork {
if (rails.size() == 0) {
return false;
} else if (rails.size() == 1) {
if (rails.get(0).id == id) {
if (rails.get(id) != null) {
rails.clear();
return true;
} else {
return false;
}
}
Rail toRemove = getRail(id);
Rail toRemove = rails.get(id);
if (toRemove == null) {
return false;
}
@ -117,7 +118,7 @@ public class RailwayNetwork {
// locate one other rail: TODO use rail.connectedrails
Rail otherRail = null;
for (Rail anotherRail : rails) {
for (Rail anotherRail : rails.values()) {
if (anotherRail.getIdentifier() != id && toRemove.canConnectToRail(anotherRail)) {
otherRail = anotherRail;
break;
@ -136,7 +137,7 @@ public class RailwayNetwork {
while (!toProcess.isEmpty()) {
Rail connected = toProcess.poll();
for (Rail other : rails) {
for (Rail other : rails.values()) {
if (other != toRemove && !connectedRails.contains(other) && other.canConnectToRail(connected)) {
connectedRails.add(other);
toProcess.offer(other);
@ -145,7 +146,7 @@ public class RailwayNetwork {
}
if (connectedRails.size() == rails.size() - 1) {
rails.remove(toRemove);
rails.remove(id);
return true;
} else {
return false;
@ -159,7 +160,7 @@ public class RailwayNetwork {
* @return whether the switch could be set
*/
public boolean setSwitch(final int id, final Vector2D position) {
Rail toSwitch = getRail(id);
Rail toSwitch = rails.get(id);
if (toSwitch != null) {
return toSwitch.switchTo(position);
}
@ -174,8 +175,8 @@ public class RailwayNetwork {
if (rails.isEmpty()) {
Terminal.printLine("No track exists");
} else {
for (Rail rail : rails) {
Terminal.printLine(rail.toString());
for (int id : rails.keySet().stream().sorted().collect(Collectors.toList())) {
Terminal.printLine(rails.get(id));
}
}
}
@ -184,31 +185,13 @@ public class RailwayNetwork {
* @return the next positive rail identifier, or -1 if none available
*/
private int getNextRailIdentifier() {
int id = 1;
for (Rail rail : rails) {
if (rail.id == id) {
id++;
for (int i = 1; i > 0; i++) {
if (!rails.containsKey(i)) {
return i;
}
}
if (id > 0) {
return id;
} else {
return -1;
}
}
/**
* @param id identifier of the rail to find
* @return the specified rail, or null if not found
*/
private Rail getRail(final int id) {
for (Rail rail : rails) {
if (rail.getIdentifier() == id) {
return rail;
}
}
return null;
}
/**
* Move a position along the rails of this rail network in the specified direction.
@ -262,12 +245,7 @@ public class RailwayNetwork {
* @return the rail that contains the position, null if none found
*/
public Rail findContainingRail(final Vector2D position) {
for (Rail rail : rails) {
if (rail.contains(position)) {
return rail;
}
}
return null;
return rails.values().stream().filter(rail -> rail.contains(position)).findFirst().orElse(null);
}
/**
@ -276,7 +254,7 @@ public class RailwayNetwork {
* @return the rail(s) that touch this position
*/
public Rail[] findTouchingRails(final Vector2D position) {
return rails.stream().filter((rail) -> rail.canConnectTo(position)).toArray(Rail[]::new);
return rails.values().stream().filter((rail) -> rail.canConnectTo(position)).toArray(Rail[]::new);
}
/**
@ -284,6 +262,6 @@ public class RailwayNetwork {
* @return whether the rail network is ready
*/
public boolean isReadyForTrains() {
return rails.stream().allMatch(Rail::isReadyForTrains);
return rails.values().stream().allMatch(Rail::isReadyForTrains);
}
}

View File

@ -40,11 +40,9 @@ public class TrainSet extends RollingStock {
*/
public TrainSet(final String series, final String name, final int length,
final boolean couplingFront, final boolean couplingBack) {
super(length, couplingFront, couplingBack);
this.name = name;
this.series = series;
super.length = length;
super.couplingFront = couplingFront;
super.couplingBack = couplingBack;
}
@Override
@ -54,7 +52,7 @@ public class TrainSet extends RollingStock {
@Override
public String toString() {
return String.format("%s %s %d %b %b", series, name, length, couplingFront, couplingBack);
return String.format("%s %s %d %b %b", series, name, getLength(), hasCouplingFront(), hasCouplingBack());
}
@Override