Skip to content

Commit 0518590

Browse files
authored
Merge pull request #32 from krzykrucz/master
Replaced tuples with domain names
2 parents dbd2744 + a2a66fd commit 0518590

File tree

18 files changed

+148
-90
lines changed

18 files changed

+148
-90
lines changed

src/integration-test/groovy/io/pillopl/library/lending/patronprofile/infrastructure/FindingPatronProfileInDatabaseIT.groovy

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import io.pillopl.library.lending.librarybranch.model.LibraryBranchId
88
import io.pillopl.library.lending.patron.model.PatronEvent
99
import io.pillopl.library.lending.patron.model.PatronId
1010
import io.pillopl.library.lending.patron.model.PatronType
11+
import io.pillopl.library.lending.patronprofile.model.Checkout
12+
import io.pillopl.library.lending.patronprofile.model.Hold
1113
import io.pillopl.library.lending.patronprofile.model.PatronProfile
1214
import io.pillopl.library.lending.patronprofile.model.PatronProfiles
1315
import org.springframework.beans.factory.annotation.Autowired
@@ -23,7 +25,6 @@ import static io.pillopl.library.catalogue.BookType.Restricted
2325
import static io.pillopl.library.lending.book.model.BookFixture.anyBookId
2426
import static io.pillopl.library.lending.librarybranch.model.LibraryBranchFixture.anyBranch
2527
import static io.pillopl.library.lending.patron.model.PatronFixture.anyPatronId
26-
import static io.vavr.Tuple.of
2728
import static java.time.Instant.now
2829

