Skip to content

Commit ce59073

Browse files
authored
Use singleton to show tree table only on HANA (#460)
Replaces #456 by using a singleton, instead of adding a property to books.
1 parent d709a10 commit ce59073

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

app/admin/fiori-service.cds

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,11 @@ annotate AdminService.Books with @(UI : {
3737
Label : '{i18n>Admin}',
3838
Target : '@UI.FieldGroup#Admin'
3939
},
40-
{
41-
// TODO: should work dynamically
42-
@UI.Hidden,
40+
{
4341
$Type : 'UI.ReferenceFacet',
4442
Label : '{i18n>Contents}',
45-
Target : 'contents/@UI.PresentationVariant'
43+
Target : 'contents/@UI.PresentationVariant',
44+
@UI.Hidden: { $edmJson: { $Path: '/Info/hideTreeTable' } }
4645
}
4746
],
4847
FieldGroup #General : {Data : [

srv/admin-service.cds

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ service AdminService @(requires: 'admin') {
3838
entity Upload @odata.singleton {
3939
csv : LargeBinary @Core.MediaType: 'text/csv';
4040
}
41+
42+
@cds.persistence.skip
43+
@readonly entity Info @odata.singleton {
44+
hideTreeTable: Boolean;
45+
}
4146
}
4247

4348
// Deep Search Items

srv/src/main/java/my/bookshop/handlers/AdminServiceHandler.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.function.Supplier;
1717
import java.util.stream.Stream;
1818

19+
import org.springframework.core.env.Environment;
1920
import org.springframework.stereotype.Component;
2021

2122
import com.sap.cds.Result;
@@ -28,6 +29,7 @@
2829
import com.sap.cds.services.ErrorStatuses;
2930
import com.sap.cds.services.EventContext;
3031
import com.sap.cds.services.ServiceException;
32+
import com.sap.cds.services.cds.CdsReadEventContext;
3133
import com.sap.cds.services.cds.CdsUpdateEventContext;
3234
import com.sap.cds.services.cds.CqnService;
3335
import com.sap.cds.services.draft.DraftCancelEventContext;
@@ -46,6 +48,8 @@
4648
import cds.gen.adminservice.BooksAddToOrderContext;
4749
import cds.gen.adminservice.BooksCovers;
4850
import cds.gen.adminservice.Books_;
51+
import cds.gen.adminservice.Info;
52+
import cds.gen.adminservice.Info_;
4953
import cds.gen.adminservice.OrderItems;
5054
import cds.gen.adminservice.OrderItems_;
5155
import cds.gen.adminservice.Orders;
@@ -64,17 +68,16 @@
6468
class AdminServiceHandler implements EventHandler {
6569

6670
private final AdminService.Draft adminService;
67-
6871
private final PersistenceService db;
69-
7072
private final Messages messages;
71-
7273
private final CqnAnalyzer analyzer;
74+
private final Environment env;
7375

74-
AdminServiceHandler(AdminService.Draft adminService, PersistenceService db, Messages messages, CdsModel model) {
76+
AdminServiceHandler(AdminService.Draft adminService, PersistenceService db, Messages messages, CdsModel model, Environment env) {
7577
this.adminService = adminService;
7678
this.db = db;
7779
this.messages = messages;
80+
this.env = env;
7881

7982
// model is a tenant-dependant model proxy
8083
this.analyzer = CqnAnalyzer.create(model);
@@ -301,6 +304,13 @@ public void restoreCoversUpId(CqnStructuredTypeRef ref, BooksCovers cover) {
301304
cover.setUpId((String) analyzer.analyze(ref).rootKeys().get(Books.ID));
302305
}
303306

307+
@On(event = CqnService.EVENT_READ, entity = Info_.CDS_NAME)
308+
public Info readInfo(CdsReadEventContext context) {
309+
Info info = Info.create();
310+
info.setHideTreeTable(!env.matchesProfiles("cloud"));
311+
return info;
312+
}
313+
304314
private Supplier<ServiceException> notFound(String message) {
305315
return () -> new ServiceException(ErrorStatuses.NOT_FOUND, message);
306316
}

0 commit comments

Comments
 (0)