Committed by
Gerrit Code Review
resources cmd: option to show only available resource
Change-Id: I75fd80c2d3258b76ca1b99581b0b5ada8e203f11
Showing
1 changed file
with
22 additions
and
8 deletions
... | @@ -56,6 +56,11 @@ import com.google.common.collect.TreeRangeSet; | ... | @@ -56,6 +56,11 @@ import com.google.common.collect.TreeRangeSet; |
56 | description = "Lists registered resources") | 56 | description = "Lists registered resources") |
57 | public class ResourcesCommand extends AbstractShellCommand { | 57 | public class ResourcesCommand extends AbstractShellCommand { |
58 | 58 | ||
59 | + @Option(name = "-a", aliases = "--available", | ||
60 | + description = "Output available resources only", | ||
61 | + required = false, multiValued = false) | ||
62 | + boolean availablesOnly = false; | ||
63 | + | ||
59 | @Option(name = "-s", aliases = "--sort", description = "Sort output", | 64 | @Option(name = "-s", aliases = "--sort", description = "Sort output", |
60 | required = false, multiValued = false) | 65 | required = false, multiValued = false) |
61 | boolean sort = false; | 66 | boolean sort = false; |
... | @@ -102,7 +107,6 @@ public class ResourcesCommand extends AbstractShellCommand { | ... | @@ -102,7 +107,6 @@ public class ResourcesCommand extends AbstractShellCommand { |
102 | } | 107 | } |
103 | 108 | ||
104 | private void printResource(Resource resource, int level) { | 109 | private void printResource(Resource resource, int level) { |
105 | - // TODO add an option to show only available resource | ||
106 | // workaround to preserve the original behavior of ResourceService#getRegisteredResources | 110 | // workaround to preserve the original behavior of ResourceService#getRegisteredResources |
107 | Set<Resource> children; | 111 | Set<Resource> children; |
108 | if (resource instanceof DiscreteResource) { | 112 | if (resource instanceof DiscreteResource) { |
... | @@ -118,21 +122,27 @@ public class ResourcesCommand extends AbstractShellCommand { | ... | @@ -118,21 +122,27 @@ public class ResourcesCommand extends AbstractShellCommand { |
118 | if (resource instanceof ContinuousResource) { | 122 | if (resource instanceof ContinuousResource) { |
119 | print("%s%s: %f", Strings.repeat(" ", level), | 123 | print("%s%s: %f", Strings.repeat(" ", level), |
120 | resourceName, | 124 | resourceName, |
121 | - // Note: last() does not return, what we've registered | ||
122 | - // following does not work | ||
123 | - //((Class<?>) resource.last()).getSimpleName(), | ||
124 | ((ContinuousResource) resource).value()); | 125 | ((ContinuousResource) resource).value()); |
125 | // Continuous resource is terminal node, stop here | 126 | // Continuous resource is terminal node, stop here |
126 | return; | 127 | return; |
127 | } else { | 128 | } else { |
129 | + String availability = ""; | ||
130 | + if (availablesOnly && !children.isEmpty()) { | ||
131 | + // intermediate nodes cannot be omitted, print availability | ||
132 | + if (resourceService.isAvailable(resource)) { | ||
133 | + availability = " ✔"; | ||
134 | + } else { | ||
135 | + availability = " ✘"; | ||
136 | + } | ||
137 | + } | ||
128 | String toString = String.valueOf(resource.valueAs(Object.class).orElse("")); | 138 | String toString = String.valueOf(resource.valueAs(Object.class).orElse("")); |
129 | if (toString.startsWith(resourceName)) { | 139 | if (toString.startsWith(resourceName)) { |
130 | - print("%s%s", Strings.repeat(" ", level), | 140 | + print("%s%s%s", Strings.repeat(" ", level), |
131 | - toString); | 141 | + toString, availability); |
132 | } else { | 142 | } else { |
133 | - print("%s%s: %s", Strings.repeat(" ", level), | 143 | + print("%s%s: %s%s", Strings.repeat(" ", level), |
134 | resourceName, | 144 | resourceName, |
135 | - toString); | 145 | + toString, availability); |
136 | } | 146 | } |
137 | } | 147 | } |
138 | } | 148 | } |
... | @@ -219,6 +229,10 @@ public class ResourcesCommand extends AbstractShellCommand { | ... | @@ -219,6 +229,10 @@ public class ResourcesCommand extends AbstractShellCommand { |
219 | // resource which has children should be printed | 229 | // resource which has children should be printed |
220 | return true; | 230 | return true; |
221 | } | 231 | } |
232 | + if (availablesOnly && !resourceService.isAvailable(resource)) { | ||
233 | + // don't print unavailable discrete resource | ||
234 | + return false; | ||
235 | + } | ||
222 | } else if (!(resource instanceof ContinuousResource)) { | 236 | } else if (!(resource instanceof ContinuousResource)) { |
223 | log.warn("Unexpected resource class: {}", resource.getClass().getSimpleName()); | 237 | log.warn("Unexpected resource class: {}", resource.getClass().getSimpleName()); |
224 | return false; | 238 | return false; | ... | ... |
-
Please register or login to post a comment