Due to a ransomware attack, the wiki was reverted to a July 2022 version. . We apologize for the lack of a more recent valid backup.
...
The sample table uses fake data for demonstration purposes. A more realistic implementation would use one or more services to obtain the required data. The device table, for example, has an implementation something like this:
Code Block | ||||
---|---|---|---|---|
| ||||
@Override protected void populateTable(TableModel tm, ObjectNode payload) { DeviceService ds = get(DeviceService.class); MastershipService ms = get(MastershipService.class); for (Device dev : ds.getDevices()) { populateRow(tm.addRow(), dev, ds, ms); } } private void populateRow(TableModel.Row row, Device dev, DeviceService ds, MastershipService ms) { DeviceId id = dev.id(); String protocol = dev.annotations().value(PROTOCOL); row.cell(ID, id) .cell(MFR, dev.manufacturer()) .cell(HW, dev.hwVersion()) .cell(SW, dev.swVersion()) .cell(PROTOCOL, protocol != null ? protocol : "") .cell(NUM_PORTS, ds.getPorts(id).size()) .cell(MASTER_ID, ms.getMasterFor(id)); } } |
...
(3) define SampleDetailRequestHandler class to handle "sampleDetailRequest" events from the client. Note that this class extends the base RequestHandler class:
Code Block | ||||
---|---|---|---|---|
| ||||
private static final String SAMPLE_DETAIL_REQ = "sampleDetailsRequest"; ... private final class SampleDetailRequestHandler extends RequestHandler { private SampleDetailRequestHandler() { super(SAMPLE_DETAIL_REQ); } ... } |
...
(3a) implement process(...) to return detail information about the "selected" row:
Code Block | ||||
---|---|---|---|---|
| ||||
private static final String SAMPLE_DETAIL_RESP = "sampleDetailsResponse"; private static final String DETAILS = "details"; ... private static final String COMMENT = "comment"; private static final String RESULT = "result"; ... @Override public void process(long sid, ObjectNode payload) { String id = string(payload, ID, "(none)"); // SomeService ss = get(SomeService.class); // Item item = ss.getItemDetails(id) // fake data for demonstration purposes... Item item = getItem(id); ObjectNode rootNode = MAPPER.createObjectNode(); ObjectNode data = MAPPER.createObjectNode(); rootNode.set(DETAILS, data); if (item == null) { rootNode.put(RESULT, "Item with id '" + id + "' not found"); log.warn("attempted to get item detail for id '{}'", id); } else { rootNode.put(RESULT, "Found item with id '" + id + "'"); data.put(ID, item.id()); data.put(LABEL, item.label()); data.put(CODE, item.code()); data.put(COMMENT, "Some arbitrary comment"); } sendMessage(SAMPLE_DETAIL_RESP, 0, rootNode); } |
...