From: kruland2607 Date: Wed, 6 Jun 2012 12:09:39 +0000 (+0000) Subject: Change the semantics of MaterialHolder.getXXXMaterial( Material ), instead of returni... X-Git-Tag: upstream/12.09^2~197 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=f6b4a80afecb2f2996037cfc94631f3b55ef6f3d;p=debian%2Fopenrocket 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. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@761 180e2498-e6e9-4542-8430-84ac67f01cd8 --- diff --git a/core/src/net/sf/openrocket/preset/loader/LineMaterialColumnParser.java b/core/src/net/sf/openrocket/preset/loader/LineMaterialColumnParser.java index 009619c5..4e4bc683 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 76bd5722..74a6679e 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 1e0f1ed2..52d5a931 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 ea132f98..4f53e40e 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 652b2d42..403ea0f6 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 2dad9f0a..b761e9b2 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); }