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.

This commit is contained in:
Kevin Ruland 2012-06-06 12:09:39 +00:00
parent 89ff888c27
commit 1a6b3e471b
6 changed files with 45 additions and 38 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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<Material> asDatabase(Material.Type theType) {
Database<Material> result = new Database<Material>();
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<Material> asDatabase(Material.Type theType) {
Database<Material> result = new Database<Material>();
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;
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}