/******************************************************************************* * Copyright (c) 2011 GigaSpaces Technologies Ltd. All rights reserved * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * specific language governing permissions and limitations under the License. *******************************************************************************/ package org.cloudifysource.shell.installer; import java.util.List; import org.cloudifysource.dsl.internal.CloudifyConstants; import org.cloudifysource.shell.ShellUtils; import org.fusesource.jansi.Ansi; import org.fusesource.jansi.Ansi.Color; /** * * */ public class CLIEventsDisplayer { private static final int PROGRESS_BAR_MAX_LENGTH = 6; private int progressCounter = 0; /** * */ public void printNoChange() { System.out.print('.'); System.out.flush(); this.progressCounter++; if (progressCounter >= PROGRESS_BAR_MAX_LENGTH) { System.out.print(Ansi.ansi() .cursorLeft(PROGRESS_BAR_MAX_LENGTH - 1) .eraseLine()); System.out.flush(); this.progressCounter = 1; } } // public void printNewLine(){ // System.out.println(); // System.out.flush(); // this.progressCounter = 0; // } /** * * @param events */ public void printEvents(final List<String> events) { for (final String eventString : events) { if (!eventString.equals(CloudifyConstants.UNDEPLOYED_SUCCESSFULLY_EVENT)) { printEvent(eventString); } else { // this is an internal event. // dont print it. } } } /** * * @param eventString */ public void printEvent(final String eventString) { if (progressCounter != 0) { System.out.println(); System.out.flush(); this.progressCounter = 0; } if (eventString.contains(CloudifyConstants.USM_EVENT_EXEC_SUCCESSFULLY)) { System.out.println(eventString + " " + ShellUtils.getColorMessage(CloudifyConstants.USM_EVENT_EXEC_SUCCEED_MESSAGE, Color.GREEN)); } else if (eventString.contains(CloudifyConstants.USM_EVENT_EXEC_FAILED)) { System.out.println(eventString + " " + ShellUtils.getColorMessage(CloudifyConstants.USM_EVENT_EXEC_FAILED_MESSAGE, Color.RED)); } else { System.out.println(eventString); System.out.flush(); } } /** * * @param messageCode * @param args */ public void printEvent(final String messageCode, final Object... args) { final String message = ShellUtils.getFormattedMessage(messageCode, args); printEvent(message); } /** * */ public void eraseCurrentLine() { System.out.print(Ansi.ansi().cursorLeft(this.progressCounter).eraseLine()); } /** * * @param messageText * @param color */ public void printColoredMessage(final String messageText, final Color color) { System.out.println(ShellUtils.getColorMessage(messageText, color)); } }