mirror of
https://gitlab.com/arnekeller/kit-programmieren-ws1920-final1.git
synced 2024-11-24 09:24:58 +00:00
Checkstyle
This commit is contained in:
parent
efcd3a721b
commit
bb9d014508
@ -64,11 +64,9 @@ public class Coach extends RollingStock {
|
|||||||
*/
|
*/
|
||||||
public Coach(final int identifier, final CoachType type, final int length,
|
public Coach(final int identifier, final CoachType type, final int length,
|
||||||
final boolean couplingFront, final boolean couplingBack) {
|
final boolean couplingFront, final boolean couplingBack) {
|
||||||
|
super(length, couplingFront, couplingBack);
|
||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
super.length = length;
|
|
||||||
super.couplingFront = couplingFront;
|
|
||||||
super.couplingBack = couplingBack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -2,12 +2,13 @@ package edu.kit.informatik.model;
|
|||||||
|
|
||||||
import edu.kit.informatik.Terminal;
|
import edu.kit.informatik.Terminal;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.Map;
|
||||||
import java.util.Queue;
|
import java.util.Queue;
|
||||||
import java.util.Set;
|
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.
|
* 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.
|
* 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.
|
* Add a new track to the rail network.
|
||||||
@ -31,25 +32,25 @@ public class RailwayNetwork {
|
|||||||
if (start.distanceTo(end) == 0) {
|
if (start.distanceTo(end) == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
long startPossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(start)).count();
|
long startPossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(start)).count();
|
||||||
long endPossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(end)).count();
|
long endPossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(end)).count();
|
||||||
if (startPossibleConnections == 2 || endPossibleConnections == 2) {
|
if (startPossibleConnections == 2 || endPossibleConnections == 2) {
|
||||||
return -1; // TODO better error msg?
|
return -1; // TODO better error msg?
|
||||||
}
|
}
|
||||||
if (rails.isEmpty()) {
|
if (rails.isEmpty()) {
|
||||||
Track newTrack = new Track(start, end, 1);
|
Track newTrack = new Track(start, end, 1);
|
||||||
rails.add(newTrack);
|
rails.put(1, newTrack);
|
||||||
return newTrack.id;
|
return newTrack.getIdentifier();
|
||||||
} else {
|
} else {
|
||||||
for (Rail rail : rails) {
|
for (Rail rail : rails.values()) {
|
||||||
if (rail.canConnectTo(start) || rail.canConnectTo(end)) {
|
if (rail.canConnectTo(start) || rail.canConnectTo(end)) {
|
||||||
int id = getNextRailIdentifier();
|
int id = getNextRailIdentifier();
|
||||||
if (id < 0) {
|
if (id < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
Track newTrack = new Track(start, end, id);
|
Track newTrack = new Track(start, end, id);
|
||||||
rails.add(newTrack.id - 1, newTrack);
|
rails.put(id, newTrack);
|
||||||
return newTrack.id;
|
return newTrack.getIdentifier();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@ -69,24 +70,24 @@ public class RailwayNetwork {
|
|||||||
}
|
}
|
||||||
if (rails.isEmpty()) {
|
if (rails.isEmpty()) {
|
||||||
Switch newSwitch = new Switch(start, end1, end2, 1);
|
Switch newSwitch = new Switch(start, end1, end2, 1);
|
||||||
rails.add(newSwitch);
|
rails.put(1, newSwitch);
|
||||||
return newSwitch.id;
|
return newSwitch.getIdentifier();
|
||||||
} else {
|
} else {
|
||||||
long startPossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(start)).count();
|
long startPossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(start)).count();
|
||||||
long end1PossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(end1)).count();
|
long end1PossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(end1)).count();
|
||||||
long end2PossibleConnections = rails.stream().filter((rail) -> rail.canConnectTo(end2)).count();
|
long end2PossibleConnections = rails.values().stream().filter((rail) -> rail.canConnectTo(end2)).count();
|
||||||
if (startPossibleConnections == 2 || end1PossibleConnections == 2 || end2PossibleConnections == 2) {
|
if (startPossibleConnections == 2 || end1PossibleConnections == 2 || end2PossibleConnections == 2) {
|
||||||
return -1; // TODO better error msg?
|
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)) {
|
if (rail.canConnectTo(start) || rail.canConnectTo(end1) || rail.canConnectTo(end2)) {
|
||||||
int id = getNextRailIdentifier();
|
int id = getNextRailIdentifier();
|
||||||
if (id < 0) {
|
if (id < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
Switch newSwitch = new Switch(start, end1, end2, id);
|
Switch newSwitch = new Switch(start, end1, end2, id);
|
||||||
rails.add(newSwitch.id - 1, newSwitch);
|
rails.put(id, newSwitch);
|
||||||
return newSwitch.id;
|
return newSwitch.getIdentifier();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@ -102,14 +103,14 @@ public class RailwayNetwork {
|
|||||||
if (rails.size() == 0) {
|
if (rails.size() == 0) {
|
||||||
return false;
|
return false;
|
||||||
} else if (rails.size() == 1) {
|
} else if (rails.size() == 1) {
|
||||||
if (rails.get(0).id == id) {
|
if (rails.get(id) != null) {
|
||||||
rails.clear();
|
rails.clear();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Rail toRemove = getRail(id);
|
Rail toRemove = rails.get(id);
|
||||||
if (toRemove == null) {
|
if (toRemove == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -117,7 +118,7 @@ public class RailwayNetwork {
|
|||||||
|
|
||||||
// locate one other rail: TODO use rail.connectedrails
|
// locate one other rail: TODO use rail.connectedrails
|
||||||
Rail otherRail = null;
|
Rail otherRail = null;
|
||||||
for (Rail anotherRail : rails) {
|
for (Rail anotherRail : rails.values()) {
|
||||||
if (anotherRail.getIdentifier() != id && toRemove.canConnectToRail(anotherRail)) {
|
if (anotherRail.getIdentifier() != id && toRemove.canConnectToRail(anotherRail)) {
|
||||||
otherRail = anotherRail;
|
otherRail = anotherRail;
|
||||||
break;
|
break;
|
||||||
@ -136,7 +137,7 @@ public class RailwayNetwork {
|
|||||||
while (!toProcess.isEmpty()) {
|
while (!toProcess.isEmpty()) {
|
||||||
Rail connected = toProcess.poll();
|
Rail connected = toProcess.poll();
|
||||||
|
|
||||||
for (Rail other : rails) {
|
for (Rail other : rails.values()) {
|
||||||
if (other != toRemove && !connectedRails.contains(other) && other.canConnectToRail(connected)) {
|
if (other != toRemove && !connectedRails.contains(other) && other.canConnectToRail(connected)) {
|
||||||
connectedRails.add(other);
|
connectedRails.add(other);
|
||||||
toProcess.offer(other);
|
toProcess.offer(other);
|
||||||
@ -145,7 +146,7 @@ public class RailwayNetwork {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (connectedRails.size() == rails.size() - 1) {
|
if (connectedRails.size() == rails.size() - 1) {
|
||||||
rails.remove(toRemove);
|
rails.remove(id);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@ -159,7 +160,7 @@ public class RailwayNetwork {
|
|||||||
* @return whether the switch could be set
|
* @return whether the switch could be set
|
||||||
*/
|
*/
|
||||||
public boolean setSwitch(final int id, final Vector2D position) {
|
public boolean setSwitch(final int id, final Vector2D position) {
|
||||||
Rail toSwitch = getRail(id);
|
Rail toSwitch = rails.get(id);
|
||||||
if (toSwitch != null) {
|
if (toSwitch != null) {
|
||||||
return toSwitch.switchTo(position);
|
return toSwitch.switchTo(position);
|
||||||
}
|
}
|
||||||
@ -174,8 +175,8 @@ public class RailwayNetwork {
|
|||||||
if (rails.isEmpty()) {
|
if (rails.isEmpty()) {
|
||||||
Terminal.printLine("No track exists");
|
Terminal.printLine("No track exists");
|
||||||
} else {
|
} else {
|
||||||
for (Rail rail : rails) {
|
for (int id : rails.keySet().stream().sorted().collect(Collectors.toList())) {
|
||||||
Terminal.printLine(rail.toString());
|
Terminal.printLine(rails.get(id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,30 +185,12 @@ public class RailwayNetwork {
|
|||||||
* @return the next positive rail identifier, or -1 if none available
|
* @return the next positive rail identifier, or -1 if none available
|
||||||
*/
|
*/
|
||||||
private int getNextRailIdentifier() {
|
private int getNextRailIdentifier() {
|
||||||
int id = 1;
|
for (int i = 1; i > 0; i++) {
|
||||||
for (Rail rail : rails) {
|
if (!rails.containsKey(i)) {
|
||||||
if (rail.id == id) {
|
return i;
|
||||||
id++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (id > 0) {
|
return -1;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -262,12 +245,7 @@ public class RailwayNetwork {
|
|||||||
* @return the rail that contains the position, null if none found
|
* @return the rail that contains the position, null if none found
|
||||||
*/
|
*/
|
||||||
public Rail findContainingRail(final Vector2D position) {
|
public Rail findContainingRail(final Vector2D position) {
|
||||||
for (Rail rail : rails) {
|
return rails.values().stream().filter(rail -> rail.contains(position)).findFirst().orElse(null);
|
||||||
if (rail.contains(position)) {
|
|
||||||
return rail;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -276,7 +254,7 @@ public class RailwayNetwork {
|
|||||||
* @return the rail(s) that touch this position
|
* @return the rail(s) that touch this position
|
||||||
*/
|
*/
|
||||||
public Rail[] findTouchingRails(final Vector2D 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
|
* @return whether the rail network is ready
|
||||||
*/
|
*/
|
||||||
public boolean isReadyForTrains() {
|
public boolean isReadyForTrains() {
|
||||||
return rails.stream().allMatch(Rail::isReadyForTrains);
|
return rails.values().stream().allMatch(Rail::isReadyForTrains);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,11 +40,9 @@ public class TrainSet extends RollingStock {
|
|||||||
*/
|
*/
|
||||||
public TrainSet(final String series, final String name, final int length,
|
public TrainSet(final String series, final String name, final int length,
|
||||||
final boolean couplingFront, final boolean couplingBack) {
|
final boolean couplingFront, final boolean couplingBack) {
|
||||||
|
super(length, couplingFront, couplingBack);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.series = series;
|
this.series = series;
|
||||||
super.length = length;
|
|
||||||
super.couplingFront = couplingFront;
|
|
||||||
super.couplingBack = couplingBack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -54,7 +52,7 @@ public class TrainSet extends RollingStock {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
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
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user