diff --git a/diylc/diylc-core/src/org/diylc/core/measures/AbstractMeasure.java b/diylc/diylc-core/src/org/diylc/core/measures/AbstractMeasure.java index 172a81f0..8969502e 100644 --- a/diylc/diylc-core/src/org/diylc/core/measures/AbstractMeasure.java +++ b/diylc/diylc-core/src/org/diylc/core/measures/AbstractMeasure.java @@ -85,4 +85,11 @@ public class AbstractMeasure> implements Serializ public String toString() { return format.format(value) + unit; } + + protected static double parse(String value) { + if (value.startsWith(".")) + value = "0" + value; + value = value.replace(",", ".").replace("*", ""); + return Double.parseDouble(value); + } } diff --git a/diylc/diylc-core/src/org/diylc/core/measures/Capacitance.java b/diylc/diylc-core/src/org/diylc/core/measures/Capacitance.java index 55bc213a..61091c50 100644 --- a/diylc/diylc-core/src/org/diylc/core/measures/Capacitance.java +++ b/diylc/diylc-core/src/org/diylc/core/measures/Capacitance.java @@ -20,10 +20,11 @@ public class Capacitance extends AbstractMeasure { } public static Capacitance parseCapacitance(String value) { + value = value.replace("*", ""); for (CapacitanceUnit unit : CapacitanceUnit.values()) { if (value.toLowerCase().endsWith(unit.toString().toLowerCase())) { - value = value.substring(0, value.length() - unit.toString().length() - 1).trim(); - return new Capacitance(Double.parseDouble(value), unit); + value = value.substring(0, value.length() - unit.toString().length()).trim(); + return new Capacitance(parse(value), unit); } } throw new IllegalArgumentException("Could not parse capacitance: " + value); diff --git a/diylc/diylc-core/src/org/diylc/core/measures/Inductance.java b/diylc/diylc-core/src/org/diylc/core/measures/Inductance.java index ab1d1ca7..40117c4a 100644 --- a/diylc/diylc-core/src/org/diylc/core/measures/Inductance.java +++ b/diylc/diylc-core/src/org/diylc/core/measures/Inductance.java @@ -20,10 +20,11 @@ public class Inductance extends AbstractMeasure { } public static Inductance parseCapacitance(String value) { + value = value.replace("*", ""); for (InductanceUnit unit : InductanceUnit.values()) { if (value.toLowerCase().endsWith(unit.toString().toLowerCase())) { - value = value.substring(0, value.length() - unit.toString().length() - 1).trim(); - return new Inductance(Double.parseDouble(value), unit); + value = value.substring(0, value.length() - unit.toString().length()).trim(); + return new Inductance(parse(value), unit); } } throw new IllegalArgumentException("Could not parse inductance: " + value); diff --git a/diylc/diylc-core/src/org/diylc/core/measures/Power.java b/diylc/diylc-core/src/org/diylc/core/measures/Power.java index 55599dea..29cba249 100644 --- a/diylc/diylc-core/src/org/diylc/core/measures/Power.java +++ b/diylc/diylc-core/src/org/diylc/core/measures/Power.java @@ -20,10 +20,11 @@ public class Power extends AbstractMeasure { } public static Power parseCapacitance(String value) { + value = value.replace("*", ""); for (PowerUnit unit : PowerUnit.values()) { if (value.toLowerCase().endsWith(unit.toString().toLowerCase())) { - value = value.substring(0, value.length() - unit.toString().length() - 1).trim(); - return new Power(Double.parseDouble(value), unit); + value = value.substring(0, value.length() - unit.toString().length()).trim(); + return new Power(parse(value), unit); } } throw new IllegalArgumentException("Could not parse power: " + value); diff --git a/diylc/diylc-core/src/org/diylc/core/measures/Resistance.java b/diylc/diylc-core/src/org/diylc/core/measures/Resistance.java index 15df3a5e..3673f764 100644 --- a/diylc/diylc-core/src/org/diylc/core/measures/Resistance.java +++ b/diylc/diylc-core/src/org/diylc/core/measures/Resistance.java @@ -88,10 +88,11 @@ public class Resistance extends AbstractMeasure { } public static Resistance parseResistance(String value) { + value = value.replace("*", "").replace("R", "\u2126"); for (ResistanceUnit unit : ResistanceUnit.values()) { if (value.toLowerCase().endsWith(unit.toString().toLowerCase())) { value = value.substring(0, value.length() - unit.toString().length()).trim(); - return new Resistance(Double.parseDouble(value), unit); + return new Resistance(parse(value), unit); } } throw new IllegalArgumentException("Could not parse resistance: " + value); diff --git a/diylc/diylc-core/src/org/diylc/core/measures/Size.java b/diylc/diylc-core/src/org/diylc/core/measures/Size.java index 6ff9cec0..2ad29e28 100644 --- a/diylc/diylc-core/src/org/diylc/core/measures/Size.java +++ b/diylc/diylc-core/src/org/diylc/core/measures/Size.java @@ -31,10 +31,11 @@ public class Size extends AbstractMeasure implements Comparable } public static Size parseSize(String value) { + value = value.replace("*", ""); for (SizeUnit unit : SizeUnit.values()) { if (value.toLowerCase().endsWith(unit.toString().toLowerCase())) { - value = value.substring(0, value.length() - unit.toString().length() - 1).trim(); - return new Size(Double.parseDouble(value), unit); + value = value.substring(0, value.length() - unit.toString().length()).trim(); + return new Size(parse(value), unit); } } throw new IllegalArgumentException("Could not parse size: " + value); diff --git a/diylc/diylc-core/src/org/diylc/core/measures/Voltage.java b/diylc/diylc-core/src/org/diylc/core/measures/Voltage.java index 680a1e8d..75e0463e 100644 --- a/diylc/diylc-core/src/org/diylc/core/measures/Voltage.java +++ b/diylc/diylc-core/src/org/diylc/core/measures/Voltage.java @@ -20,10 +20,11 @@ public class Voltage extends AbstractMeasure { } public static Voltage parseCapacitance(String value) { + value = value.replace("*", ""); for (VoltageUnit unit : VoltageUnit.values()) { if (value.toLowerCase().endsWith(unit.toString().toLowerCase())) { - value = value.substring(0, value.length() - unit.toString().length() - 1).trim(); - return new Voltage(Double.parseDouble(value), unit); + value = value.substring(0, value.length() - unit.toString().length()).trim(); + return new Voltage(parse(value), unit); } } throw new IllegalArgumentException("Could not parse voltage: " + value); diff --git a/diylc/diylc-library/src/org/diylc/parsing/V1FileParser.java b/diylc/diylc-library/src/org/diylc/parsing/V1FileParser.java index 790347bb..a968e7ab 100644 --- a/diylc/diylc-library/src/org/diylc/parsing/V1FileParser.java +++ b/diylc/diylc-library/src/org/diylc/parsing/V1FileParser.java @@ -731,7 +731,7 @@ public class V1FileParser implements IOldFileParser { private int randInt(int range) { long newSeed = randSeed * 0x08088405 + 1; randSeed = newSeed; - return (int) (newSeed * range >> 32); + return (int) ((long)newSeed * range >> 32); } }