WarpPI/desktop/src/main/java/it/cavallium/warppi/desktop/DesktopConsoleUtils.java

119 lines
3.8 KiB
Java
Raw Normal View History

2018-09-04 12:12:41 +02:00
package it.cavallium.warppi.desktop;
import java.io.PrintStream;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import it.cavallium.warppi.StaticVars;
import it.cavallium.warppi.math.MathematicalSymbols;
public class DesktopConsoleUtils implements it.cavallium.warppi.Platform.ConsoleUtils {
2018-09-04 12:12:41 +02:00
private AdvancedOutputStream os;
public DesktopConsoleUtils() {
os = new AdvancedOutputStream() {
2018-09-22 11:17:30 +02:00
private void print(final PrintStream stream, final String str) {
2018-09-04 12:12:41 +02:00
stream.print(fixString(str));
}
2018-09-22 11:17:30 +02:00
private void println(final PrintStream stream, final String str) {
2018-09-04 12:12:41 +02:00
stream.println(fixString(str));
}
2018-09-22 11:17:30 +02:00
private void println(final PrintStream stream) {
2018-09-04 12:12:41 +02:00
stream.println();
}
2018-09-22 11:17:30 +02:00
private String fixString(final String str) {
2018-09-04 12:12:41 +02:00
return str.replace("" + MathematicalSymbols.NTH_ROOT, "root").replace("" + MathematicalSymbols.SQUARE_ROOT, "sqrt").replace("" + MathematicalSymbols.POWER, "powerOf").replace("" + MathematicalSymbols.POWER_OF_TWO, "powerOfTwo").replace("" + MathematicalSymbols.SINE, "sine").replace("" + MathematicalSymbols.COSINE, "cosine").replace("" + MathematicalSymbols.TANGENT, "tangent").replace("" + MathematicalSymbols.ARC_SINE, "asin").replace("" + MathematicalSymbols.ARC_COSINE, "acos").replace("" + MathematicalSymbols.ARC_TANGENT, "atan").replace("" + MathematicalSymbols.UNDEFINED, "undefined").replace("" + MathematicalSymbols.PI, "PI").replace("" + MathematicalSymbols.EULER_NUMBER, "EULER_NUMBER").replace("" + MathematicalSymbols.X, "X").replace("" + MathematicalSymbols.Y, "Y");
}
2018-09-22 11:17:30 +02:00
@Override
public void println(final Object str) {
2018-09-04 12:12:41 +02:00
println(0, str);
}
2018-09-22 11:17:30 +02:00
@Override
public void println(final int level) {
if (StaticVars.outputLevel >= level)
if (StaticVars.outputLevel == 0)
2018-09-04 12:12:41 +02:00
println(System.out);
2018-09-22 11:17:30 +02:00
else
2018-09-04 12:12:41 +02:00
println(System.out);
}
2018-09-22 11:17:30 +02:00
@Override
public void println(final int level, final Object str) {
2018-09-04 12:12:41 +02:00
if (StaticVars.outputLevel >= level) {
final String time = getTimeString();
2018-09-22 11:17:30 +02:00
if (StaticVars.outputLevel == 0)
2019-12-16 16:54:10 +01:00
println(System.out, "[" + time + "]" + str);
2018-09-22 11:17:30 +02:00
else
2019-12-16 16:54:10 +01:00
println(System.out, "[" + time + "]" + str);
2018-09-04 12:12:41 +02:00
}
}
2018-09-22 11:17:30 +02:00
@Override
public void print(final int level, final String str) {
if (StaticVars.outputLevel >= level)
if (StaticVars.outputLevel == 0)
2018-09-04 12:12:41 +02:00
print(System.out, str);
2018-09-22 11:17:30 +02:00
else
2018-09-04 12:12:41 +02:00
print(System.out, str);
}
2018-09-22 11:17:30 +02:00
@Override
public void println(final int level, final String prefix, final String str) {
2018-09-04 12:12:41 +02:00
if (StaticVars.outputLevel >= level) {
final String time = getTimeString();
2018-09-22 11:17:30 +02:00
if (StaticVars.outputLevel == 0)
2019-12-16 16:54:10 +01:00
println(System.out, "[" + time + "][" + prefix + "]" + str);
2018-09-22 11:17:30 +02:00
else
2019-12-16 16:54:10 +01:00
println(System.out, "[" + time + "][" + prefix + "]" + str);
2018-09-04 12:12:41 +02:00
}
}
2018-09-22 11:17:30 +02:00
@Override
public void println(final int level, final String... parts) {
2018-09-04 12:12:41 +02:00
if (StaticVars.outputLevel >= level) {
final String time = getTimeString();
2018-09-22 11:17:30 +02:00
final StringBuilder output = new StringBuilder();
for (int i = 0; i < parts.length; i++)
2018-09-04 12:12:41 +02:00
if (i + 1 == parts.length) {
output.append(' ');
output.append(parts[i]);
} else {
output.append('[');
output.append(parts[i]);
output.append(']');
}
output.insert(0, '[');
output.insert(1, time);
output.insert(time.length() + 1, ']');
2018-09-22 11:17:30 +02:00
if (StaticVars.outputLevel == 0)
2018-09-04 12:12:41 +02:00
println(System.out, output.toString());
2018-09-22 11:17:30 +02:00
else
2018-09-04 12:12:41 +02:00
println(System.out, output.toString());
}
}
private String getTimeString() {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern("HH:mm:ss.SSS"));
}
};
}
2018-09-22 11:17:30 +02:00
2018-09-04 12:12:41 +02:00
@Override
public AdvancedOutputStream out() {
return os;
}
2018-09-11 01:12:54 +02:00
@Override
public int getOutputLevel() {
return StaticVars.outputLevel;
}
2018-09-04 12:12:41 +02:00
}