import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import net.sf.openrocket.database.Database;
private final Map<String, Material.Line> lineMaterials = new HashMap<String,Material.Line>();
+ public MaterialHolder() {}
+
+ public MaterialHolder( List<Material> materials ) {
+ if (materials == null) {
+ return;
+ }
+ for (Material material : materials) {
+ this.put(material);
+ }
+ }
+
public void put( Material material ) {
switch ( material.getType() ) {
case BULK:
}
}
+ 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 ) {
// 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 + ")";
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,
// we can make our own surface material.
- Material.Surface surface = new Material.Surface( convertedMaterialName, bulk.getDensity() * thickness , true);
+ Material.Surface surface = (Material.Surface) Material.newUserMaterial(Material.Type.SURFACE, convertedMaterialName, bulk.getDensity() * thickness);
this.put(surface);
public Material.Line getLineMaterial( Material.Line material ) {
Material.Line m = lineMaterials.get( material.getName() );
- return (m==null) ? material : m;
+ return m;
}
public int size() {
}
- 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;
+ }
}