Material localization support
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / MaterialLoader.java
index 394682803243b898e5e5858623cca022ffd73ff0..b7ef55b489c6718061d31b5351018276343dd94e 100644 (file)
@@ -1,61 +1,62 @@
 package net.sf.openrocket.preset.loader;
 
+import java.io.File;
+
+import net.sf.openrocket.database.Databases;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.preset.TypedKey;
 import net.sf.openrocket.preset.TypedPropertyMap;
 import net.sf.openrocket.util.BugException;
 
-import java.io.File;
-
 public class MaterialLoader extends RocksimComponentFileLoader {
-
+       
        private MaterialHolder materialMap = new MaterialHolder();
-
+       
        private final static TypedKey<String> MATERIALNAME = new TypedKey<String>("MaterialName", String.class);
        private final static TypedKey<String> UNITS = new TypedKey<String>("Units", String.class);
        private final static TypedKey<Double> DENSITY = new TypedKey<Double>("Density", Double.class);
-
+       
        public MaterialLoader(File theBasePathToLoadFrom) {
                super(theBasePathToLoadFrom);
-               fileColumns.add( new StringColumnParser("Material Name", MATERIALNAME) );
-               fileColumns.add( new StringColumnParser("Units", UNITS));
-               fileColumns.add( new DoubleColumnParser("Density", DENSITY));
+               fileColumns.add(new StringColumnParser("Material Name", MATERIALNAME));
+               fileColumns.add(new StringColumnParser("Units", UNITS));
+               fileColumns.add(new DoubleColumnParser("Density", DENSITY));
        }
-
+       
        @Override
        protected RocksimComponentFileType getFileType() {
                return RocksimComponentFileType.MATERIAL;
        }
-
+       
        public MaterialHolder getMaterialMap() {
                return materialMap;
        }
-
+       
        @Override
        protected void postProcess(TypedPropertyMap props) {
                String name = props.get(MATERIALNAME);
                String unit = props.get(UNITS);
                double density = props.get(DENSITY);
-
+               
                String cleanedMaterialName = stripAll(name, '"').trim();
-
-               if ( "g/cm".equals( unit ) ) {
-                       materialMap.put( Material.newUserMaterial(Material.Type.LINE,cleanedMaterialName, 0.1d * density));
-               } else if ( "g/cm2".equals(unit) ) {
-                       materialMap.put( Material.newUserMaterial(Material.Type.SURFACE,cleanedMaterialName, 10.0d * density));
-               } else if ( "g/cm3".equals(unit) ) {
-                       materialMap.put( Material.newUserMaterial(Material.Type.BULK,cleanedMaterialName, 1000.0d * density));
-               } else if ( "kg/m3".equals(unit) ) {
-                       materialMap.put( Material.newUserMaterial(Material.Type.BULK,cleanedMaterialName, density));
-               } else if ( "lb/ft3".equals(unit) ) {
-                       materialMap.put( Material.newUserMaterial(Material.Type.BULK,cleanedMaterialName, 16.0184634d * density));
-               } else if ( "oz/in".equals(unit) ) {
-                       materialMap.put( Material.newUserMaterial(Material.Type.LINE,cleanedMaterialName, 1.11612296d * density));
-               } else if ( "oz/in2".equals(unit ) ) {
-                       materialMap.put( Material.newUserMaterial(Material.Type.SURFACE,cleanedMaterialName, 43.94184876d * density));
+               
+               if ("g/cm".equals(unit)) {
+                       materialMap.put(Databases.findMaterial(Material.Type.LINE, cleanedMaterialName, 0.1d * density));
+               } else if ("g/cm2".equals(unit)) {
+                       materialMap.put(Databases.findMaterial(Material.Type.SURFACE, cleanedMaterialName, 10.0d * density));
+               } else if ("g/cm3".equals(unit)) {
+                       materialMap.put(Databases.findMaterial(Material.Type.BULK, cleanedMaterialName, 1000.0d * density));
+               } else if ("kg/m3".equals(unit)) {
+                       materialMap.put(Databases.findMaterial(Material.Type.BULK, cleanedMaterialName, density));
+               } else if ("lb/ft3".equals(unit)) {
+                       materialMap.put(Databases.findMaterial(Material.Type.BULK, cleanedMaterialName, 16.0184634d * density));
+               } else if ("oz/in".equals(unit)) {
+                       materialMap.put(Databases.findMaterial(Material.Type.LINE, cleanedMaterialName, 1.11612296d * density));
+               } else if ("oz/in2".equals(unit)) {
+                       materialMap.put(Databases.findMaterial(Material.Type.SURFACE, cleanedMaterialName, 43.94184876d * density));
                } else {
                        throw new BugException("Unknown unit in Materials file: " + unit);
                }
        }
-
+       
 }
\ No newline at end of file