/* * Copyright (c) 2018-2019. Developed by Hedgecode. * * 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.hedgecode.chess; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Calendar; /** * * * @author Dmitry Samoshin aka gotty */ public class ChessHogConsole { private static final String EMPTY = ""; private static final String SPACE = " "; private static final String[] ASCII_LOGO = { " _______ _ _ ", " | | _|_ _| |___ ___ ___ ___ _| |___ ", " | | -_| . | . | -_| _| . | . | -_| ", " | |___|___|_ |___|___|___|___|___| ", " |___|___| |___| _ _ ", " ___| |_ ___ ___ ___| |_ ___ ___ ", " | _| | -_|_ -|_ -| | . | . | ", " |___|_|_|___|___|___|_|_|___|_ | ", " |___| " }; private static final String COPYRIGHT = "Copyright (c) Hedgecode"; private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("HH:mm:ss"); private static final DateTimeFormatter DATETIME_FORMAT = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); private static boolean logMode = false; private ChessHogConsole() { } public static void setLogMode(boolean isLogMode) { logMode = isLogMode; } public static void console(String message) { if (logMode) { log(message); } else { output(message); } } public static void output(String message) { System.out.println( message ); } public static void log(String message) { System.out.println( logTime() + message ); } public static void init() { asciiLogo(); copyright(); version(); console(EMPTY); os(); jave(); } private static String logTime() { return "[" + TIME_FORMAT.format(LocalDateTime.now()) + "]" + SPACE; } private static void asciiLogo() { for (String line : ASCII_LOGO) { console(line); } } private static void copyright() { int inceptionYear = Integer.parseInt( ChessHogProperties.get("chesshog.inception.year") ); int currentYear = Calendar.getInstance().get(Calendar.YEAR); String years = currentYear > inceptionYear ? inceptionYear + "-" + currentYear + SPACE : inceptionYear + SPACE; console( alignCenter(years + COPYRIGHT) ); } private static void version() { console( alignCenter("v. " + ChessHogProperties.get("chesshog.version")) ); } private static void os() { console( "OS:" + SPACE + System.getProperty("os.name") + SPACE + System.getProperty("os.version") + SPACE + System.getProperty("os.arch") ); } private static void jave() { console( "JRE:" + SPACE + System.getProperty("java.runtime.name") + SPACE + System.getProperty("java.runtime.version") ); console( "JVM:" + SPACE + System.getProperty("java.vm.vendor") + SPACE + System.getProperty("java.vm.name") + SPACE + System.getProperty("java.vm.version") ); } private static String alignCenter(String message) { int indent = (ASCII_LOGO[0].length() + message.length()) / 2; return String.format("%" + indent + "s", message); } }