Committed by
Gerrit Code Review
Fixing driver matrix to consider inherited behaviours.
Change-Id: I20a6ef53975d0b9e78bdc6308e0165a181ff7046
Showing
1 changed file
with
15 additions
and
6 deletions
... | @@ -124,20 +124,29 @@ public class DriverViewMessageHandler extends UiMessageHandler { | ... | @@ -124,20 +124,29 @@ public class DriverViewMessageHandler extends UiMessageHandler { |
124 | drivers.forEach(d -> array.add(d.name())); | 124 | drivers.forEach(d -> array.add(d.name())); |
125 | } | 125 | } |
126 | 126 | ||
127 | + private Set<Driver> findLineage(Driver driver) { | ||
128 | + ImmutableSet.Builder<Driver> lineage = ImmutableSet.builder(); | ||
129 | + lineage.add(driver); | ||
130 | + List<Driver> parents = driver.parents(); | ||
131 | + if (parents != null) { | ||
132 | + parents.forEach(p -> lineage.addAll(findLineage(p))); | ||
133 | + } | ||
134 | + return lineage.build(); | ||
135 | + } | ||
136 | + | ||
127 | private void addMatrixCells(ObjectNode root, List<Driver> drivers) { | 137 | private void addMatrixCells(ObjectNode root, List<Driver> drivers) { |
128 | ObjectNode matrix = objectNode(); | 138 | ObjectNode matrix = objectNode(); |
129 | root.set(MATRIX, matrix); | 139 | root.set(MATRIX, matrix); |
130 | 140 | ||
131 | - drivers.forEach(d -> { | 141 | + drivers.forEach(driver -> { |
132 | ObjectNode dnode = objectNode(); | 142 | ObjectNode dnode = objectNode(); |
133 | - matrix.set(d.name(), dnode); | 143 | + matrix.set(driver.name(), dnode); |
134 | - | 144 | + Set<Driver> lineage = findLineage(driver); |
135 | - d.behaviours().forEach(b -> { | 145 | + lineage.forEach(d -> d.behaviours().forEach(b -> { |
136 | // TODO: can put a payload here, rather than a '1' marker | 146 | // TODO: can put a payload here, rather than a '1' marker |
137 | dnode.put(b.getSimpleName(), ONE); | 147 | dnode.put(b.getSimpleName(), ONE); |
138 | - }); | 148 | + })); |
139 | }); | 149 | }); |
140 | } | 150 | } |
141 | } | 151 | } |
142 | - | ||
143 | } | 152 | } | ... | ... |
-
Please register or login to post a comment