diff options
author | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2019-04-14 07:57:38 -0400 |
---|---|---|
committer | Adrien Hopkins <adrien.p.hopkins@gmail.com> | 2019-04-14 07:57:38 -0400 |
commit | 77051c4f70f450a4363be7ae587de36efc1fdd54 (patch) | |
tree | d573268256e17f084824688cc5434434b48b05b1 /src/org | |
parent | 4cef115e3fbd228a84ad48eed7af5403e8c8c46e (diff) |
Added more units and dimensions to the converter.
Diffstat (limited to 'src/org')
-rwxr-xr-x | src/org/unitConverter/converterGUI/FilterComparator.java | 18 | ||||
-rwxr-xr-x | src/org/unitConverter/converterGUI/UnitConverterGUI.java | 50 |
2 files changed, 41 insertions, 27 deletions
diff --git a/src/org/unitConverter/converterGUI/FilterComparator.java b/src/org/unitConverter/converterGUI/FilterComparator.java index bebc2df..ad8d0b0 100755 --- a/src/org/unitConverter/converterGUI/FilterComparator.java +++ b/src/org/unitConverter/converterGUI/FilterComparator.java @@ -20,7 +20,7 @@ import java.util.Comparator; import java.util.Objects;
/**
- * A comparator that compares strings using a filter.
+ * A comparator that compares strings using a filter. It is case-insensitive
*
* @author Adrien Hopkins
* @since 2019-01-15
@@ -72,22 +72,26 @@ public final class FilterComparator implements Comparator<String> { @Override
public int compare(final String arg0, final String arg1) {
+ // this is case insensitive, so make them lowercase
+ final String arg0lower = arg0.toLowerCase();
+ final String arg1lower = arg1.toLowerCase();
+
// elements that start with the filter always go first
- if (arg0.startsWith(this.filter) && !arg1.startsWith(this.filter))
+ if (arg0lower.startsWith(this.filter) && !arg1lower.startsWith(this.filter))
return -1;
- else if (!arg0.startsWith(this.filter) && arg1.startsWith(this.filter))
+ else if (!arg0lower.startsWith(this.filter) && arg1lower.startsWith(this.filter))
return 1;
// elements that contain the filter but don't start with them go next
- if (arg0.contains(this.filter) && !arg1.contains(this.filter))
+ if (arg0lower.contains(this.filter) && !arg1lower.contains(this.filter))
return -1;
- else if (!arg0.contains(this.filter) && !arg1.contains(this.filter))
+ else if (!arg0lower.contains(this.filter) && !arg1lower.contains(this.filter))
return 1;
// other elements go last
if (this.comparator == null)
- return arg0.compareTo(arg1);
+ return arg0lower.compareTo(arg1lower);
else
- return this.comparator.compare(arg0, arg1);
+ return this.comparator.compare(arg0lower, arg1lower);
}
}
diff --git a/src/org/unitConverter/converterGUI/UnitConverterGUI.java b/src/org/unitConverter/converterGUI/UnitConverterGUI.java index 49a40d6..34cbef9 100755 --- a/src/org/unitConverter/converterGUI/UnitConverterGUI.java +++ b/src/org/unitConverter/converterGUI/UnitConverterGUI.java @@ -62,6 +62,35 @@ import org.unitConverter.unit.UnitPrefix; */ final class UnitConverterGUI { private static class Presenter { + /** + * Adds default units and dimensions to a database. + * + * @param database + * database to add to + * @since 2019-04-14 + */ + private static void addDefaults(final UnitsDatabase database) { + database.addUnit("metre", SI.METRE); + database.addUnit("kilogram", SI.KILOGRAM); + database.addUnit("gram", SI.KILOGRAM.dividedBy(1000)); + database.addUnit("second", SI.SECOND); + database.addUnit("ampere", SI.AMPERE); + database.addUnit("kelvin", SI.KELVIN); + database.addUnit("mole", SI.MOLE); + database.addUnit("candela", SI.CANDELA); + database.addUnit("bit", SI.SI.getBaseUnit(StandardDimensions.INFORMATION)); + database.addUnit("unit", SI.SI.getBaseUnit(UnitDimension.EMPTY)); + // nonlinear units - must be loaded manually + database.addUnit("tempCelsius", NonlinearUnits.CELSIUS); + database.addUnit("tempFahrenheit", NonlinearUnits.FAHRENHEIT); + + // load initial dimensions + database.addDimension("LENGTH", StandardDimensions.LENGTH); + database.addDimension("MASS", StandardDimensions.MASS); + database.addDimension("TIME", StandardDimensions.TIME); + database.addDimension("TEMPERATURE", StandardDimensions.TEMPERATURE); + } + /** The presenter's associated view. */ private final View view; @@ -100,26 +129,7 @@ final class UnitConverterGUI { // load initial units this.units = new UnitsDatabase(); - this.units.addUnit("metre", SI.METRE); - this.units.addUnit("kilogram", SI.KILOGRAM); - this.units.addUnit("gram", SI.KILOGRAM.dividedBy(1000)); - this.units.addUnit("second", SI.SECOND); - this.units.addUnit("ampere", SI.AMPERE); - this.units.addUnit("kelvin", SI.KELVIN); - this.units.addUnit("mole", SI.MOLE); - this.units.addUnit("candela", SI.CANDELA); - this.units.addUnit("bit", SI.SI.getBaseUnit(StandardDimensions.INFORMATION)); - this.units.addUnit("unit", SI.SI.getBaseUnit(UnitDimension.EMPTY)); - // nonlinear units - must be loaded manually - this.units.addUnit("tempCelsius", NonlinearUnits.CELSIUS); - this.units.addUnit("tempFahrenheit", NonlinearUnits.FAHRENHEIT); - - // load initial dimensions - this.units.addDimension("LENGTH", StandardDimensions.LENGTH); - this.units.addDimension("MASS", StandardDimensions.MASS); - this.units.addDimension("TIME", StandardDimensions.TIME); - this.units.addDimension("TEMPERATURE", StandardDimensions.TEMPERATURE); - this.units.addDimension("LUMINOUS_INTENSITY", StandardDimensions.LUMINOUS_INTENSITY); + Presenter.addDefaults(this.units); this.units.loadUnitsFile(new File("unitsfile.txt")); this.units.loadDimensionFile(new File("dimensionfile.txt")); |