basic-components/src/main/java/universalelectricity/core/electricity/ElectricityDisplay.java
2022-10-16 16:08:02 +02:00

98 lines
4.1 KiB
Java

package universalelectricity.core.electricity;
public class ElectricityDisplay {
public static String getDisplay(double value, ElectricityDisplay.ElectricUnit unit, int decimalPlaces, boolean isShort) {
String unitName = unit.name;
if(isShort) {
unitName = unit.symbol;
} else if(value > 1.0D) {
unitName = unit.getPlural();
}
return value == 0.0D?value + " " + unitName:(value <= ElectricityDisplay.MeasurementUnit.MILLI.value?roundDecimals(ElectricityDisplay.MeasurementUnit.MICRO.process(value), decimalPlaces) + " " + ElectricityDisplay.MeasurementUnit.MICRO.getName(isShort) + unitName:(value < 1.0D?roundDecimals(ElectricityDisplay.MeasurementUnit.MILLI.process(value), decimalPlaces) + " " + ElectricityDisplay.MeasurementUnit.MILLI.getName(isShort) + unitName:(value > ElectricityDisplay.MeasurementUnit.MEGA.value?roundDecimals(ElectricityDisplay.MeasurementUnit.MEGA.process(value), decimalPlaces) + " " + ElectricityDisplay.MeasurementUnit.MEGA.getName(isShort) + unitName:(value > ElectricityDisplay.MeasurementUnit.KILO.value?roundDecimals(ElectricityDisplay.MeasurementUnit.KILO.process(value), decimalPlaces) + " " + ElectricityDisplay.MeasurementUnit.KILO.getName(isShort) + unitName:roundDecimals(value, decimalPlaces) + " " + unitName))));
}
public static String getDisplay(double value, ElectricityDisplay.ElectricUnit unit) {
return getDisplay(value, unit, 2, false);
}
public static String getDisplayShort(double value, ElectricityDisplay.ElectricUnit unit) {
return getDisplay(value, unit, 2, true);
}
public static String getDisplayShort(double value, ElectricityDisplay.ElectricUnit unit, int decimalPlaces) {
return getDisplay(value, unit, decimalPlaces, true);
}
public static String getDisplaySimple(double value, ElectricityDisplay.ElectricUnit unit, int decimalPlaces) {
return value > 1.0D?(decimalPlaces < 1?(int)value + " " + unit.getPlural():roundDecimals(value, decimalPlaces) + " " + unit.getPlural()):(decimalPlaces < 1?(int)value + " " + unit.name:roundDecimals(value, decimalPlaces) + " " + unit.name);
}
public static double roundDecimals(double d, int decimalPlaces) {
int j = (int)(d * Math.pow(10.0D, (double)decimalPlaces));
return (double)j / Math.pow(10.0D, (double)decimalPlaces);
}
public static double roundDecimals(double d) {
return roundDecimals(d, 2);
}
public static enum ElectricUnit {
AMPERE("AMPERE", 0, "Amp", "I"),
AMP_HOUR("AMP_HOUR", 1, "Amp Hour", "Ah"),
VOLTAGE("VOLTAGE", 2, "Volt", "V"),
WATT("WATT", 3, "Watt", "W"),
WATT_HOUR("WATT_HOUR", 4, "Watt Hour", "Wh"),
RESISTANCE("RESISTANCE", 5, "Ohm", "R"),
CONDUCTANCE("CONDUCTANCE", 6, "Siemen", "S"),
JOULES("JOULES", 7, "Joule", "J");
public String name;
public String symbol;
// $FF: synthetic field
private static final ElectricityDisplay.ElectricUnit[] $VALUES = new ElectricityDisplay.ElectricUnit[]{AMPERE, AMP_HOUR, VOLTAGE, WATT, WATT_HOUR, RESISTANCE, CONDUCTANCE, JOULES};
private ElectricUnit(String var1, int var2, String name, String symbol) {
this.name = name;
this.symbol = symbol;
}
public String getPlural() {
return this.name + "s";
}
}
public static enum MeasurementUnit {
MICRO("MICRO", 0, "Micro", "mi", 1.0E-6D),
MILLI("MILLI", 1, "Milli", "m", 0.001D),
KILO("KILO", 2, "Kilo", "k", 1000.0D),
MEGA("MEGA", 3, "Mega", "M", 1000000.0D);
public String name;
public String symbol;
public double value;
// $FF: synthetic field
private static final ElectricityDisplay.MeasurementUnit[] $VALUES = new ElectricityDisplay.MeasurementUnit[]{MICRO, MILLI, KILO, MEGA};
private MeasurementUnit(String var1, int var2, String name, String symbol, double value) {
this.name = name;
this.symbol = symbol;
this.value = value;
}
public String getName(boolean isSymbol) {
return isSymbol?this.symbol:this.name;
}
public double process(double value) {
return value / this.value;
}
}
}