diff --git a/core/src/net/sf/openrocket/preset/loader/LineMaterialColumnParser.java b/core/src/net/sf/openrocket/preset/loader/LineMaterialColumnParser.java index 009619c53..4e4bc6835 100644 --- a/core/src/net/sf/openrocket/preset/loader/LineMaterialColumnParser.java +++ b/core/src/net/sf/openrocket/preset/loader/LineMaterialColumnParser.java @@ -1,8 +1,5 @@ package net.sf.openrocket.preset.loader; -import java.util.Collections; -import java.util.Map; - import net.sf.openrocket.material.Material; import net.sf.openrocket.preset.TypedKey; import net.sf.openrocket.preset.TypedPropertyMap; @@ -29,8 +26,8 @@ public class LineMaterialColumnParser extends BaseColumnParser { Material.Line myMaterial = new Material.Line(columnData, 0.0, true); - myMaterial = materialMap.getLineMaterial(myMaterial); - props.put(param, myMaterial); + Material.Line m = materialMap.getLineMaterial(myMaterial); + props.put(param, m!=null? m : myMaterial); } diff --git a/core/src/net/sf/openrocket/preset/loader/MaterialColumnParser.java b/core/src/net/sf/openrocket/preset/loader/MaterialColumnParser.java index 76bd57228..74a6679e1 100644 --- a/core/src/net/sf/openrocket/preset/loader/MaterialColumnParser.java +++ b/core/src/net/sf/openrocket/preset/loader/MaterialColumnParser.java @@ -1,8 +1,5 @@ package net.sf.openrocket.preset.loader; -import java.util.Collections; -import java.util.Map; - import net.sf.openrocket.material.Material; import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.preset.TypedKey; @@ -32,9 +29,9 @@ public class MaterialColumnParser extends BaseColumnParser { return; } - Material.Bulk m = new Material.Bulk(columnData, 0.0, true); - m = materialMap.getBulkMaterial(m); - props.put(param, m); + Material.Bulk tmpMaterial = new Material.Bulk(columnData, 0.0, true); + Material.Bulk m = materialMap.getBulkMaterial(tmpMaterial); + props.put(param, m!= null ? m : tmpMaterial); } diff --git a/core/src/net/sf/openrocket/preset/loader/MaterialHolder.java b/core/src/net/sf/openrocket/preset/loader/MaterialHolder.java index 1e0f1ed21..52d5a9316 100644 --- a/core/src/net/sf/openrocket/preset/loader/MaterialHolder.java +++ b/core/src/net/sf/openrocket/preset/loader/MaterialHolder.java @@ -31,9 +31,22 @@ public class MaterialHolder { } } + public Material getMaterial ( Material material ) { + switch ( material.getType() ) { + case BULK: + return getBulkMaterial( (Material.Bulk)material ); + case SURFACE: + return getSurfaceMaterial( (Material.Surface) material, null ); + case LINE: + return getLineMaterial( (Material.Line) material ); + default: + return null; + } + } + public Material.Bulk getBulkMaterial( Material.Bulk material ) { Material.Bulk m = bulkMaterials.get( material.getName() ); - return (m==null) ? material : m; + return m; } public Material.Surface getSurfaceMaterial( Material.Surface material, Double thickness ) { @@ -44,7 +57,7 @@ public class MaterialHolder { // Try to see if we can convert a bulk material. if ( thickness == null ) { // if we have no thickness, there is nothing we can do - return material; + return null; } String thicknessName = UnitGroup.UNITS_LENGTH.getUnit("mm").toString(thickness); String convertedMaterialName = material.getName() + "(" + thicknessName + ")"; @@ -55,7 +68,7 @@ public class MaterialHolder { Material.Bulk bulk = bulkMaterials.get(material.getName() ); if ( bulk == null ) { - return material; + return null; } // Ok, now we have a thickness and a bulk material of the correct name, @@ -71,7 +84,7 @@ public class MaterialHolder { public Material.Line getLineMaterial( Material.Line material ) { Material.Line m = lineMaterials.get( material.getName() ); - return (m==null) ? material : m; + return m; } public int size() { @@ -89,19 +102,19 @@ public class MaterialHolder { } - public Database asDatabase(Material.Type theType) { - Database result = new Database(); - switch (theType) { - case LINE: - result.addAll(lineMaterials.values()); - break; - case SURFACE: - result.addAll(surfaceMaterials.values()); - break; - case BULK: - default: - result.addAll(bulkMaterials.values()); - } - return result; - } + public Database asDatabase(Material.Type theType) { + Database result = new Database(); + switch (theType) { + case LINE: + result.addAll(lineMaterials.values()); + break; + case SURFACE: + result.addAll(surfaceMaterials.values()); + break; + case BULK: + default: + result.addAll(bulkMaterials.values()); + } + return result; + } } diff --git a/core/src/net/sf/openrocket/preset/loader/ParachuteLoader.java b/core/src/net/sf/openrocket/preset/loader/ParachuteLoader.java index ea132f98e..4f53e40ee 100644 --- a/core/src/net/sf/openrocket/preset/loader/ParachuteLoader.java +++ b/core/src/net/sf/openrocket/preset/loader/ParachuteLoader.java @@ -42,10 +42,10 @@ public class ParachuteLoader extends BaseComponentLoader { // Fix the material since some files use bulk materials for streamers. Double thickness = props.get( ComponentPreset.THICKNESS ); - Material.Surface material = (Material.Surface) props.get( ComponentPreset.MATERIAL ); + Material.Surface myMaterial = (Material.Surface) props.get( ComponentPreset.MATERIAL ); - material = materials.getSurfaceMaterial(material, thickness); - props.put(ComponentPreset.MATERIAL, material); + Material.Surface m = materials.getSurfaceMaterial(myMaterial, thickness); + props.put(ComponentPreset.MATERIAL, m!=null ? m : myMaterial); } } diff --git a/core/src/net/sf/openrocket/preset/loader/StreamerLoader.java b/core/src/net/sf/openrocket/preset/loader/StreamerLoader.java index 652b2d42f..403ea0f6e 100644 --- a/core/src/net/sf/openrocket/preset/loader/StreamerLoader.java +++ b/core/src/net/sf/openrocket/preset/loader/StreamerLoader.java @@ -49,11 +49,11 @@ public class StreamerLoader extends BaseComponentLoader { // Fix the material since some files use bulk materials for streamers. Double thickness = props.get( ComponentPreset.THICKNESS ); - Material.Surface material = (Material.Surface) props.get( ComponentPreset.MATERIAL ); + Material.Surface myMaterial = (Material.Surface) props.get( ComponentPreset.MATERIAL ); - material = materials.getSurfaceMaterial(material, thickness); + Material.Surface m = materials.getSurfaceMaterial(myMaterial, thickness); - props.put(ComponentPreset.MATERIAL, material); + props.put(ComponentPreset.MATERIAL, m!=null? m : myMaterial); } } diff --git a/core/src/net/sf/openrocket/preset/loader/SurfaceMaterialColumnParser.java b/core/src/net/sf/openrocket/preset/loader/SurfaceMaterialColumnParser.java index 2dad9f0a8..b761e9b2a 100644 --- a/core/src/net/sf/openrocket/preset/loader/SurfaceMaterialColumnParser.java +++ b/core/src/net/sf/openrocket/preset/loader/SurfaceMaterialColumnParser.java @@ -25,8 +25,8 @@ public class SurfaceMaterialColumnParser extends BaseColumnParser { } Material.Surface myMaterial = new Material.Surface(columnData, 0.0, true); - myMaterial = materialMap.getSurfaceMaterial(myMaterial, null); - props.put(param, myMaterial); + Material.Surface m = materialMap.getSurfaceMaterial(myMaterial, null); + props.put(param, m!=null ? m : myMaterial); }