| /* |
| * libbrlapi - A library providing access to braille terminals for applications. |
| * |
| * Copyright (C) 2006-2023 by |
| * Samuel Thibault <Samuel.Thibault@ens-lyon.org> |
| * Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org> |
| * |
| * libbrlapi comes with ABSOLUTELY NO WARRANTY. |
| * |
| * This is free software, placed under the terms of the |
| * GNU Lesser General Public License, as published by the Free Software |
| * Foundation; either version 2.1 of the License, or (at your option) any |
| * later version. Please see the file LICENSE-LGPL for details. |
| * |
| * Web Page: http://brltty.app/ |
| * |
| * This software is maintained by Dave Mielke <dave@mielke.cc>. |
| */ |
| |
| package org.a11y.brlapi.clients; |
| |
| import org.a11y.brlapi.*; |
| |
| public class ListParametersClient extends Client { |
| public ListParametersClient (String... arguments) { |
| super(arguments); |
| addOptionalParameters("parameter", "subparam"); |
| } |
| |
| private String parameterName = null; |
| private Long subparamValue = null; |
| |
| @Override |
| protected void processParameters (String[] parameters) |
| throws SyntaxException |
| { |
| int count = parameters.length; |
| int index = 0; |
| |
| if (index == count) return; |
| parameterName = parameters[index++]; |
| |
| if (index == count) return; |
| subparamValue = Parse.asLong("subparam", parameters[index++]); |
| |
| if (index < count) throw new TooManyParametersException(parameters, index); |
| } |
| |
| @Override |
| protected final void runClient (Connection connection) throws SemanticException { |
| if (parameterName == null) { |
| Parameter[] parameterArray = connection.getParameters().get(); |
| Parameters.sortByName(parameterArray); |
| |
| for (Parameter parameter : parameterArray) { |
| if (parameter.isHidable()) continue; |
| String value = parameter.toString(); |
| if (value != null) printf("%s: %s\n", parameter.getLabel(), value); |
| } |
| } else { |
| Parameter parameter = getParameter(connection, parameterName); |
| String value; |
| |
| if (subparamValue == null) { |
| value = parameter.toString(); |
| } else { |
| long subparam = subparamValue; |
| value = parameter.toString(subparam); |
| } |
| |
| if (value == null) { |
| StringBuilder message = new StringBuilder(); |
| message.append("parameter has no value"); |
| |
| message.append(": "); |
| message.append(parameter.getName()); |
| |
| if (subparamValue != null) { |
| message.append('['); |
| message.append(subparamValue); |
| message.append(']'); |
| } |
| |
| throw new SemanticException("%s", message); |
| } |
| |
| printf("%s\n", value); |
| } |
| } |
| } |