|
42 | 42 | import static cds.gen.adminservice.AdminService_.GENRE_HIERARCHY; |
43 | 43 |
|
44 | 44 | @Component |
45 | | -@Profile("default") |
| 45 | +@Profile("default") // non-HANA |
46 | 46 | @ServiceName(AdminService_.CDS_NAME) |
| 47 | +/** |
| 48 | + * On HANA, requests for GenreHierarchy are handled generically. |
| 49 | + * |
| 50 | + * This handler is only in effect when running with the `default` profile on |
| 51 | + * H2. It is a stand-in for non-HANA until the CAP Java runtime can also handle |
| 52 | + * requests for hierarchies on non-HANA databases. |
| 53 | + * |
| 54 | + * The handler is neither functionally complete nor correct for all requests. It |
| 55 | + * is not intended as a blue-print for custom code. |
| 56 | + */ |
47 | 57 | public class HierarchyHandler implements EventHandler { |
48 | 58 |
|
49 | 59 | private final PersistenceService db; |
@@ -202,7 +212,7 @@ private List<GenreHierarchy> topLevels(CqnTopLevelsTransformation topLevels, Cqn |
202 | 212 |
|
203 | 213 | private List<GenreHierarchy> topLevelsLimit(CqnTopLevelsTransformation topLevels, CqnPredicate filter) { |
204 | 214 | long limit = topLevels.levels(); |
205 | | - Map <Integer, GenreHierarchy> lookup = new HashMap<>(); |
| 215 | + Map<Integer, GenreHierarchy> lookup = new HashMap<>(); |
206 | 216 | Map<Object, Long> expandLevels = topLevels.expandLevels(); |
207 | 217 |
|
208 | 218 | CqnSelect getRoots = Select.from(GENRE_HIERARCHY).where(gh -> gh.parent_ID().isNull().and(filter)); |
@@ -230,10 +240,9 @@ private List<GenreHierarchy> topLevelsLimit(CqnTopLevelsTransformation topLevels |
230 | 240 |
|
231 | 241 | if (!expandLevels.isEmpty()) { |
232 | 242 | List<Integer> expandedIds = expandLevels.keySet().stream().map(key -> (Integer) key).toList(); |
233 | | - CqnSelect expandedCQN = Select.from(AdminService_.GENRE_HIERARCHY).where(gh -> |
234 | | - CQL.and(filter, |
| 243 | + CqnSelect expandedCQN = Select.from(AdminService_.GENRE_HIERARCHY).where(gh -> CQL.and(filter, |
235 | 244 | CQL.or(gh.ID().in(expandedIds), gh.parent_ID().in(expandedIds)))); |
236 | | - |
| 245 | + |
237 | 246 | List<GenreHierarchy> expanded = db.run(expandedCQN).listOf(GenreHierarchy.class); |
238 | 247 | expanded.forEach(gh -> { |
239 | 248 | if (!lookup.keySet().contains(gh.getId())) { |
|
0 commit comments