diff --git a/adapter-commons/pom.xml b/adapter-commons/pom.xml
index 22703c0..758c31b 100644
--- a/adapter-commons/pom.xml
+++ b/adapter-commons/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.5.8.RELEASE
+ 2.0.0.RELEASE
diff --git a/adapter-commons/src/main/java/pl/com/bottega/tools/CommandRepository.java b/adapter-commons/src/main/java/pl/com/bottega/tools/CommandRepository.java
index 507455b..d840d31 100644
--- a/adapter-commons/src/main/java/pl/com/bottega/tools/CommandRepository.java
+++ b/adapter-commons/src/main/java/pl/com/bottega/tools/CommandRepository.java
@@ -9,7 +9,7 @@ public interface CommandRepository extends CrudRepos
@Override
@RestResource(exported = false)
- void delete(ID id);
+ void deleteById(ID id);
@Override
@RestResource(exported = false)
@@ -17,7 +17,7 @@ public interface CommandRepository extends CrudRepos
@Override
@RestResource(exported = false)
- void delete(Iterable extends T> entities);
+ void deleteAll(Iterable extends T> entities);
@Override
@RestResource(exported = false)
diff --git a/adapter-commons/src/main/java/pl/com/bottega/tools/ProjectionRepository.java b/adapter-commons/src/main/java/pl/com/bottega/tools/ProjectionRepository.java
index 58528c4..37b1761 100644
--- a/adapter-commons/src/main/java/pl/com/bottega/tools/ProjectionRepository.java
+++ b/adapter-commons/src/main/java/pl/com/bottega/tools/ProjectionRepository.java
@@ -13,11 +13,11 @@ public interface ProjectionRepository extends CrudRe
@Override
@RestResource(exported = false)
- Iterable save(Iterable entities);
+ Iterable saveAll(Iterable entities);
@Override
@RestResource(exported = false)
- void delete(ID id);
+ void deleteById(ID id);
@Override
@RestResource(exported = false)
@@ -25,7 +25,7 @@ public interface ProjectionRepository extends CrudRe
@Override
@RestResource(exported = false)
- void delete(Iterable extends T> entities);
+ void deleteAll(Iterable extends T> entities);
@Override
@RestResource(exported = false)
diff --git a/app-monolith/pom.xml b/app-monolith/pom.xml
index 4d8a205..86d7d8b 100644
--- a/app-monolith/pom.xml
+++ b/app-monolith/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.5.8.RELEASE
+ 2.0.0.RELEASE
diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/DemandEventsPropagation.java b/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/DemandEventsPropagation.java
index bfa6228..2242c2d 100644
--- a/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/DemandEventsPropagation.java
+++ b/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/DemandEventsPropagation.java
@@ -34,7 +34,7 @@ class DemandEventsPropagation implements DemandEvents {
@Override
public void emit(ReviewRequired event) {
Instant timestamp = Instant.now(clock);
- demandReviews.save(event.getReviews().stream()
+ demandReviews.saveAll(event.getReviews().stream()
.map(r -> new RequiredReviewEntity(timestamp, r))
.collect(Collectors.toList())
);
diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/product/management/ProductDescriptionEventsPropagation.java b/app-monolith/src/main/java/pl/com/bottega/factory/product/management/ProductDescriptionEventsPropagation.java
index 730c794..967d60a 100644
--- a/app-monolith/src/main/java/pl/com/bottega/factory/product/management/ProductDescriptionEventsPropagation.java
+++ b/app-monolith/src/main/java/pl/com/bottega/factory/product/management/ProductDescriptionEventsPropagation.java
@@ -27,6 +27,6 @@ public class ProductDescriptionEventsPropagation {
@HandleAfterDelete
public void handleDelete(ProductDescriptionEntity entity) {
- stockForecasts.delete(entity.getRefNo());
+ stockForecasts.deleteById(entity.getRefNo());
}
}
diff --git a/app-monolith/src/main/resources/application.properties b/app-monolith/src/main/resources/application.properties
index 6014b5e..baadde9 100644
--- a/app-monolith/src/main/resources/application.properties
+++ b/app-monolith/src/main/resources/application.properties
@@ -5,7 +5,6 @@ spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.driver-class-name=org.postgresql.Driver
-liquibase.change-log=classpath:/schema/db.changelog.xml
+spring.liquibase.change-log=classpath:/schema/db.changelog.xml
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
-logging.level.=error
diff --git a/demand-forecasting-adapters/pom.xml b/demand-forecasting-adapters/pom.xml
index 0868984..90467cb 100644
--- a/demand-forecasting-adapters/pom.xml
+++ b/demand-forecasting-adapters/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.5.8.RELEASE
+ 2.0.0.RELEASE
diff --git a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/delivery/planning/DeliveryAutoPlannerORMRepository.java b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/delivery/planning/DeliveryAutoPlannerORMRepository.java
index c36f568..7b12184 100644
--- a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/delivery/planning/DeliveryAutoPlannerORMRepository.java
+++ b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/delivery/planning/DeliveryAutoPlannerORMRepository.java
@@ -17,7 +17,7 @@ public class DeliveryAutoPlannerORMRepository {
public DeliveryAutoPlanner get(String refNo) {
return new DeliveryAutoPlanner(refNo,
- ofNullable(dao.findOne(refNo))
+ dao.findById(refNo)
.map(DeliveryPlannerDefinitionEntity::getDefinition)
.map(x -> x.map(DeliveriesSuggestion::timesAndFractions))
.orElse(Collections.emptyMap()));
diff --git a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/ProductDemandORMRepository.java b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/ProductDemandORMRepository.java
index c4350f1..055a482 100644
--- a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/ProductDemandORMRepository.java
+++ b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/ProductDemandORMRepository.java
@@ -1,4 +1,4 @@
-package pl.com.bottega.factory.demand.forecasting;
+ package pl.com.bottega.factory.demand.forecasting;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
@@ -59,7 +59,7 @@ class ProductDemandORMRepository implements ProductDemandRepository {
@Override
public void save(ProductDemand model) {
- ProductDemandEntity root = rootDao.findOne(TechnicalId.get(model.id));
+ ProductDemandEntity root = rootDao.getOne(TechnicalId.get(model.id));
if (model.updates.size() > 0) {
em.lock(root, LockModeType.OPTIMISTIC_FORCE_INCREMENT);
}
diff --git a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandDao.java b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandDao.java
index 85d4fed..d0caae5 100644
--- a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandDao.java
+++ b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandDao.java
@@ -9,6 +9,7 @@ import pl.com.bottega.tools.ProjectionRepository;
import java.time.LocalDate;
import java.util.List;
+import java.util.Optional;
@Repository
@RepositoryRestResource(path = "demand-forecasts",
@@ -19,5 +20,5 @@ public interface CurrentDemandDao extends ProjectionRepository findByRefNoAndDateGreaterThanEqual(@Param("refNo") String refNo, @Param("date") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date);
@RestResource(exported = false)
- void deleteByRefNoAndDate(String refNo, LocalDate date);
+ Optional findByRefNoAndDate(String refNo, LocalDate date);
}
diff --git a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandEntity.java b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandEntity.java
index fc7d693..f74e5c2 100644
--- a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandEntity.java
+++ b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandEntity.java
@@ -29,4 +29,9 @@ public class CurrentDemandEntity implements Serializable {
this.level = level;
this.schema = schema;
}
+
+ void changeLevelTo(long level, Demand.Schema schema) {
+ this.level = level;
+ this.schema = schema;
+ }
}
diff --git a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandProjection.java b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandProjection.java
index ea6599a..337b94b 100644
--- a/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandProjection.java
+++ b/demand-forecasting-adapters/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandProjection.java
@@ -2,6 +2,7 @@ package pl.com.bottega.factory.demand.forecasting.projection;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
+import pl.com.bottega.factory.demand.forecasting.DailyId;
import pl.com.bottega.factory.demand.forecasting.DemandedLevelsChanged;
@Component
@@ -12,16 +13,21 @@ public class CurrentDemandProjection {
public void applyDemandedLevelsChanged(DemandedLevelsChanged event) {
event.getResults().forEach((daily, change) -> {
- demandDao.deleteByRefNoAndDate(
- daily.getRefNo(),
- daily.getDate());
- demandDao.save(new CurrentDemandEntity(
- daily.getRefNo(),
- daily.getDate(),
- change.getCurrent().getLevel(),
- change.getCurrent().getSchema())
- );
+ createOrUpdateDemand(daily, change);
}
);
}
+
+ private void createOrUpdateDemand(DailyId daily, DemandedLevelsChanged.Change change) {
+ CurrentDemandEntity currentDemandEntity = demandDao.findByRefNoAndDate(
+ daily.getRefNo(),
+ daily.getDate())
+ .orElseGet(() -> new CurrentDemandEntity(
+ daily.getRefNo(),
+ daily.getDate(),
+ change.getCurrent().getLevel(),
+ change.getCurrent().getSchema()));
+ currentDemandEntity.changeLevelTo(change.getCurrent().getLevel(), change.getCurrent().getSchema());
+ demandDao.save(currentDemandEntity);
+ }
}
diff --git a/product-management-adapters/pom.xml b/product-management-adapters/pom.xml
index b13d877..d7d7ab8 100644
--- a/product-management-adapters/pom.xml
+++ b/product-management-adapters/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.5.8.RELEASE
+ 2.0.0.RELEASE
diff --git a/production-planning-adapters/pom.xml b/production-planning-adapters/pom.xml
index 173b39c..a0914f9 100644
--- a/production-planning-adapters/pom.xml
+++ b/production-planning-adapters/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.5.8.RELEASE
+ 2.0.0.RELEASE
diff --git a/shortages-prediction-adapters/pom.xml b/shortages-prediction-adapters/pom.xml
index f3183c6..a33f540 100644
--- a/shortages-prediction-adapters/pom.xml
+++ b/shortages-prediction-adapters/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 1.5.8.RELEASE
+ 2.0.0.RELEASE
diff --git a/shortages-prediction-adapters/src/main/java/pl/com/bottega/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepository.java b/shortages-prediction-adapters/src/main/java/pl/com/bottega/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepository.java
index 47b7748..07bee1d 100644
--- a/shortages-prediction-adapters/src/main/java/pl/com/bottega/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepository.java
+++ b/shortages-prediction-adapters/src/main/java/pl/com/bottega/factory/shortages/prediction/monitoring/ShortagePredictionProcessORMRepository.java
@@ -10,6 +10,7 @@ import pl.com.bottega.factory.shortages.prediction.monitoring.persistence.Shorta
import pl.com.bottega.tools.TechnicalId;
import java.util.Optional;
+import java.util.function.Function;
@Component
@AllArgsConstructor
@@ -39,15 +40,16 @@ class ShortagePredictionProcessORMRepository implements ShortagePredictionProces
private void save(NewShortage event) {
RefNoId refNo = event.getRefNo();
+ Function> findById = dao::findById;
ShortagesEntity entity = TechnicalId.findOrDefault(
- refNo, dao::findOne,
+ refNo, findById.andThen(Optional::get),
() -> dao.save(new ShortagesEntity(refNo.getRefNo())));
entity.setShortage(event.getShortage());
events.emit(event);
}
private void delete(ShortageSolved event) {
- dao.delete(TechnicalId.get(event.getRefNo()));
+ dao.deleteById(TechnicalId.get(event.getRefNo()));
events.emit(event);
}