Skip to content

Commit 43a17bf

Browse files
committed
[model] added overwrite import to rest of objects
1 parent b0c64cc commit 43a17bf

File tree

11 files changed

+92
-51
lines changed

11 files changed

+92
-51
lines changed

grafikon-model/src/main/java/net/parostroj/timetable/model/Route.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.google.common.collect.Iterables;
66

7+
import com.google.common.collect.Lists;
78
import net.parostroj.timetable.utils.TransformUtil;
89
import net.parostroj.timetable.visitors.TrainDiagramVisitor;
910
import net.parostroj.timetable.visitors.Visitable;
@@ -43,6 +44,11 @@ public Route(String id, Route route) {
4344
segments = new LinkedList<>(route.segments);
4445
}
4546

47+
public Route(String id, TrainDiagram diagram, Iterable<RouteSegment> segments) {
48+
this(id, diagram);
49+
this.segments = Lists.newLinkedList(segments);
50+
}
51+
4652
@SafeVarargs
4753
public Route(String id, TrainDiagram diagram, RouteSegment... segments) {
4854
this(id, diagram);
@@ -55,6 +61,8 @@ public Route(String id, TrainDiagram diagram, String name, RouteSegment... segme
5561
this.setName(name);
5662
}
5763

64+
65+
5866
public List<RouteSegment> getSegments() {
5967
return segments;
6068
}
@@ -122,8 +130,7 @@ public void add(Route route) {
122130
public boolean checkDuplicateNodes() {
123131
Set<Node> dNodes = new HashSet<>();
124132
for (RouteSegment segment : segments) {
125-
if (segment instanceof Node) {
126-
Node node = (Node) segment;
133+
if (segment instanceof Node node) {
127134
if (dNodes.contains(node)) {
128135
return true;
129136
} else {

grafikon-model/src/main/java/net/parostroj/timetable/model/imports/CompanyImport.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,21 @@ public CompanyImport(TrainDiagram diagram, ImportMatch match, boolean overwrite)
2323
@Override
2424
protected ObjectWithId importObjectImpl(ObjectWithId o) {
2525
// check class
26-
if (!(o instanceof Company))
26+
if (!(o instanceof Company importedCompany)) {
2727
return null;
28-
Company importedCompany = (Company)o;
28+
}
2929

3030
// check existence
3131
Company checkedCompany = this.getCompany(importedCompany);
3232
if (checkedCompany != null) {
33-
String message = "company already exists";
34-
this.addError(importedCompany, message);
35-
log.debug("{}: {}", message, checkedCompany);
36-
return null;
33+
if (overwrite) {
34+
this.getDiagram().getCompanies().remove(checkedCompany);
35+
} else {
36+
String message = "company already exists";
37+
this.addError(importedCompany, message);
38+
log.debug("{}: {}", message, checkedCompany);
39+
return null;
40+
}
3741
}
3842

3943
// create new company

grafikon-model/src/main/java/net/parostroj/timetable/model/imports/GroupImport.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,21 @@ public GroupImport(TrainDiagram diagram, ImportMatch match, boolean overwrite) {
2323
@Override
2424
protected ObjectWithId importObjectImpl(ObjectWithId o) {
2525
// check class
26-
if (!(o instanceof Group))
26+
if (!(o instanceof Group importedGroup)) {
2727
return null;
28-
Group importedGroup = (Group)o;
28+
}
2929

3030
// check existence
3131
Group checkedGroup = this.getGroup(importedGroup);
3232
if (checkedGroup != null) {
33-
String message = "group already exists";
34-
this.addError(importedGroup, message);
35-
log.debug("{}: {}", message, checkedGroup);
36-
return null;
33+
if (overwrite) {
34+
this.getDiagram().getGroups().remove(checkedGroup);
35+
} else {
36+
String message = "group already exists";
37+
this.addError(importedGroup, message);
38+
log.debug("{}: {}", message, checkedGroup);
39+
return null;
40+
}
3741
}
3842

3943
// create new group

grafikon-model/src/main/java/net/parostroj/timetable/model/imports/RouteImport.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,27 @@ public RouteImport(TrainDiagram diagram, ImportMatch match, boolean overwrite) {
2424
@Override
2525
protected ObjectWithId importObjectImpl(ObjectWithId importedObject) {
2626
// check class
27-
if (!(importedObject instanceof Route)) {
27+
if (!(importedObject instanceof Route importedRoute)) {
2828
// skip other objects
2929
return null;
3030
}
31-
Route importedRoute = (Route) importedObject;
3231

3332
// check if the route already exist
3433
Route checkedRoute = this.getRoute(importedRoute);
3534
if (checkedRoute != null) {
36-
String message = "route already exists";
37-
this.addError(importedRoute, message);
38-
log.debug("{}: {}", message, checkedRoute);
39-
return null;
35+
if (overwrite) {
36+
this.getDiagram().getRoutes().remove(checkedRoute);
37+
} else {
38+
String message = "route already exists";
39+
this.addError(importedRoute, message);
40+
log.debug("{}: {}", message, checkedRoute);
41+
return null;
42+
}
4043
}
4144

4245
// create route
43-
NetSegment<?>[] segments = getSegments(importedRoute);
44-
if (segments == null) {
46+
List<RouteSegment> segments = getSegments(importedRoute);
47+
if (segments.isEmpty()) {
4548
String message = "nodes missing";
4649
this.addError(importedRoute, message);
4750
log.debug("{}: {}", message, importedRoute);
@@ -58,15 +61,15 @@ protected ObjectWithId importObjectImpl(ObjectWithId importedObject) {
5861
return route;
5962
}
6063

61-
private NetSegment<?>[] getSegments(Route oRoute) {
62-
List<NetSegment<?>> result = new LinkedList<>();
64+
private List<RouteSegment> getSegments(Route oRoute) {
65+
List<RouteSegment> result = new LinkedList<>();
6366
for (RouteSegment oSeg : oRoute.getSegments()) {
6467
if (oSeg instanceof Line) {
6568
result.add(this.getLine((Line) oSeg));
6669
} else if (oSeg instanceof Node) {
6770
result.add(this.getNode((Node) oSeg));
6871
}
6972
}
70-
return result.toArray(new NetSegment[0]);
73+
return result;
7174
}
7275
}

grafikon-model/src/main/java/net/parostroj/timetable/model/imports/TrainTypeImport.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,21 @@ public TrainTypeImport(TrainDiagram diagram, ImportMatch match, boolean overwrit
2424
@Override
2525
protected ObjectWithId importObjectImpl(ObjectWithId o) {
2626
// check class
27-
if (!(o instanceof TrainType))
27+
if (!(o instanceof TrainType importedType)) {
2828
return null;
29-
TrainType importedType = (TrainType)o;
29+
}
3030

3131
// check existence
3232
TrainType checkedType = this.getTrainType(importedType);
3333
if (checkedType != null) {
34-
String message = "train type already exists";
35-
this.addError(importedType, message);
36-
log.debug("{}: {}", message, checkedType);
37-
return null;
34+
if (overwrite) {
35+
this.getDiagram().getTrainTypes().remove(checkedType);
36+
} else {
37+
String message = "train type already exists";
38+
this.addError(importedType, message);
39+
log.debug("{}: {}", message, checkedType);
40+
return null;
41+
}
3842
}
3943

4044
// get category

grafikon-model/src/main/java/net/parostroj/timetable/model/imports/TrainsCycleImport.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,22 @@ public TrainsCycleImport(TrainDiagram diagram, ImportMatch match, boolean overwr
2525
@Override
2626
protected ObjectWithId importObjectImpl(ObjectWithId importedObject) {
2727
// check class
28-
if (!(importedObject instanceof TrainsCycle)) {
28+
if (!(importedObject instanceof TrainsCycle importedCycle)) {
2929
// skip other objects
3030
return null;
3131
}
32-
TrainsCycle importedCycle = (TrainsCycle) importedObject;
3332

3433
// check if cycle already exist
3534
TrainsCycle checkedCycle = this.getCycle(importedCycle);
3635
if (checkedCycle != null) {
37-
String message = "circulation already exists";
38-
this.addError(importedCycle, message);
39-
log.debug("{}: {}", message, checkedCycle);
40-
return null;
36+
if (overwrite) {
37+
checkedCycle.getType().getCycles().remove(checkedCycle);
38+
} else {
39+
String message = "circulation already exists";
40+
this.addError(importedCycle, message);
41+
log.debug("{}: {}", message, checkedCycle);
42+
return null;
43+
}
4144
}
4245

4346
// create a new cycle

grafikon-model/src/main/java/net/parostroj/timetable/model/imports/TrainsCycleTypeImport.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,22 @@ public TrainsCycleTypeImport(TrainDiagram diagram, ImportMatch match, boolean ov
2121
@Override
2222
protected ObjectWithId importObjectImpl(ObjectWithId importedObject) {
2323
// check class
24-
if (!(importedObject instanceof TrainsCycleType)) {
24+
if (!(importedObject instanceof TrainsCycleType importedCycleType)) {
2525
// skip other objects
2626
return null;
2727
}
28-
TrainsCycleType importedCycleType = (TrainsCycleType) importedObject;
2928

3029
// check if cycle type already exist
3130
TrainsCycleType checkedCycleType = this.getCycleType(importedCycleType);
3231
if (checkedCycleType != null) {
33-
String message = "circulation type already exists";
34-
this.addError(importedCycleType, message);
35-
log.debug("{}: {}", message, checkedCycleType);
36-
return null;
32+
if (overwrite) {
33+
this.getDiagram().getCycleTypes().remove(checkedCycleType);
34+
} else {
35+
String message = "circulation type already exists";
36+
this.addError(importedCycleType, message);
37+
log.debug("{}: {}", message, checkedCycleType);
38+
return null;
39+
}
3740
}
3841

3942
TrainsCycleType type = new TrainsCycleType(this.getId(importedCycleType), this.getDiagram());

grafikon-model/src/main/java/net/parostroj/timetable/model/validators/CompanyRemoveValidator.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public CompanyRemoveValidator(TrainDiagram diagram) {
1919

2020
@Override
2121
public boolean validate(Event event) {
22-
if (event.getSource() instanceof TrainDiagram && event.getType() == Type.REMOVED && event.getObject() instanceof Company) {
23-
Company removedCompany = (Company) event.getObject();
22+
if (event.getSource() instanceof TrainDiagram && event.getType() == Type.REMOVED
23+
&& event.getObject() instanceof Company removedCompany) {
2424
// remove company from circulations...
2525
for (TrainsCycleType type : diagram.getCycleTypes()) {
2626
for (TrainsCycle circulation : type.getCycles()) {
@@ -30,6 +30,13 @@ public boolean validate(Event event) {
3030
}
3131
}
3232
}
33+
// remove company from nodes
34+
for (Node node : diagram.getNet().getNodes()) {
35+
Company company = node.getCompany();
36+
if (company == removedCompany) {
37+
node.removeAttribute(Node.ATTR_COMPANY);
38+
}
39+
}
3340
return true;
3441
}
3542
return false;

grafikon-model/src/main/java/net/parostroj/timetable/model/validators/GroupRemoveValidator.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ public GroupRemoveValidator(TrainDiagram diagram) {
2222
@Override
2323
public boolean validate(Event event) {
2424
if (event.getSource() instanceof TrainDiagram && event.getType() == Type.REMOVED
25-
&& event.getObject() instanceof Group) {
26-
Group group = (Group) event.getObject();
25+
&& event.getObject() instanceof Group group) {
2726
// remove group from trains ...
2827
for (Train train : diagram.getTrains()) {
2928
Group trainGroup = train.getAttributes().get(Train.ATTR_GROUP, Group.class);
30-
if (group.equals(trainGroup))
29+
if (group.equals(trainGroup)) {
3130
train.removeAttribute(Train.ATTR_GROUP);
31+
}
3232
}
3333
return true;
3434
}

grafikon-model/src/main/java/net/parostroj/timetable/model/validators/TrainTypeValidator.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@ public boolean validate(Event event) {
2424
}
2525
}
2626
return true;
27+
} else if (event.getSource() instanceof TrainDiagram && event.getType() == Type.REMOVED
28+
&& event.getObject() instanceof TrainType type) {
29+
for (Train train : diagram.getTrains()) {
30+
if (train.getType() == type) {
31+
train.setType(null);
32+
}
33+
}
2734
}
2835
return false;
2936
}

grafikon-model/src/main/java/net/parostroj/timetable/model/validators/TrainsCycleValidator.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ public boolean validate(Event event) {
2828
if (event.getSource() instanceof TrainsCycle) {
2929
validated = handleTrainsCycleEvent(event);
3030
}
31-
if (event.getSource() instanceof TrainDiagram && event.getObject() instanceof TrainsCycle
31+
if (event.getSource() instanceof TrainDiagram && event.getObject() instanceof TrainsCycle deleted
3232
&& event.getType() == Event.Type.REMOVED) {
33-
TrainsCycle deleted = (TrainsCycle) event.getObject();
3433
// handle sequence of circulations
3534
if (deleted.isPartOfSequence()) {
3635
deleted.removeFromSequence();
@@ -77,7 +76,7 @@ private void distributeAttributesInSequence(TrainsCycle circulation, AttributeCh
7776
}
7877

7978
private void recalculateEngineClassChange(TrainsCycle circulation) {
80-
for (TrainsCycleItem item : new ArrayList<TrainsCycleItem>(circulation.getItems())) {
79+
for (TrainsCycleItem item : new ArrayList<>(circulation.getItems())) {
8180
item.getTrain().recalculate();
8281
}
8382
}

0 commit comments

Comments
 (0)