From eb25e80f131146c7d57abcf4dfcdaf077ac7c749 Mon Sep 17 00:00:00 2001 From: Jakub Pilimon Date: Mon, 19 Mar 2018 08:31:57 +0100 Subject: [PATCH] bumped to spring boot 2 --- adapter-commons/pom.xml | 2 +- .../com/bottega/tools/CommandRepository.java | 4 ++-- .../bottega/tools/ProjectionRepository.java | 6 ++--- app-monolith/pom.xml | 2 +- .../forecasting/DemandEventsPropagation.java | 2 +- .../ProductDescriptionEventsPropagation.java | 2 +- .../src/main/resources/application.properties | 3 +-- demand-forecasting-adapters/pom.xml | 2 +- .../DeliveryAutoPlannerORMRepository.java | 2 +- .../ProductDemandORMRepository.java | 4 ++-- .../projection/CurrentDemandDao.java | 3 ++- .../projection/CurrentDemandEntity.java | 5 ++++ .../projection/CurrentDemandProjection.java | 24 ++++++++++++------- product-management-adapters/pom.xml | 2 +- production-planning-adapters/pom.xml | 2 +- shortages-prediction-adapters/pom.xml | 2 +- ...hortagePredictionProcessORMRepository.java | 6 +++-- 17 files changed, 43 insertions(+), 30 deletions(-) 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 entities); + void deleteAll(Iterable 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 entities); + void deleteAll(Iterable 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); }