Change MaterialDTO.asMaterial() to convert the current object into a Material object...
authorkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Wed, 6 Jun 2012 18:02:01 +0000 (18:02 +0000)
committerkruland2607 <kruland2607@180e2498-e6e9-4542-8430-84ac67f01cd8>
Wed, 6 Jun 2012 18:02:01 +0000 (18:02 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@766 180e2498-e6e9-4542-8430-84ac67f01cd8

core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java
core/src/net/sf/openrocket/preset/xml/MaterialDTO.java

index 9f49d9482cbd2b01ef97764a33f42fe5cf290de4..52029304989ba691213486cd5d3610922808a79b 100644 (file)
@@ -1,6 +1,7 @@
 
 package net.sf.openrocket.preset.xml;
 
+import net.sf.openrocket.database.Databases;
 import net.sf.openrocket.material.Material;
 import net.sf.openrocket.motor.Manufacturer;
 import net.sf.openrocket.preset.ComponentPreset;
@@ -189,17 +190,22 @@ public abstract class BaseComponentDTO {
                        }
                }
 
-               // Don't have one, build one.
+               // Don't have one, first check OR's database
+        Material m = Databases.findMaterial(dto.getORMaterialType(), dto.material);
+        if ( m != null ) {
+               return m;
+        }
 
-               if ( "BULK".equals( dto.type ) ) {
+        switch( dto.getORMaterialType() ) {
+        case BULK:
                        return new Material.Bulk(dto.material, 0.0, true);
-               } else if ( "SURFACE".equals( dto.type ) ) {
+        case SURFACE:
                        return new Material.Surface(dto.material, 0.0, true);
-               } else if ( "LINE".equals( dto.type ) ) {
+        case LINE:
                        return new Material.Line(dto.material, 0.0, true);
-               } else {
-                       return null;
-               }
+        }
+        
+        return null;
 
        }
 
@@ -215,6 +221,17 @@ public abstract class BaseComponentDTO {
                        type = theMaterial.getType().name();
                        material = theMaterial.getName();
                }
+               
+               public Material.Type getORMaterialType() {
+                       if ( "BULK".equals(type) ) {
+                               return Material.Type.BULK;
+                       } else if ( "SURFACE".equals(type) ) {
+                               return Material.Type.SURFACE;
+                       } else if ( "LINE".equals(type) ) {
+                               return Material.Type.LINE;
+                       }
+                       throw new IllegalArgumentException( "Inavlid material type " + type +" specified for Component" );
+               }
        }
 
        static class AnnotatedLengthDTO {
index 5d38be8f68ac2792c092e9ecadebbed1122dd51b..6bfbe4c659fdc1a0f124d0bb4d0dc9a9e2d43b3d 100644 (file)
@@ -80,7 +80,7 @@ public class MaterialDTO {
     }
 
     Material asMaterial() {
-        return Databases.findMaterial(type.getORMaterialType(), name, density, false);
+        return Material.newMaterial(type.getORMaterialType(), name, density, true);
     }