Merge pull request #2191 from SiboVG/issue-2083
[#2083] Account for units of measure in material database loader
This commit is contained in:
commit
dbd08ea03f
@ -10,6 +10,7 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||||||
|
|
||||||
import net.sf.openrocket.database.Databases;
|
import net.sf.openrocket.database.Databases;
|
||||||
import net.sf.openrocket.material.Material;
|
import net.sf.openrocket.material.Material;
|
||||||
|
import net.sf.openrocket.unit.Unit;
|
||||||
import net.sf.openrocket.util.Chars;
|
import net.sf.openrocket.util.Chars;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -95,6 +96,12 @@ public class MaterialDTO {
|
|||||||
if (uom != null) {
|
if (uom != null) {
|
||||||
uom = uom.replace('2', Chars.SQUARED);
|
uom = uom.replace('2', Chars.SQUARED);
|
||||||
uom = uom.replace('3', Chars.CUBED);
|
uom = uom.replace('3', Chars.CUBED);
|
||||||
|
if (type != null) {
|
||||||
|
// The density value is stored in the XML file in the units of measure, but OR expects the density to be
|
||||||
|
// in SI units, so we need to convert it to SI units
|
||||||
|
Unit uomUnit = type.getORMaterialType().getUnitGroup().getUnit(getUom());
|
||||||
|
density = uomUnit.fromUnit(density);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,8 +20,7 @@ public enum MaterialTypeDTO {
|
|||||||
|
|
||||||
public static MaterialTypeDTO asDTO(Material.Type targetType) {
|
public static MaterialTypeDTO asDTO(Material.Type targetType) {
|
||||||
MaterialTypeDTO[] values = values();
|
MaterialTypeDTO[] values = values();
|
||||||
for (int i = 0; i < values.length; i++) {
|
for (MaterialTypeDTO value : values) {
|
||||||
MaterialTypeDTO value = values[i];
|
|
||||||
if (value.corollary.equals(targetType)) {
|
if (value.corollary.equals(targetType)) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -212,6 +212,7 @@ public class UnitGroup {
|
|||||||
|
|
||||||
UNITS_DENSITY_BULK = new UnitGroup();
|
UNITS_DENSITY_BULK = new UnitGroup();
|
||||||
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1000, "g/cm" + CUBED));
|
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1000, "g/cm" + CUBED));
|
||||||
|
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1000999, "kg/cm" + CUBED));
|
||||||
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1000, "kg/dm" + CUBED));
|
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1000, "kg/dm" + CUBED));
|
||||||
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1, "kg/m" + CUBED));
|
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1, "kg/m" + CUBED));
|
||||||
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1729.99404, "oz/in" + CUBED));
|
UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1729.99404, "oz/in" + CUBED));
|
||||||
@ -220,13 +221,18 @@ public class UnitGroup {
|
|||||||
UNITS_DENSITY_SURFACE = new UnitGroup();
|
UNITS_DENSITY_SURFACE = new UnitGroup();
|
||||||
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(10, "g/cm" + SQUARED));
|
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(10, "g/cm" + SQUARED));
|
||||||
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(0.001, "g/m" + SQUARED));
|
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(0.001, "g/m" + SQUARED));
|
||||||
|
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(10000, "kg/cm" + SQUARED));
|
||||||
|
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(100, "kg/dm" + SQUARED));
|
||||||
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(1, "kg/m" + SQUARED));
|
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(1, "kg/m" + SQUARED));
|
||||||
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(43.9418487, "oz/in" + SQUARED));
|
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(43.9418487, "oz/in" + SQUARED));
|
||||||
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(0.305151727, "oz/ft" + SQUARED));
|
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(0.305151727, "oz/ft" + SQUARED));
|
||||||
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(4.88242764, "lb/ft" + SQUARED));
|
UNITS_DENSITY_SURFACE.addUnit(new GeneralUnit(4.88242764, "lb/ft" + SQUARED));
|
||||||
|
|
||||||
UNITS_DENSITY_LINE = new UnitGroup();
|
UNITS_DENSITY_LINE = new UnitGroup();
|
||||||
|
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(0.1, "g/cm"));
|
||||||
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(0.001, "g/m"));
|
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(0.001, "g/m"));
|
||||||
|
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(100, "kg/cm"));
|
||||||
|
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(10, "kg/dm"));
|
||||||
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(1, "kg/m"));
|
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(1, "kg/m"));
|
||||||
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(0.0930102465, "oz/ft"));
|
UNITS_DENSITY_LINE.addUnit(new GeneralUnit(0.0930102465, "oz/ft"));
|
||||||
|
|
||||||
@ -428,7 +434,7 @@ public class UnitGroup {
|
|||||||
UNITS_ANGLE.setDefaultUnit(0);
|
UNITS_ANGLE.setDefaultUnit(0);
|
||||||
UNITS_DENSITY_BULK.setDefaultUnit(0);
|
UNITS_DENSITY_BULK.setDefaultUnit(0);
|
||||||
UNITS_DENSITY_SURFACE.setDefaultUnit(1);
|
UNITS_DENSITY_SURFACE.setDefaultUnit(1);
|
||||||
UNITS_DENSITY_LINE.setDefaultUnit(0);
|
UNITS_DENSITY_LINE.setDefaultUnit(1);
|
||||||
UNITS_FORCE.setDefaultUnit(0);
|
UNITS_FORCE.setDefaultUnit(0);
|
||||||
UNITS_IMPULSE.setDefaultUnit(0);
|
UNITS_IMPULSE.setDefaultUnit(0);
|
||||||
UNITS_TIME_STEP.setDefaultUnit(1);
|
UNITS_TIME_STEP.setDefaultUnit(1);
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 1aa03bb4a44a145f459939f487159a202dbf0f9f
|
Subproject commit 9da5f4e25f57e8ec476ea38cd91c78edff06003f
|
@ -6,13 +6,13 @@
|
|||||||
|
|
||||||
<Materials>
|
<Materials>
|
||||||
|
|
||||||
<Material UnitsOfMeasure="kg/m">
|
<Material UnitsOfMeasure="kg/m3">
|
||||||
<Name>Delrin</Name>
|
<Name>Delrin</Name>
|
||||||
<Density>1420</Density>
|
<Density>1420</Density>
|
||||||
<Type>BULK</Type>
|
<Type>BULK</Type>
|
||||||
</Material>
|
</Material>
|
||||||
|
|
||||||
<Material UnitsOfMeasure="kg/m">
|
<Material UnitsOfMeasure="kg/m3">
|
||||||
<Name>Nylon</Name>
|
<Name>Nylon</Name>
|
||||||
<Density>1150</Density>
|
<Density>1150</Density>
|
||||||
<Type>BULK</Type>
|
<Type>BULK</Type>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user