From 1a6b3e471bdae0ba7466f73dac59c3abf26a47d9 Mon Sep 17 00:00:00 2001 From: Kevin Ruland Date: Wed, 6 Jun 2012 12:09:39 +0000 Subject: [PATCH] Change the semantics of MaterialHolder.getXXXMaterial( Material ), instead of returning the material used as the argument if the material is not in the map, it returns null. This make the methods more similar to standard hash collections. --- .../loader/LineMaterialColumnParser.java | 7 +-- .../preset/loader/MaterialColumnParser.java | 9 ++-- .../preset/loader/MaterialHolder.java | 51 ++++++++++++------- .../preset/loader/ParachuteLoader.java | 6 +-- .../preset/loader/StreamerLoader.java | 6 +-- .../loader/SurfaceMaterialColumnParser.java | 4 +- 6 files changed, 45 insertions(+), 38 deletions(-) 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); }