From 62408659e7ab5cf73bce0038d8fb918b3a93afac Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Wed, 6 Jun 2012 18:02:01 +0000 Subject: [PATCH] Change MaterialDTO.asMaterial() to convert the current object into a Material object. It no longer attempts to look it up in the database. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@766 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../preset/xml/BaseComponentDTO.java | 31 ++++++++++++++----- .../sf/openrocket/preset/xml/MaterialDTO.java | 2 +- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java b/core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java index 9f49d948..52029304 100644 --- a/core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java +++ b/core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java @@ -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 { diff --git a/core/src/net/sf/openrocket/preset/xml/MaterialDTO.java b/core/src/net/sf/openrocket/preset/xml/MaterialDTO.java index 5d38be8f..6bfbe4c6 100644 --- a/core/src/net/sf/openrocket/preset/xml/MaterialDTO.java +++ b/core/src/net/sf/openrocket/preset/xml/MaterialDTO.java @@ -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); } -- 2.47.2