Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit 236d8410 authored by Marc's avatar Marc
Browse files

Migrate Fare data class to Java

parent 15671891
Branches master
No related tags found
No related merge requests found
Pipeline #9876 failed
Showing
with 106 additions and 50 deletions
......@@ -13,4 +13,4 @@ cache:
install:jdk11:
<<: *install
image: maven:3.6.0-jdk-11
image: maven:3-openjdk-17
\ No newline at end of file
......@@ -14,12 +14,12 @@ public enum Bound {
.filter(bound -> bound.ordinal() == journeyIndex)
.findFirst()
.orElseThrow(() -> new IllegalArgumentException(
"Journey index " + journeyIndex + "$journeyIndex is outside the supported range " +
"Journey index " + journeyIndex + " is outside the supported range " +
"[0," + (maxIndex - 1) + "]"));
}
public Bound oppositeWay() {
return fromJourneyIndex(ordinal() + 1 % 2);
return fromJourneyIndex((ordinal()+1) % 2);
}
}
\ No newline at end of file
package org.craftsrecords.columbiadexpress.domain.sharedkernel;
public enum ComfortClass {
FIRST,
SECOND;
}
package org.craftsrecords.columbiadexpress.domain.sharedkernel;
import java.util.UUID;
import static java.util.UUID.randomUUID;
public record Fare(UUID id, ComfortClass comfortClass, Price price) {
public Fare(ComfortClass comfortClass, Price price) {
this(randomUUID(), comfortClass, price);
}
public UUID getId() {
return id;
}
public ComfortClass getComfortClass() {
return comfortClass;
}
public Price getPrice() {
return price;
}
}
package org.craftsrecords.columbiadexpress.domain.sharedkernel;
import java.util.Arrays;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Fares {
private final Set<Fare> values;
public Fares(Set<Fare> values) {
this.values = values;
}
public Fare first(Predicate<? super Fare> predicate) {
return values.stream().filter(predicate).findFirst().orElseThrow(NoSuchElementException::new);
}
public Fare first() {
return values.stream().findFirst().orElseThrow(NoSuchElementException::new);
}
public boolean any(Predicate<? super Fare> predicate) {
return values.stream().anyMatch(predicate);
}
public <T> List<T> map(Function<? super Fare, T> mapFunction) {
return values.stream().map(mapFunction).collect(Collectors.toList());
}
public static Fares of(Fare... fares) {
return new Fares(Arrays.stream(fares).collect(Collectors.toSet()));
}
public boolean isNotEmpty() {
return !this.values.isEmpty();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Fares fares = (Fares) o;
return Objects.equals(values, fares.values);
}
@Override
public int hashCode() {
return values != null ? values.hashCode() : 0;
}
}
package org.craftsrecords.columbiadexpress.domain
import org.craftsrecords.columbiadexpress.domain.api.BookSpaceTrains
import org.craftsrecords.columbiadexpress.domain.api.DomainService
import org.craftsrecords.columbiadexpress.domain.api.RetrieveSpacePorts
import org.craftsrecords.columbiadexpress.domain.api.SearchForSpaceTrains
import org.craftsrecords.columbiadexpress.domain.api.SelectSpaceTrain
//import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound
//import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound.INBOUND
//import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound.OUTBOUND
import org.craftsrecords.columbiadexpress.domain.api.*
import org.craftsrecords.columbiadexpress.domain.booking.Booking
import org.craftsrecords.columbiadexpress.domain.search.Search
import org.craftsrecords.columbiadexpress.domain.search.SpaceTrain
......@@ -12,17 +11,11 @@ import org.craftsrecords.columbiadexpress.domain.search.SpaceTrains
import org.craftsrecords.columbiadexpress.domain.search.criteria.Criteria
import org.craftsrecords.columbiadexpress.domain.search.criteria.Journey
import org.craftsrecords.columbiadexpress.domain.search.criteria.Journeys
import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound
import org.craftsrecords.columbiadexpress.domain.sharedkernel.*
import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound.INBOUND
import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound.OUTBOUND
//import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound
//import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound.INBOUND
//import org.craftsrecords.columbiadexpress.domain.sharedkernel.Bound.OUTBOUND
import org.craftsrecords.columbiadexpress.domain.sharedkernel.ComfortClass.FIRST
import org.craftsrecords.columbiadexpress.domain.sharedkernel.ComfortClass.SECOND
import org.craftsrecords.columbiadexpress.domain.sharedkernel.Fare
import org.craftsrecords.columbiadexpress.domain.sharedkernel.Price
import org.craftsrecords.columbiadexpress.domain.sharedkernel.Schedule
import org.craftsrecords.columbiadexpress.domain.spaceport.AstronomicalBody
import org.craftsrecords.columbiadexpress.domain.spaceport.SpacePort
import org.craftsrecords.columbiadexpress.domain.spi.Bookings
......@@ -30,9 +23,8 @@ import org.craftsrecords.columbiadexpress.domain.spi.Searches
import org.craftsrecords.columbiadexpress.domain.spi.SpacePorts
import java.math.BigDecimal
import java.time.LocalDateTime
import java.util.Currency
import java.util.*
import java.util.Locale.FRANCE
import java.util.UUID
import org.craftsrecords.columbiadexpress.domain.booking.SpaceTrain as BookingSpaceTrain
@DomainService
......@@ -191,8 +183,8 @@ private fun computeArrival(departureSchedule: LocalDateTime, spaceTrainIndex: Lo
private fun generateFares(): Set<Fare> {
val currency = Currency.getInstance(FRANCE)
return setOf(
Fare(comfortClass = FIRST, price = Price(BigDecimal((180..400).random()), currency)),
Fare(comfortClass = SECOND, price = Price(BigDecimal((150..200).random()), currency))
Fare( FIRST, Price(BigDecimal((180..400).random()), currency)),
Fare( SECOND, Price(BigDecimal((150..200).random()), currency))
)
}
......
package org.craftsrecords.columbiadexpress.domain.sharedkernel
//enum class Bound {
// OUTBOUND,
// INBOUND;
//
// companion object {
// fun fromJourneyIndex(journeyIndex: Int): Bound {
// val bounds = values()
// val maxIndex = bounds.size
//
// require(journeyIndex in 0 until maxIndex) {
// "Journey index $journeyIndex is outside the supported range [0,${maxIndex.dec()}]"
// }
// return bounds[journeyIndex]
// }
// }
//
// fun oppositeWay(): Bound = fromJourneyIndex((ordinal + 1) % 2)
//}
\ No newline at end of file
package org.craftsrecords.columbiadexpress.domain.sharedkernel
enum class ComfortClass {
FIRST,
SECOND
}
......@@ -3,6 +3,6 @@ package org.craftsrecords.columbiadexpress.domain.sharedkernel
import java.util.UUID
import java.util.UUID.randomUUID
data class Fare(val id: UUID = randomUUID(), val comfortClass: ComfortClass, val price: Price)
//data class Fare(val id: UUID = randomUUID(), val comfortClass: ComfortClass, val price: Price)
typealias Fares = Set<Fare>
\ No newline at end of file
......@@ -8,4 +8,4 @@ import java.util.UUID.nameUUIDFromBytes
fun fare(): Fare = Fare(nameUUIDFromBytes("fare1".toByteArray()), FIRST, price())
fun firstClassFare() = fare()
fun secondClassFare() = Fare(nameUUIDFromBytes("fare2".toByteArray()), SECOND, price())
fun randomFare(): Fare = Fare(comfortClass = values().random(), price = randomPrice())
\ No newline at end of file
fun randomFare(): Fare = Fare( values().random(), randomPrice())
\ No newline at end of file
......@@ -20,10 +20,10 @@
</modules>
<properties>
<kotlin.version>1.5.0</kotlin.version>
<kotlin.version>1.7.0</kotlin.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<kotlin.compiler.incremental>true</kotlin.compiler.incremental>
<java.version>11</java.version>
<java.version>17</java.version>
<junit-jupiter.version>5.7.1</junit-jupiter.version>
<junit-platform.version>1.7.1</junit-platform.version>
</properties>
......@@ -135,7 +135,7 @@
<args>
<arg>-Xjsr305=strict</arg>
</args>
<jvmTarget>1.8</jvmTarget>
<jvmTarget>17</jvmTarget>
<javaParameters>true</javaParameters>
</configuration>
<executions>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment