create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / MaterialColumnParser.java
index c6ef8c5fa0cd4529d7da73244f314dd9cd5a2764..2d559bb747e1a92496ef30dde29cf4696bb3933e 100644 (file)
@@ -1,31 +1,39 @@
 package net.sf.openrocket.preset.loader;
 
-import java.util.Collections;
-import java.util.Map;
-
+import net.sf.openrocket.database.Databases;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.preset.ComponentPreset;
+import net.sf.openrocket.preset.TypedKey;
 import net.sf.openrocket.preset.TypedPropertyMap;
 
 public class MaterialColumnParser extends BaseColumnParser {
-
-       private Map<String,Material> materialMap = Collections.<String,Material>emptyMap();
        
-       // FIXME - BULK vs other types.
+       private final MaterialHolder materialMap;
        
-       public MaterialColumnParser(Map<String,Material> materialMap) {
-               super("Material");
+       private final TypedKey<Material> param;
+       
+       public MaterialColumnParser(MaterialHolder materialMap, String columnName, TypedKey<Material> param) {
+               super(columnName);
+               this.param = param;
+               this.materialMap = materialMap;
        }
-
+       
+       public MaterialColumnParser(MaterialHolder materialMap) {
+               this(materialMap, "Material", ComponentPreset.MATERIAL);
+       }
+       
+       
        @Override
        protected void doParse(String columnData, String[] data, TypedPropertyMap props) {
-
-               Material m = materialMap.get(columnData);
-               if ( m == null ) {
-                       m = new Material.Bulk(columnData, 0.0, true);
+               
+               if (columnData == null || "".equals(columnData.trim())) {
+                       return;
                }
-               props.put(ComponentPreset.MATERIAL, m);
+               
+               Material.Bulk tmpMaterial = (Material.Bulk) Databases.findMaterial(Material.Type.BULK, columnData, 0.0);
+               Material.Bulk m = materialMap.getBulkMaterial(tmpMaterial);
+               props.put(param, m != null ? m : tmpMaterial);
                
        }
-
+       
 }