Change MaterialDTO.asMaterial() to convert the current object into a Material object. It no longer attempts to look it up in the database.

This commit is contained in:
Kevin Ruland 2012-06-06 18:02:01 +00:00
parent 1c0f70806d
commit 00dfe40706
2 changed files with 25 additions and 8 deletions

View 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,18 +190,23 @@ public abstract class BaseComponentDTO {
}
}
// Don't have one, build one.
if ( "BULK".equals( dto.type ) ) {
return new Material.Bulk(dto.material, 0.0, true);
} else if ( "SURFACE".equals( dto.type ) ) {
return new Material.Surface(dto.material, 0.0, true);
} else if ( "LINE".equals( dto.type ) ) {
return new Material.Line(dto.material, 0.0, true);
} else {
return null;
// Don't have one, first check OR's database
Material m = Databases.findMaterial(dto.getORMaterialType(), dto.material);
if ( m != null ) {
return m;
}
switch( dto.getORMaterialType() ) {
case BULK:
return new Material.Bulk(dto.material, 0.0, true);
case SURFACE:
return new Material.Surface(dto.material, 0.0, true);
case LINE:
return new Material.Line(dto.material, 0.0, true);
}
return null;
}
static class AnnotatedMaterialDTO {
@ -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 {

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