X-Git-Url: https://git.hedgecode.org/?p=chesshog.git;a=blobdiff_plain;f=chesshog-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2FChessHogConsole.java;fp=chesshog-core%2Fsrc%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2FChessHogConsole.java;h=32da11589f5049a252181fc3087e40f9cdff215a;hp=0000000000000000000000000000000000000000;hb=b723e3cbfc1fce59187408a95de47568b1e5e88e;hpb=6f233e90e111f983e0ef401697859bb677bc0929 diff --git a/chesshog-core/src/main/java/org/hedgecode/chess/ChessHogConsole.java b/chesshog-core/src/main/java/org/hedgecode/chess/ChessHogConsole.java new file mode 100644 index 0000000..32da115 --- /dev/null +++ b/chesshog-core/src/main/java/org/hedgecode/chess/ChessHogConsole.java @@ -0,0 +1,146 @@ +/* + * 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); + } + +}