group id changed to dddbyexamples

This commit is contained in:
Jakub Pilimon
2018-03-17 19:52:17 +01:00
parent 27361f823a
commit 65d6bc79e0
141 changed files with 484 additions and 429 deletions

View File

@@ -4,14 +4,14 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pl.com.bottega</groupId>
<groupId>pl.com.dddbyexamples</groupId>
<artifactId>demand-forecasting-model</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>pl.com.bottega</groupId>
<groupId>pl.com.dddbyexamples</groupId>
<artifactId>shared-kernel-model</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

View File

@@ -1,6 +1,6 @@
package pl.com.bottega.factory.delivery.planning;
package pl.com.dddbyexamples.factory.delivery.planning;
import pl.com.bottega.factory.demand.forecasting.Demand;
import pl.com.dddbyexamples.factory.demand.forecasting.Demand;
import java.time.LocalDate;
import java.time.LocalTime;

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.delivery.planning;
package pl.com.dddbyexamples.factory.delivery.planning;
import lombok.Value;

View File

@@ -1,7 +1,7 @@
package pl.com.bottega.factory.delivery.planning;
package pl.com.dddbyexamples.factory.delivery.planning;
import lombok.AllArgsConstructor;
import pl.com.bottega.factory.demand.forecasting.Demand;
import pl.com.dddbyexamples.factory.demand.forecasting.Demand;
import java.time.LocalDate;
import java.util.Map;

View File

@@ -1,7 +1,7 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import lombok.Value;
import pl.com.bottega.factory.demand.forecasting.DailyDemand.Result;
import pl.com.dddbyexamples.factory.demand.forecasting.DailyDemand.Result;
import java.time.LocalDate;
import java.util.Comparator;

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import lombok.Value;

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import lombok.Value;

View File

