Skip to content

Commit 47fbbbd

Browse files
committed
use pages to show big books
1 parent 0310c17 commit 47fbbbd

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,17 @@
1111

1212
import org.springframework.stereotype.Component;
1313

14+
import com.sap.cds.CdsData;
1415
import com.sap.cds.Result;
1516
import com.sap.cds.Struct;
17+
import com.sap.cds.ql.CQL;
1618
import com.sap.cds.ql.Insert;
1719
import com.sap.cds.ql.Select;
1820
import com.sap.cds.ql.Update;
1921
import com.sap.cds.ql.cqn.CqnAnalyzer;
2022
import com.sap.cds.ql.cqn.CqnSelect;
23+
import com.sap.cds.ql.cqn.CqnSelectListItem;
24+
import com.sap.cds.ql.cqn.Modifier;
2125
import com.sap.cds.reflect.CdsModel;
2226
import com.sap.cds.services.ErrorStatuses;
2327
import com.sap.cds.services.ServiceException;
@@ -74,6 +78,18 @@ class CatalogServiceHandler implements EventHandler {
7478
this.analyzer = CqnAnalyzer.create(model);
7579
}
7680

81+
@Before(entity = Books_.CDS_NAME)
82+
public void beforeReadBooks(CdsReadEventContext context) {
83+
CqnSelect copy = CQL.copy(context.getCqn(), new Modifier() {
84+
@Override
85+
public List<CqnSelectListItem> items(List<CqnSelectListItem> items) {
86+
items.add(CQL.get("details"));
87+
return items;
88+
}
89+
});
90+
context.setCqn(copy);
91+
}
92+
7793
/**
7894
* Invokes some validations before creating a review.
7995
*
@@ -132,6 +148,16 @@ public void discountBooks(Stream<Books> books) {
132148
});
133149
}
134150

151+
@After(event = CqnService.EVENT_READ)
152+
public void bigBooks(Stream<Books> books) {
153+
books.filter(b -> b.getDetails() != null).forEach(b -> {
154+
int pages = (int) b.getDetails().get("pages");
155+
if (pages > 400) {
156+
b.setTitle("%s -- Big Book".formatted(b.getTitle()));
157+
}
158+
});
159+
}
160+
135161
@After
136162
public void setIsReviewable(CdsReadEventContext context, List<Books> books) {
137163
String user = context.getUserInfo().getName();
@@ -187,7 +213,8 @@ private void discountBooksWithMoreThan111Stock(Books b, boolean premium) {
187213

188214
private void loadStockIfNotSet(Books b) {
189215
if (b.getId() != null && b.getStock() == null) {
190-
b.setStock(db.run(Select.from(BOOKS).byId(b.getId()).columns(Books_::stock)).single(Books.class).getStock());
216+
b.setStock(
217+
db.run(Select.from(BOOKS).byId(b.getId()).columns(Books_::stock)).single(Books.class).getStock());
191218
}
192219
}
193220

0 commit comments

Comments
 (0)