/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2007 Sun Microsystems, Inc. */ package org.opends.quicksetup; import org.opends.quicksetup.util.Utils; import org.opends.quicksetup.i18n.ResourceProvider; import java.io.ByteArrayOutputStream; import java.util.Set; import java.util.ArrayList; import java.util.logging.Logger; /** * Helper class containing useful methods for processing input and output * for a CliApplication. */ public class CliApplicationHelper { static private final Logger LOG = Logger.getLogger(CliApplication.class.getName()); /** * Interactively prompts (on standard output) the user to provide a string * value. Any non-empty string will be allowed (the empty string will * indicate that the default should be used). The method will display the * message until the user provides one of the values in the validValues * parameter. * * @param formatKey Key for access the prompts format string from the * bundle * @param prompt The prompt to present to the user. * @param defaultValue The default value returned if the user clicks enter. * @param validValues The valid values that can be accepted as user input. * * @return The string value read from the user. */ protected String promptConfirm(String formatKey, String prompt, String defaultValue, String[] validValues) { System.out.println(); boolean isValid = false; String response = null; while (!isValid) { String msg = getMsg(formatKey, new String[] {prompt, defaultValue}); System.out.print(msg); System.out.flush(); response = readLine(); if (response.equals("")) { response = defaultValue; } for (int i=0; inull * if the end of the stream is reached or an error occurs while * attempting to read the response. */ private String readLine() { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); while (true) { int b = System.in.read(); if ((b < 0) || (b == '\n')) { break; } else if (b == '\r') { int b2 = System.in.read(); if (b2 == '\n') { break; } else { baos.write(b); baos.write(b2); } } else { baos.write(b); } } return new String(baos.toByteArray(), "UTF-8"); } catch (Exception e) { System.err.println(getMsg("cli-uninstall-error-reading-stdin")); return null; } } /** * Returns true if this is a silent uninstall and * false otherwise. * @param args the arguments passed in the command line. * @return true if this is a silent uninstall and * false otherwise. */ protected boolean isSilent(String[] args) { boolean isSilent = false; for (int i=0; i validArgs) throws UserDataException { ArrayList errors = new ArrayList(); for (String arg1 : args) { if (validArgs.contains(arg1)) { // Ignore } else { String[] arg = {arg1}; errors.add(getMsg("cli-uninstall-unknown-argument", arg)); } } if (errors.size() > 0) { String msg = Utils.getStringFromCollection(errors, QuickSetupCli.LINE_SEPARATOR+QuickSetupCli.LINE_SEPARATOR); throw new UserDataException(null, msg); } } /** * The following three methods are just commodity methods to get localized * messages. * @param key String key * @return String message */ protected static String getMsg(String key) { return org.opends.server.util.StaticUtils.wrapText(getI18n().getMsg(key), Utils.getCommandLineMaxLineWidth()); } /** * The following three methods are just commodity methods to get localized * messages. * @param key String key * @param args String[] args * @return String message */ protected static String getMsg(String key, String[] args) { return org.opends.server.util.StaticUtils.wrapText( getI18n().getMsg(key, args), Utils.getCommandLineMaxLineWidth()); } /** * Gets the resource provider instance. * @return ResourceProvider instance */ protected static ResourceProvider getI18n() { return ResourceProvider.getInstance(); } }