@@ -1,9 +1,8 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import lombok.Builder;
import lombok.Value;
import pl.com.bottega.factory.demand.forecasting.DemandedLevelsChanged.Change;
import pl.com.bottega.factory.demand.forecasting.ReviewRequired.ToReview;
import pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged.Change;
import java.util.*;
import java.util.stream.Collectors;
@@ -43,7 +42,7 @@ class DailyDemand {
Result.ResultBuilder result = Result.builder(id);
State state = state();
if (policy.reviewNeeded(this.documented, this.adjustment, documented)) {
result.toReview(new ToReview(id,
result.toReview(new ReviewRequired.ToReview(id,
this.documented,
this.adjustment.getDemand(),
documented)
@@ -117,7 +116,7 @@ class DailyDemand {
return new ResultBuilder().id(id);
}
static List<ToReview> reviews(List<Result> results) {
static List<ReviewRequired.ToReview> reviews(List<Result> results) {
return Collections.unmodifiableList(results.stream()
.filter(result -> result.toReview != null)
.map(result -> result.toReview)

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
public interface DemandEvents {
void emit(DemandedLevelsChanged event);

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import java.time.LocalDate;
import java.util.HashMap;

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import lombok.Value;

View File

@@ -1,10 +1,8 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import lombok.AllArgsConstructor;
import pl.com.bottega.factory.demand.forecasting.DailyDemand.Result;
import pl.com.bottega.factory.demand.forecasting.DemandedLevelsChanged.Change;
import pl.com.bottega.factory.demand.forecasting.ReviewRequired.ToReview;
import pl.com.bottega.factory.product.management.RefNoId;
import pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged.Change;
import pl.com.dddbyexamples.factory.product.management.RefNoId;
import java.time.Clock;
import java.time.LocalDate;
@@ -28,11 +26,11 @@ class ProductDemand {
void adjust(AdjustDemand adjustDemand) {
LocalDate today = LocalDate.now(clock);
List<Result> results = adjustDemand
List<DailyDemand.Result> results = adjustDemand
.forEachStartingFrom(today, this::adjustDaily);
updates.addAll(Result.updates(results));
updates.addAll(DailyDemand.Result.updates(results));
Map<DailyId, Change> changes = Result.levelChanges(results);
Map<DailyId, Change> changes = DailyDemand.Result.levelChanges(results);
if (!changes.isEmpty()) {
events.emit(new DemandedLevelsChanged(id, changes));
@@ -42,17 +40,17 @@ class ProductDemand {
void process(Document document) {
LocalDate today = LocalDate.now(clock);
List<Result> results = document
List<DailyDemand.Result> results = document
.forEachStartingFrom(today, this::updateDaily);
updates.addAll(Result.updates(results));
updates.addAll(DailyDemand.Result.updates(results));
Map<DailyId, Change> changes = Result.levelChanges(results);
Map<DailyId, Change> changes = DailyDemand.Result.levelChanges(results);
if (!changes.isEmpty()) {
events.emit(new DemandedLevelsChanged(id, changes));
}
List<ToReview> reviews = Result.reviews(results);
List<ReviewRequired.ToReview> reviews = DailyDemand.Result.reviews(results);
if (!reviews.isEmpty()) {
events.emit(new ReviewRequired(id, reviews));
@@ -65,12 +63,12 @@ class ProductDemand {
}
}
private Result adjustDaily(LocalDate date, Adjustment adjustment) {
private DailyDemand.Result adjustDaily(LocalDate date, Adjustment adjustment) {
DailyDemand demand = demands.get(date);
return demand.adjust(adjustment);
}
private Result updateDaily(LocalDate date, Demand demand) {
private DailyDemand.Result updateDaily(LocalDate date, Demand demand) {
DailyDemand daily = demands.get(date);
return daily.update(demand);
}

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
interface ProductDemandRepository {
ProductDemand get(String refNo);

View File

@@ -1,7 +1,7 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
import lombok.AllArgsConstructor;
import pl.com.bottega.factory.demand.forecasting.ReviewRequired.ToReview;
import pl.com.dddbyexamples.factory.demand.forecasting.ReviewRequired.ToReview;
import java.util.function.Function;

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting;
package pl.com.dddbyexamples.factory.demand.forecasting;
public interface ReviewPolicy {

View File

@@ -1,6 +1,7 @@
package pl.com.bottega.factory.delivery.planning
package pl.com.dddbyexamples.factory.delivery.planning
import pl.com.bottega.factory.demand.forecasting.Demand
import pl.com.dddbyexamples.factory.delivery.planning.Delivery
import pl.com.dddbyexamples.factory.demand.forecasting.Demand
import spock.lang.PendingFeature
import spock.lang.Specification
@@ -9,7 +10,7 @@ import java.time.LocalDateTime
import java.time.LocalTime
import java.util.stream.Collectors
import static pl.com.bottega.factory.demand.forecasting.Demand.Schema.AtDayStart
import static pl.com.dddbyexamples.factory.demand.forecasting.Demand.Schema.AtDayStart
class DeliveriesSuggestionSpec extends Specification {

View File

@@ -1,6 +1,8 @@
package pl.com.bottega.factory.delivery.planning
package pl.com.dddbyexamples.factory.delivery.planning
import pl.com.bottega.factory.demand.forecasting.Demand
import pl.com.dddbyexamples.factory.delivery.planning.Delivery
import pl.com.dddbyexamples.factory.delivery.planning.DeliveryAutoPlanner
import pl.com.dddbyexamples.factory.demand.forecasting.Demand
import spock.lang.Specification
import java.time.LocalDate
@@ -8,8 +10,8 @@ import java.time.LocalDateTime
import java.time.LocalTime
import java.util.stream.Collectors
import static pl.com.bottega.factory.delivery.planning.DeliveriesSuggestion.timesAndFractions
import static pl.com.bottega.factory.demand.forecasting.Demand.Schema.AtDayStart
import static pl.com.dddbyexamples.factory.delivery.planning.DeliveriesSuggestion.timesAndFractions
import static pl.com.dddbyexamples.factory.demand.forecasting.Demand.Schema.AtDayStart
class DeliveryAutoPlannerSpec extends Specification {

View File

@@ -1,12 +1,17 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.dddbyexamples.factory.demand.forecasting.Adjustment
import pl.com.dddbyexamples.factory.demand.forecasting.DailyId
import pl.com.dddbyexamples.factory.demand.forecasting.Demand
import pl.com.dddbyexamples.factory.demand.forecasting.ReviewPolicy
import java.time.Clock
import java.time.Instant
import java.time.LocalDate
import java.time.ZoneId
import static DemandedLevelsChanged.Change
import static pl.com.bottega.factory.demand.forecasting.ReviewRequired.ToReview
import static pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged.Change
import static pl.com.dddbyexamples.factory.demand.forecasting.ReviewRequired.ToReview
class DailyDemandBuilder {

View File

@@ -1,5 +1,7 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.dddbyexamples.factory.demand.forecasting.DemandEvents
import pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged
import spock.lang.Specification
import java.time.LocalDate

View File

@@ -1,10 +1,12 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.dddbyexamples.factory.demand.forecasting.DemandEvents
import pl.com.dddbyexamples.factory.demand.forecasting.DemandService
import spock.lang.Specification
import java.time.LocalDate
import static pl.com.bottega.factory.demand.forecasting.ReviewDecision.PICK_NEW
import static pl.com.dddbyexamples.factory.demand.forecasting.ReviewDecision.PICK_NEW
class DemandServiceSpec extends Specification implements ProductDemandTrait {

View File

@@ -1,4 +1,4 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import java.time.Clock
import java.time.LocalDate

View File

@@ -1,5 +1,7 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.dddbyexamples.factory.demand.forecasting.DemandEvents
import pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged
import spock.lang.Specification
import java.time.LocalDate

View File

@@ -1,5 +1,7 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.dddbyexamples.factory.demand.forecasting.Adjustment
import pl.com.dddbyexamples.factory.demand.forecasting.Demand
import spock.lang.Specification
class KeepingDailyDemandsSpec extends Specification {

View File

@@ -1,11 +1,21 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.bottega.factory.product.management.RefNoId
import pl.com.dddbyexamples.factory.demand.forecasting.AdjustDemand
import pl.com.dddbyexamples.factory.demand.forecasting.Adjustment
import pl.com.dddbyexamples.factory.demand.forecasting.ApplyReviewDecision
import pl.com.dddbyexamples.factory.demand.forecasting.DailyId
import pl.com.dddbyexamples.factory.demand.forecasting.Demand
import pl.com.dddbyexamples.factory.demand.forecasting.DemandEvents
import pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged
import pl.com.dddbyexamples.factory.demand.forecasting.Document
import pl.com.dddbyexamples.factory.demand.forecasting.ReviewDecision
import pl.com.dddbyexamples.factory.demand.forecasting.ReviewRequired
import pl.com.dddbyexamples.factory.product.management.RefNoId
import java.time.*
import static DemandedLevelsChanged.Change
import static pl.com.bottega.factory.demand.forecasting.ReviewRequired.ToReview
import static pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged.Change
import static pl.com.dddbyexamples.factory.demand.forecasting.ReviewRequired.ToReview
class ProductDemandBuilder {

View File

@@ -1,8 +1,15 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.dddbyexamples.factory.demand.forecasting.AdjustDemand
import pl.com.dddbyexamples.factory.demand.forecasting.ApplyReviewDecision
import pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged
import pl.com.dddbyexamples.factory.demand.forecasting.Document
import pl.com.dddbyexamples.factory.demand.forecasting.ReviewDecision
import pl.com.dddbyexamples.factory.demand.forecasting.ReviewRequired
import java.time.LocalDate
import static pl.com.bottega.factory.demand.forecasting.ReviewRequired.ToReview
import static pl.com.dddbyexamples.factory.demand.forecasting.ReviewRequired.ToReview
trait ProductDemandTrait {

View File

@@ -1,10 +1,11 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.dddbyexamples.factory.demand.forecasting.ReviewPolicy
import spock.lang.Specification
import static pl.com.bottega.factory.demand.forecasting.Adjustment.strong
import static pl.com.bottega.factory.demand.forecasting.Adjustment.weak
import static pl.com.bottega.factory.demand.forecasting.Demand.of
import static pl.com.dddbyexamples.factory.demand.forecasting.Adjustment.strong
import static pl.com.dddbyexamples.factory.demand.forecasting.Adjustment.weak
import static pl.com.dddbyexamples.factory.demand.forecasting.Demand.of
class ReviewPolicySpec extends Specification {

View File

@@ -1,10 +1,12 @@
package pl.com.bottega.factory.demand.forecasting
package pl.com.dddbyexamples.factory.demand.forecasting
import pl.com.dddbyexamples.factory.demand.forecasting.DemandEvents
import pl.com.dddbyexamples.factory.demand.forecasting.DemandedLevelsChanged
import spock.lang.Specification
import java.time.LocalDate
import static pl.com.bottega.factory.demand.forecasting.ReviewDecision.*
import static pl.com.dddbyexamples.factory.demand.forecasting.ReviewDecision.*
class ReviewProcessingSpec extends Specification implements ProductDemandTrait {