From 33b27bfc6c4dc668aeb1ff83c5d8b55195c99d94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Michaluk?= Date: Thu, 7 Dec 2017 23:15:08 +0100 Subject: [PATCH] rest ressources tuning --- app-monolith/pom.xml | 14 +++++--- .../DeliveryPlannerDefinitionDao.java | 4 +++ .../projection/DeliveryForecastDao.java | 13 +++++-- .../forecasting/persistence/DemandDao.java | 2 ++ .../persistence/ProductDemandDao.java | 2 ++ .../projection/CurrentDemandDao.java | 11 ++++-- .../management/ProductDescriptionDao.java | 5 +++ .../projection/ProductionOutputDao.java | 8 +++-- .../prediction/monitoring/ShortagesDao.java | 8 +++-- .../pl/com/bottega/tools/ProjectionDao.java | 35 +++++++++++++++++++ 10 files changed, 88 insertions(+), 14 deletions(-) create mode 100644 app-monolith/src/main/java/pl/com/bottega/tools/ProjectionDao.java diff --git a/app-monolith/pom.xml b/app-monolith/pom.xml index f163dea..0e29854 100644 --- a/app-monolith/pom.xml +++ b/app-monolith/pom.xml @@ -33,11 +33,11 @@ org.projectlombok - lombok - 1.16.18 - provided - - + lombok + 1.16.18 + provided + + org.springframework.boot spring-boot-starter-data-jpa @@ -49,6 +49,10 @@ org.springframework.boot spring-boot-starter-data-rest + + org.springframework.data + spring-data-rest-hal-browser + com.fasterxml.jackson.datatype jackson-datatype-jsr310 diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/delivery/planning/definition/DeliveryPlannerDefinitionDao.java b/app-monolith/src/main/java/pl/com/bottega/factory/delivery/planning/definition/DeliveryPlannerDefinitionDao.java index a2676fd..7a86336 100644 --- a/app-monolith/src/main/java/pl/com/bottega/factory/delivery/planning/definition/DeliveryPlannerDefinitionDao.java +++ b/app-monolith/src/main/java/pl/com/bottega/factory/delivery/planning/definition/DeliveryPlannerDefinitionDao.java @@ -1,8 +1,12 @@ package pl.com.bottega.factory.delivery.planning.definition; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.stereotype.Repository; @Repository +@RepositoryRestResource( + path = "delivery/planning/definitions", + collectionResourceRel = "definitions for auto delivery planning") public interface DeliveryPlannerDefinitionDao extends JpaRepository { } diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/delivery/planning/projection/DeliveryForecastDao.java b/app-monolith/src/main/java/pl/com/bottega/factory/delivery/planning/projection/DeliveryForecastDao.java index 4ab119b..3b85159 100644 --- a/app-monolith/src/main/java/pl/com/bottega/factory/delivery/planning/projection/DeliveryForecastDao.java +++ b/app-monolith/src/main/java/pl/com/bottega/factory/delivery/planning/projection/DeliveryForecastDao.java @@ -1,16 +1,25 @@ package pl.com.bottega.factory.delivery.planning.projection; -import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; +import org.springframework.data.rest.core.annotation.RestResource; import org.springframework.stereotype.Repository; +import pl.com.bottega.tools.ProjectionDao; import java.time.Instant; import java.time.LocalDate; import java.util.List; @Repository -public interface DeliveryForecastDao extends JpaRepository { +@RepositoryRestResource( + path = "delivery/planning/forecasts", + collectionResourceRel = "forecast of deliveries") +public interface DeliveryForecastDao extends ProjectionDao { List findByRefNoAndDateGreaterThanEqual(String refNo, Instant instant); + + @RestResource(exported = false) void deleteByRefNoAndDate(String refNo, LocalDate date); + + @RestResource(exported = false) void deleteByRefNo(String refNo); } diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/persistence/DemandDao.java b/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/persistence/DemandDao.java index 9c34bff..39464e7 100644 --- a/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/persistence/DemandDao.java +++ b/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/persistence/DemandDao.java @@ -1,6 +1,7 @@ package pl.com.bottega.factory.demand.forecasting.persistence; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.rest.core.annotation.RestResource; import org.springframework.stereotype.Repository; import pl.com.bottega.factory.demand.forecasting.DemandEntity; @@ -8,6 +9,7 @@ import java.time.LocalDate; import java.util.List; @Repository +@RestResource(exported = false) public interface DemandDao extends JpaRepository { List findByProductRefNoAndDateGreaterThanEqual(String refNo, LocalDate now); diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/persistence/ProductDemandDao.java b/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/persistence/ProductDemandDao.java index 95c2d65..c3c3e8c 100644 --- a/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/persistence/ProductDemandDao.java +++ b/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/persistence/ProductDemandDao.java @@ -1,10 +1,12 @@ package pl.com.bottega.factory.demand.forecasting.persistence; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.rest.core.annotation.RestResource; import org.springframework.stereotype.Repository; import pl.com.bottega.factory.demand.forecasting.ProductDemandEntity; @Repository +@RestResource(exported = false) public interface ProductDemandDao extends JpaRepository { ProductDemandEntity findById(Long id); diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandDao.java b/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandDao.java index 7e6314c..0805091 100644 --- a/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandDao.java +++ b/app-monolith/src/main/java/pl/com/bottega/factory/demand/forecasting/projection/CurrentDemandDao.java @@ -1,16 +1,21 @@ package pl.com.bottega.factory.demand.forecasting.projection; -import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; +import org.springframework.data.rest.core.annotation.RestResource; import org.springframework.stereotype.Repository; +import pl.com.bottega.tools.ProjectionDao; -import java.time.Instant; import java.time.LocalDate; import java.util.List; @Repository -public interface CurrentDemandDao extends JpaRepository { +@RepositoryRestResource( + path = "demand/forecasts", + collectionResourceRel = "forecast of customers demands") +public interface CurrentDemandDao extends ProjectionDao { List findByRefNoAndDateGreaterThanEqual(String refNo, LocalDate date); + @RestResource(exported = false) void deleteByRefNoAndDate(String refNo, LocalDate date); } diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/product/management/ProductDescriptionDao.java b/app-monolith/src/main/java/pl/com/bottega/factory/product/management/ProductDescriptionDao.java index bf146eb..6acb154 100644 --- a/app-monolith/src/main/java/pl/com/bottega/factory/product/management/ProductDescriptionDao.java +++ b/app-monolith/src/main/java/pl/com/bottega/factory/product/management/ProductDescriptionDao.java @@ -1,8 +1,13 @@ package pl.com.bottega.factory.product.management; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.stereotype.Repository; @Repository + +@RepositoryRestResource( + path = "product/management/descriptions", + collectionResourceRel = "descriptions of products") public interface ProductDescriptionDao extends JpaRepository { } diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/production/planning/projection/ProductionOutputDao.java b/app-monolith/src/main/java/pl/com/bottega/factory/production/planning/projection/ProductionOutputDao.java index c06810a..f214884 100644 --- a/app-monolith/src/main/java/pl/com/bottega/factory/production/planning/projection/ProductionOutputDao.java +++ b/app-monolith/src/main/java/pl/com/bottega/factory/production/planning/projection/ProductionOutputDao.java @@ -1,13 +1,17 @@ package pl.com.bottega.factory.production.planning.projection; -import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.stereotype.Repository; +import pl.com.bottega.tools.ProjectionDao; import java.time.Instant; import java.util.List; @Repository -public interface ProductionOutputDao extends JpaRepository { +@RepositoryRestResource( + path = "production/planning/outputs", + collectionResourceRel = "forecast of production outputs") +public interface ProductionOutputDao extends ProjectionDao { List findByRefNoAndStartGreaterThanEqual(String refNo, Instant instant); } diff --git a/app-monolith/src/main/java/pl/com/bottega/factory/shortages/prediction/monitoring/ShortagesDao.java b/app-monolith/src/main/java/pl/com/bottega/factory/shortages/prediction/monitoring/ShortagesDao.java index f8457f4..9a6766d 100644 --- a/app-monolith/src/main/java/pl/com/bottega/factory/shortages/prediction/monitoring/ShortagesDao.java +++ b/app-monolith/src/main/java/pl/com/bottega/factory/shortages/prediction/monitoring/ShortagesDao.java @@ -1,8 +1,12 @@ package pl.com.bottega.factory.shortages.prediction.monitoring; -import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.rest.core.annotation.RepositoryRestResource; import org.springframework.stereotype.Repository; +import pl.com.bottega.tools.ProjectionDao; @Repository -public interface ShortagesDao extends JpaRepository { +@RepositoryRestResource( + path = "shortages/prediction/current", + collectionResourceRel = "predicted shortages") +public interface ShortagesDao extends ProjectionDao { } diff --git a/app-monolith/src/main/java/pl/com/bottega/tools/ProjectionDao.java b/app-monolith/src/main/java/pl/com/bottega/tools/ProjectionDao.java new file mode 100644 index 0000000..bd9a8ae --- /dev/null +++ b/app-monolith/src/main/java/pl/com/bottega/tools/ProjectionDao.java @@ -0,0 +1,35 @@ +package pl.com.bottega.tools; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.rest.core.annotation.RestResource; +import org.springframework.stereotype.Repository; + +import java.io.Serializable; + +@Repository +public interface ProjectionDao extends CrudRepository { + + @Override + @RestResource(exported = false) + S save(S entity); + + @Override + @RestResource(exported = false) + Iterable save(Iterable entities); + + @Override + @RestResource(exported = false) + void delete(ID id); + + @Override + @RestResource(exported = false) + void delete(T entity); + + @Override + @RestResource(exported = false) + void delete(Iterable entities); + + @Override + @RestResource(exported = false) + void deleteAll(); +}