diff --git a/srv/src/main/java/my/bookshop/handlers/hierarchy/HierarchyFallbackHandler.java b/srv/src/main/java/my/bookshop/handlers/hierarchy/HierarchyFallbackHandler.java new file mode 100644 index 00000000..e14a381e --- /dev/null +++ b/srv/src/main/java/my/bookshop/handlers/hierarchy/HierarchyFallbackHandler.java @@ -0,0 +1,39 @@ +package my.bookshop.handlers.hierarchy; + +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +import com.sap.cds.ql.Select; +import com.sap.cds.services.cds.CdsReadEventContext; +import com.sap.cds.services.cds.CqnService; +import com.sap.cds.services.handler.EventHandler; +import com.sap.cds.services.handler.annotations.Before; +import com.sap.cds.services.handler.annotations.ServiceName; +import com.sap.cds.services.persistence.PersistenceService; + +import cds.gen.adminservice.AdminService_; +import cds.gen.adminservice.GenreHierarchy_; + +@Component +@Profile("default") // non-HANA +@ServiceName(AdminService_.CDS_NAME) +/** + * Fallback to plain representation + */ +public class HierarchyFallbackHandler implements EventHandler { + + private final PersistenceService db; + + HierarchyFallbackHandler(PersistenceService db) { + this.db = db; + } + + @Before(event = CqnService.EVENT_READ, entity = GenreHierarchy_.CDS_NAME) + public void readGenreHierarchy(CdsReadEventContext event) { + if (event.getCqn().transformations().size() < 1) { + return; + } + event.setResult(db.run(Select.from(GenreHierarchy_.class))); + } + +} diff --git a/srv/src/main/java/my/bookshop/handlers/HierarchyHandler.java b/srv/src/main/java/my/bookshop/handlers/hierarchy/HierarchyReadOnlyHandler.java similarity index 98% rename from srv/src/main/java/my/bookshop/handlers/HierarchyHandler.java rename to srv/src/main/java/my/bookshop/handlers/hierarchy/HierarchyReadOnlyHandler.java index 4ffe06c3..c0fed47d 100644 --- a/srv/src/main/java/my/bookshop/handlers/HierarchyHandler.java +++ b/srv/src/main/java/my/bookshop/handlers/hierarchy/HierarchyReadOnlyHandler.java @@ -1,4 +1,6 @@ -package my.bookshop.handlers; +package my.bookshop.handlers.hierarchy; + +import static cds.gen.catalogservice.CatalogService_.GENRE_HIERARCHY; import java.util.ArrayDeque; import java.util.Comparator; @@ -21,12 +23,12 @@ import com.sap.cds.ql.cqn.CqnSelect; import com.sap.cds.ql.cqn.CqnValue; import com.sap.cds.ql.cqn.Modifier; -import com.sap.cds.ql.cqn.transformation.CqnTopLevelsTransformation; import com.sap.cds.ql.cqn.transformation.CqnAncestorsTransformation; import com.sap.cds.ql.cqn.transformation.CqnDescendantsTransformation; import com.sap.cds.ql.cqn.transformation.CqnFilterTransformation; -import com.sap.cds.ql.cqn.transformation.CqnSearchTransformation; import com.sap.cds.ql.cqn.transformation.CqnOrderByTransformation; +import com.sap.cds.ql.cqn.transformation.CqnSearchTransformation; +import com.sap.cds.ql.cqn.transformation.CqnTopLevelsTransformation; import com.sap.cds.ql.cqn.transformation.CqnTransformation; import com.sap.cds.services.cds.CdsReadEventContext; import com.sap.cds.services.cds.CqnService; @@ -39,8 +41,6 @@ import cds.gen.catalogservice.GenreHierarchy; import cds.gen.catalogservice.GenreHierarchy_; -import static cds.gen.catalogservice.CatalogService_.GENRE_HIERARCHY; - @Component @Profile("default") // non-HANA @ServiceName(CatalogService_.CDS_NAME) @@ -54,11 +54,11 @@ * The handler is neither functionally complete nor correct for all requests. It * is not intended as a blue-print for custom code. */ -public class HierarchyHandler implements EventHandler { +public class HierarchyReadOnlyHandler implements EventHandler { private final PersistenceService db; - HierarchyHandler(PersistenceService db) { + HierarchyReadOnlyHandler(PersistenceService db) { this.db = db; } diff --git a/srv/src/test/java/my/bookshop/handlers/HierarchyHandlerSorterTest.java b/srv/src/test/java/my/bookshop/handlers/hierarchy/HierarchyHandlerSorterTest.java similarity index 94% rename from srv/src/test/java/my/bookshop/handlers/HierarchyHandlerSorterTest.java rename to srv/src/test/java/my/bookshop/handlers/hierarchy/HierarchyHandlerSorterTest.java index 57ea139d..091ca7bd 100644 --- a/srv/src/test/java/my/bookshop/handlers/HierarchyHandlerSorterTest.java +++ b/srv/src/test/java/my/bookshop/handlers/hierarchy/HierarchyHandlerSorterTest.java @@ -1,11 +1,11 @@ -package my.bookshop.handlers; +package my.bookshop.handlers.hierarchy; import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.List; import org.junit.jupiter.api.Test; import cds.gen.catalogservice.GenreHierarchy; -import my.bookshop.handlers.HierarchyHandler.Sorter; +import my.bookshop.handlers.hierarchy.HierarchyReadOnlyHandler.Sorter; public class HierarchyHandlerSorterTest {