fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major/**
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * The contents of this file are subject to the terms
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * of the Common Development and Distribution License
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * (the License). You may not use this file except in
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * compliance with the License.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * You can obtain a copy of the License at
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * https://opensso.dev.java.net/public/CDDLv1.0.html or
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * opensso/legal/CDDLv1.0.txt
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * See the License for the specific language governing
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * permission and limitations under the License.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * When distributing Covered Code, include this CDDL
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * Header Notice in each file and include the License file
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * at opensso/legal/CDDLv1.0.txt.
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * If applicable, add the following below the CDDL Header,
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * with the fields enclosed by brackets [] replaced by
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * your own identifying information:
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * "Portions Copyrighted [year] [name of copyright owner]"
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major * $Id: ConfirmInteraction.java,v 1.2 2008/06/25 05:51:17 qcheng Exp $
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major *
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major */
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorpackage com.sun.identity.install.tools.configurator;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport java.util.ArrayList;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.util.Console;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorimport com.sun.identity.install.tools.util.LocalizedMessage;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Majorpublic class ConfirmInteraction extends BaseInteraction {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public ConfirmInteraction() {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major super();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major setUserOptions();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major setPromptMessage();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public ArrayList getDisplayMessages() {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return null;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public String getPromptValue(IStateAccess state) throws InstallException {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return getUserOptions(state).getDefaultOption().getDisplayItem();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public LocalizedMessage getPromptMessage(IStateAccess state) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return promptMessage;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public BaseOptions getUserOptions(IStateAccess state)
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major throws InstallException {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return options;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major public InteractionResultStatus interact(IStateAccess state)
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major throws InstallException {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major UserOptionItem selectedOption = null;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major do {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // Now display available options
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Console.println();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major getUserOptions(state).display();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // Display the prompt
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major displayPromptMessage(state);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // Now read user input
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major String userInput = Console.readLine();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (userInput != null && userInput.trim().length() > 0) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major selectedOption = getUserOptions(state).getSelectedOption(
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major userInput);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } else if (getUserOptions(state).getDefaultOption() != null) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // Choose default if present
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major selectedOption = getUserOptions(state).getDefaultOption();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // At this point if the selectedOption is still null, print an
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // invalid option message
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (selectedOption == null) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Console.println();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major Console.println(getInvalidOptionMessage());
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major } while (selectedOption == null);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return getResultStatus(selectedOption);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private InteractionResultStatus getResultStatus(UserOptionItem option) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major InteractionResultStatus status =
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major InteractionResultStatus.STATUS_CONTINUE;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major if (option.getDisplayItem().equals(STR_CONFIRM_YES_DISPLAY_ITEM)) {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major status = InteractionResultStatus.STATUS_ABORT;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return status;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private LocalizedMessage getInvalidOptionMessage() {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major return invalidOptionMessage;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private void setPromptMessage() {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major promptMessage = LocalizedMessage.get(LOC_IN_MSG_CONFIRM_PROMPT);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private void setUserOptions() {
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major options = new SingleLineOptions();
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major UserOptionItem yesOption = new UserOptionItem(
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major STR_CONFIRM_YES_DISPLAY_ITEM, LOC_IN_MSG_CONFIRM_EXIT);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major UserOptionItem noOption = new UserOptionItem(
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major STR_CONFIRM_NO_DISPLAY_ITEM, LOC_IN_MSG_CONFIRM_CONTINUE);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major options.add(yesOption);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major options.add(noOption);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major options.setDefaultOption(noOption);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major options.setIgnoreCaseFlag(true);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major options.setSeparator(SingleLineOptions.STR_COMMA_DELIMITER);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major }
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // All the available Run time options. Can never be null OR empty
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private SingleLineOptions options;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major // The prompt message that will be displayed for the user to input data
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private LocalizedMessage promptMessage;
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private LocalizedMessage invalidOptionMessage =
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major LocalizedMessage.get(LOC_IN_ERR_INVALID_OPTION);
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private static final String STR_CONFIRM_YES_DISPLAY_ITEM = "yes";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private static final String STR_CONFIRM_NO_DISPLAY_ITEM = "no";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private static final String LOC_IN_MSG_CONFIRM_EXIT =
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major "IN_MSG_CONFIRM_EXIT";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private static final String LOC_IN_MSG_CONFIRM_CONTINUE =
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major "IN_MSG_CONFIRM_CONTINUE";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private static final String LOC_IN_MSG_CONFIRM_PROMPT =
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major "IN_MSG_CONFIRM_PROMPT";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major private static final String LOC_IN_ERR_INVALID_OPTION =
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major "IN_ERR_INVALID_OPTION";
fb379c70e3fd8a537f311b99be4759ae41e02750Peter Major}