2930
@SpringBootTest(classes = LendingTestContext.class)
@@ -83,14 +84,14 @@ class FindingPatronProfileInDatabaseIT extends Specification {
8384

8485
void thereIsOnlyOneHold(PatronProfile profile) {
8586
assert profile.holdsView.currentHolds.size() == 1
86-
assert profile.holdsView.currentHolds.get(0).equals(of(bookId, TOMORROW))
87+
assert profile.holdsView.currentHolds.get(0) == new Hold(bookId, TOMORROW)
8788
assert profile.currentCheckouts.currentCheckouts.size() == 0
8889
}
8990

9091
void thereIsOnlyOneCheckout(PatronProfile profile) {
9192
assert profile.holdsView.currentHolds.size() == 0
9293
assert profile.currentCheckouts.currentCheckouts.size() == 1
93-
assert profile.currentCheckouts.currentCheckouts.get(0).equals(of(bookId, TOMORROW))
94+
assert profile.currentCheckouts.currentCheckouts.get(0) == new Checkout(bookId, TOMORROW)
9495
}
9596

9697
void thereIsZeroHoldsAndZeroCheckouts(PatronProfile profile) {
@@ -99,7 +100,7 @@ class FindingPatronProfileInDatabaseIT extends Specification {
99100

100101
}
101102

102-
PatronEvent.BookCheckedOut bookCheckedOutTill(Instant till) {
103+
PatronEvent.BookCheckedOut bookCheckedOutTill(Instant till) {
103104
return new PatronEvent.BookCheckedOut(
104105
now(),
105106
patronId.getPatronId(),

src/integration-test/groovy/io/pillopl/library/lending/patronprofile/web/PatronProfileControllerIT.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
import io.pillopl.library.lending.patron.application.hold.CancelingHold;
77
import io.pillopl.library.lending.patron.model.PatronFixture;
88
import io.pillopl.library.lending.patron.model.PatronId;
9+
import io.pillopl.library.lending.patronprofile.model.Checkout;
910
import io.pillopl.library.lending.patronprofile.model.CheckoutsView;
11+
import io.pillopl.library.lending.patronprofile.model.Hold;
1012
import io.pillopl.library.lending.patronprofile.model.HoldsView;
1113
import io.pillopl.library.lending.patronprofile.model.PatronProfile;
1214
import io.pillopl.library.lending.patronprofile.model.PatronProfiles;
13-
import io.vavr.Tuple;
1415
import io.vavr.control.Try;
1516
import org.junit.Test;
1617
import org.junit.runner.RunWith;
@@ -191,7 +192,7 @@ public void shouldReturn500IfSomethingFailedWhileCanceling() throws Exception {
191192

192193
PatronProfile profiles() {
193194
return new PatronProfile(
194-
new HoldsView(of(Tuple.of(bookId, anyDate))),
195-
new CheckoutsView(of(Tuple.of(anotherBook, anotherDate))));
195+
new HoldsView(of(new Hold(bookId, anyDate))),
196+
new CheckoutsView(of(new Checkout(anotherBook, anotherDate))));
196197
}
197198
}

src/main/java/io/pillopl/library/lending/dailysheet/infrastructure/SheetsReadModel.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@
33
import io.pillopl.library.catalogue.BookId;
44
import io.pillopl.library.lending.dailysheet.model.CheckoutsToOverdueSheet;
55
import io.pillopl.library.lending.dailysheet.model.DailySheet;
6+
import io.pillopl.library.lending.dailysheet.model.ExpiredHold;
67
import io.pillopl.library.lending.dailysheet.model.HoldsToExpireSheet;
8+
import io.pillopl.library.lending.dailysheet.model.OverdueCheckout;
79
import io.pillopl.library.lending.librarybranch.model.LibraryBranchId;
8-
import io.pillopl.library.lending.patron.model.PatronEvent.*;
10+
import io.pillopl.library.lending.patron.model.PatronEvent.BookCheckedOut;
11+
import io.pillopl.library.lending.patron.model.PatronEvent.BookHoldCanceled;
12+
import io.pillopl.library.lending.patron.model.PatronEvent.BookHoldExpired;
13+
import io.pillopl.library.lending.patron.model.PatronEvent.BookPlacedOnHold;
14+
import io.pillopl.library.lending.patron.model.PatronEvent.BookReturned;
915
import io.pillopl.library.lending.patron.model.PatronId;
10-
import io.vavr.Tuple3;
1116
import io.vavr.control.Option;
1217
import lombok.AllArgsConstructor;
1318
import org.springframework.context.event.EventListener;
@@ -23,7 +28,6 @@
2328
import java.util.Map;
2429
import java.util.UUID;
2530

26-
import static io.vavr.Tuple.of;
2731
import static io.vavr.collection.List.ofAll;
2832
import static java.sql.Timestamp.from;
2933
import static java.util.stream.Collectors.toList;
@@ -39,7 +43,7 @@ public HoldsToExpireSheet queryForHoldsToExpireSheet() {
3943
return new HoldsToExpireSheet(ofAll(
4044
findHoldsToExpire()
4145
.stream()
42-
.map(this::toExpiredHoldsTuple)
46+
.map(this::toExpiredHold)
4347
.collect(toList())));
4448
}
4549

@@ -50,8 +54,8 @@ private List<Map<String, Object>> findHoldsToExpire() {
5054
new ColumnMapRowMapper());
5155
}
5256

53-
private Tuple3<BookId, PatronId, LibraryBranchId> toExpiredHoldsTuple(Map<String, Object> map) {
54-
return of(
57+
private ExpiredHold toExpiredHold(Map<String, Object> map) {
58+
return new ExpiredHold(
5559
new BookId((UUID) map.get("BOOK_ID")),
5660
new PatronId((UUID) map.get("HOLD_BY_PATRON_ID")),
5761
new LibraryBranchId((UUID) map.get("HOLD_AT_BRANCH")));
@@ -62,7 +66,7 @@ public CheckoutsToOverdueSheet queryForCheckoutsToOverdue() {
6266
return new CheckoutsToOverdueSheet(ofAll(
6367
findCheckoutsToOverdue()
6468
.stream()
65-
.map(this::toOverdueCheckoutsTuple)
69+
.map(this::toOverdueCheckout)
6670
.collect(toList())));
6771
}
6872

@@ -73,8 +77,8 @@ private List<Map<String, Object>> findCheckoutsToOverdue() {
7377
new ColumnMapRowMapper());
7478
}
7579

76-
private Tuple3<BookId, PatronId, LibraryBranchId> toOverdueCheckoutsTuple(Map<String, Object> map) {
77-
return of(
80+
private OverdueCheckout toOverdueCheckout(Map<String, Object> map) {
81+
return new OverdueCheckout(
7882
new BookId((UUID) map.get("BOOK_ID")),
7983
new PatronId((UUID) map.get("CHECKED_OUT_BY_PATRON_ID")),
8084
new LibraryBranchId((UUID) map.get("CHECKED_OUT_AT_BRANCH")));
Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package io.pillopl.library.lending.dailysheet.model;
22

3-
import io.pillopl.library.catalogue.BookId;
4-
import io.pillopl.library.lending.librarybranch.model.LibraryBranchId;
53
import io.pillopl.library.lending.patron.model.PatronEvent.OverdueCheckoutRegistered;
6-
import io.pillopl.library.lending.patron.model.PatronId;
7-
import io.vavr.Tuple3;
84
import io.vavr.collection.List;
95
import io.vavr.collection.Stream;
106
import lombok.NonNull;
@@ -14,21 +10,15 @@
1410
public class CheckoutsToOverdueSheet {
1511

1612
@NonNull
17-
List<Tuple3<BookId, PatronId, LibraryBranchId>> checkouts;
13+
List<OverdueCheckout> checkouts;
1814

1915
public Stream<OverdueCheckoutRegistered> toStreamOfEvents() {
20-
return checkouts
21-
.toStream()
22-
.map(this::tupleToEvent);
16+
return checkouts.toStream()
17+
.map(OverdueCheckout::toEvent);
2318
}
2419

2520
public int count() {
2621
return checkouts.size();
2722
}
2823

29-
private OverdueCheckoutRegistered tupleToEvent(Tuple3<BookId, PatronId, LibraryBranchId> overdueCheckouts) {
30-
return OverdueCheckoutRegistered.now(overdueCheckouts._2, overdueCheckouts._1, overdueCheckouts._3);
31-
}
32-
33-
3424
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.pillopl.library.lending.dailysheet.model;
2+
3+
import io.pillopl.library.catalogue.BookId;
4+
import io.pillopl.library.lending.librarybranch.model.LibraryBranchId;
5+
import io.pillopl.library.lending.patron.model.PatronEvent.BookHoldExpired;
6+
import io.pillopl.library.lending.patron.model.PatronId;
7+
import lombok.Value;
8+
9+
@Value
10+
public class ExpiredHold {
11+
private final BookId heldBook;
12+
private final PatronId patron;
13+
private final LibraryBranchId library;
14+
15+
BookHoldExpired toEvent() {
16+
return BookHoldExpired.now(this.heldBook, this.patron, this.library);
17+
}
18+
}
Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package io.pillopl.library.lending.dailysheet.model;
22

3-
import io.pillopl.library.catalogue.BookId;
4-
import io.pillopl.library.lending.librarybranch.model.LibraryBranchId;
53
import io.pillopl.library.lending.patron.model.PatronEvent;
6-
import io.pillopl.library.lending.patron.model.PatronId;
7-
import io.vavr.Tuple3;
84
import io.vavr.collection.List;
95
import io.vavr.collection.Stream;
106
import lombok.NonNull;
@@ -15,22 +11,17 @@
1511
public class HoldsToExpireSheet {
1612

1713
@NonNull
18-
List<Tuple3<BookId, PatronId, LibraryBranchId>> expiredHolds;
14+
List<ExpiredHold> expiredHolds;
1915

2016
@EventListener
2117
public Stream<PatronEvent.BookHoldExpired> toStreamOfEvents() {
2218
return expiredHolds
2319
.toStream()
24-
.map(this::tupleToEvent);
20+
.map(ExpiredHold::toEvent);
2521
}
2622

2723
public int count() {
2824
return expiredHolds.size();
2925
}
3026

31-
private PatronEvent.BookHoldExpired tupleToEvent(Tuple3<BookId, PatronId, LibraryBranchId> expiredHold) {
32-
return PatronEvent.BookHoldExpired.now(expiredHold._1, expiredHold._2, expiredHold._3);
33-
}
34-
35-
3627
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.pillopl.library.lending.dailysheet.model;
2+
3+
import io.pillopl.library.catalogue.BookId;
4+
import io.pillopl.library.lending.librarybranch.model.LibraryBranchId;
5+
import io.pillopl.library.lending.patron.model.PatronEvent.OverdueCheckoutRegistered;
6+
import io.pillopl.library.lending.patron.model.PatronId;
7+
import lombok.Value;
8+
9+
@Value
10+
public class OverdueCheckout {
11+
private final BookId checkedOutBook;
12+
private final PatronId patron;
13+
private final LibraryBranchId library;
14+
15+
OverdueCheckoutRegistered toEvent() {
16+
return OverdueCheckoutRegistered.now(this.patron, this.checkedOutBook, this.library);
17+
}
18+
}

src/main/java/io/pillopl/library/lending/patronprofile/infrastructure/PatronProfileReadModel.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@
22

33
import io.pillopl.library.catalogue.BookId;
44
import io.pillopl.library.lending.patron.model.PatronId;
5+
import io.pillopl.library.lending.patronprofile.model.Checkout;
56
import io.pillopl.library.lending.patronprofile.model.CheckoutsView;
7+
import io.pillopl.library.lending.patronprofile.model.Hold;
68
import io.pillopl.library.lending.patronprofile.model.HoldsView;
79
import io.pillopl.library.lending.patronprofile.model.PatronProfile;
810
import io.pillopl.library.lending.patronprofile.model.PatronProfiles;
9-
import io.vavr.Tuple;
10-
import io.vavr.Tuple2;
1111
import lombok.AllArgsConstructor;
1212
import org.springframework.jdbc.core.ColumnMapRowMapper;
1313
import org.springframework.jdbc.core.JdbcTemplate;
1414

1515
import java.sql.Timestamp;
16-
import java.time.Instant;
1716
import java.util.List;
1817
import java.util.Map;
1918
import java.util.UUID;
@@ -31,12 +30,12 @@ public PatronProfile fetchFor(PatronId patronId) {
3130
HoldsView holdsView = new HoldsView(
3231
ofAll(findCurrentHoldsFor(patronId)
3332
.stream()
34-
.map(this::toHoldViewTuple)
33+
.map(this::toHold)
3534
.collect(toList())));
3635
CheckoutsView checkoutsView = new CheckoutsView(
3736
ofAll(findCurrentCheckoutsFor(patronId)
3837
.stream()
39-
.map(this::toCheckoutsViewTuple)
38+
.map(this::toCheckout)
4039
.collect(toList())));
4140
return new PatronProfile(holdsView, checkoutsView);
4241
}
@@ -48,8 +47,8 @@ private List<Map<String, Object>> findCurrentHoldsFor(PatronId patronId) {
4847
new ColumnMapRowMapper());
4948
}
5049

51-
private Tuple2<BookId, Instant> toHoldViewTuple(Map<String, Object> map) {
52-
return Tuple.of(new BookId((UUID) map.get("BOOK_ID")),
50+
private Hold toHold(Map<String, Object> map) {
51+
return new Hold(new BookId((UUID) map.get("BOOK_ID")),
5352
((Timestamp) map.get("HOLD_TILL")).toInstant());
5453
}
5554

@@ -60,8 +59,8 @@ private List<Map<String, Object>> findCurrentCheckoutsFor(PatronId patronId) {
6059
new ColumnMapRowMapper());
6160
}
6261

63-
private Tuple2<BookId, Instant> toCheckoutsViewTuple(Map<String, Object> map) {
64-
return Tuple.of(new BookId((UUID) map.get("BOOK_ID")),
62+
private Checkout toCheckout(Map<String, Object> map) {
63+
return new Checkout(new BookId((UUID) map.get("BOOK_ID")),
6564
((Timestamp) map.get("CHECKOUT_TILL")).toInstant());
6665
}
6766
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.pillopl.library.lending.patronprofile.model;
2+
3+
import io.pillopl.library.catalogue.BookId;
4+
import lombok.Value;
5+
6+
import java.time.Instant;
7+
8+
@Value
9+
public class Checkout {
10+
11+
private final BookId book;
12+
13+
private final Instant till;
14+
15+
}
Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package io.pillopl.library.lending.patronprofile.model;
22

3-
import io.pillopl.library.catalogue.BookId;
4-
import io.vavr.Tuple2;
53
import io.vavr.collection.List;
64
import lombok.NonNull;
75
import lombok.Value;
86

9-
import java.time.Instant;
10-
117
@Value
128
public class CheckoutsView {
139

1410
@NonNull
15-
List<Tuple2<BookId, Instant>> currentCheckouts;
11+
List<Checkout> currentCheckouts;
1612

1713
}

0 commit comments

Comments
 (0)