Material localization support
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / MaterialHolder.java
index 3a8dbfaaed6e78ad70dfd13694d13f5dbb6ae53e..7ab176b8494d2ca536d90a5b9b9793dc6a2bf059 100644 (file)
@@ -7,20 +7,22 @@ import java.util.List;
 import java.util.Map;
 
 import net.sf.openrocket.database.Database;
+import net.sf.openrocket.database.Databases;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.unit.UnitGroup;
 
 public class MaterialHolder {
-
-       private final Map<String,Material.Bulk> bulkMaterials = new HashMap<String,Material.Bulk>();
-
-       private final Map<String,Material.Surface> surfaceMaterials = new HashMap<String,Material.Surface>();
-
-       private final Map<String, Material.Line> lineMaterials = new HashMap<String,Material.Line>();
-
-       public MaterialHolder() {}
        
-       public MaterialHolder( List<Material> materials ) {
+       private final Map<String, Material.Bulk> bulkMaterials = new HashMap<String, Material.Bulk>();
+       
+       private final Map<String, Material.Surface> surfaceMaterials = new HashMap<String, Material.Surface>();
+       
+       private final Map<String, Material.Line> lineMaterials = new HashMap<String, Material.Line>();
+       
+       public MaterialHolder() {
+       }
+       
+       public MaterialHolder(List<Material> materials) {
                if (materials == null) {
                        return;
                }
@@ -29,8 +31,8 @@ public class MaterialHolder {
                }
        }
        
-       public void put( Material material ) {
-               switch ( material.getType() ) {
+       public void put(Material material) {
+               switch (material.getType()) {
                case BULK:
                        bulkMaterials.put(material.getName(), (Material.Bulk) material);
                        break;
@@ -42,78 +44,78 @@ public class MaterialHolder {
                        break;
                }
        }
-
-       public Material getMaterial ( Material material ) {
-               switch ( material.getType() ) {
+       
+       public Material getMaterial(Material material) {
+               switch (material.getType()) {
                case BULK:
-                       return getBulkMaterial( (Material.Bulk)material );
+                       return getBulkMaterial((Material.Bulk) material);
                case SURFACE:
-                       return getSurfaceMaterial( (Material.Surface) material, null );
+                       return getSurfaceMaterial((Material.Surface) material, null);
                case LINE:
-                       return getLineMaterial( (Material.Line) material );
+                       return getLineMaterial((Material.Line) material);
                default:
                        return null;
                }
        }
-
-       public Material.Bulk getBulkMaterial( Material.Bulk material ) {
-               Material.Bulk m = bulkMaterials.get( material.getName() );
+       
+       public Material.Bulk getBulkMaterial(Material.Bulk material) {
+               Material.Bulk m = bulkMaterials.get(material.getName());
                return m;
        }
-
-       public Material.Surface getSurfaceMaterial( Material.Surface material, Double thickness ) {
-               Material.Surface m = surfaceMaterials.get(material.getName() );
-               if ( m != null ) {
+       
+       public Material.Surface getSurfaceMaterial(Material.Surface material, Double thickness) {
+               Material.Surface m = surfaceMaterials.get(material.getName());
+               if (m != null) {
                        return m;
                }
                // Try to see if we can convert a bulk material.
-               if ( thickness == null ) {
+               if (thickness == null) {
                        // if we have no thickness, there is nothing we can do
                        return null;
                }
                String thicknessName = UnitGroup.UNITS_LENGTH.getUnit("mm").toString(thickness);
                String convertedMaterialName = material.getName() + "(" + thicknessName + ")";
                m = surfaceMaterials.get(convertedMaterialName);
-               if ( m != null ) {
+               if (m != null) {
                        return m;
                }
-               Material.Bulk bulk = bulkMaterials.get(material.getName() );
-
-               if ( bulk == null ) {
+               Material.Bulk bulk = bulkMaterials.get(material.getName());
+               
+               if (bulk == null) {
                        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 = (Material.Surface) Material.newUserMaterial(Material.Type.SURFACE, convertedMaterialName, bulk.getDensity() * thickness);
-
+               
+               Material.Surface surface = (Material.Surface) Databases.findMaterial(Material.Type.SURFACE, convertedMaterialName, bulk.getDensity() * thickness);
+               
                this.put(surface);
-
+               
                return surface;
-
+               
        }
-
-       public Material.Line getLineMaterial( Material.Line material ) {
-               Material.Line m = lineMaterials.get( material.getName() );
+       
+       public Material.Line getLineMaterial(Material.Line material) {
+               Material.Line m = lineMaterials.get(material.getName());
                return m;
        }
-
+       
        public int size() {
                return bulkMaterials.size() + surfaceMaterials.size() + lineMaterials.size();
        }
-
+       
        public Collection<Material> values() {
-
+               
                HashSet<Material> allMats = new HashSet<Material>();
-               allMats.addAll( bulkMaterials.values() );
-               allMats.addAll( surfaceMaterials.values() );
-               allMats.addAll( lineMaterials.values() );
-
+               allMats.addAll(bulkMaterials.values());
+               allMats.addAll(surfaceMaterials.values());
+               allMats.addAll(lineMaterials.values());
+               
                return allMats;
-
+               
        }
-
+       
        public Database<Material> asDatabase(Material.Type theType) {
                Database<Material> result = new Database<Material>();
                switch (theType) {