X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fpreset%2Fxml%2FBaseComponentDTO.java;h=b39bc23ec4245a2cb3cb07e3e1d9be36d58a903e;hb=4da92a4e994992a78d62a7ca21c88d6c41292d6f;hp=c9278ecff6d8fa32b867d66f43bb3679feb4290e;hpb=3454e44e12e7a68889dedf72b7cfaef8880cce64;p=debian%2Fopenrocket diff --git a/core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java b/core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java index c9278ecf..b39bc23e 100644 --- a/core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java +++ b/core/src/net/sf/openrocket/preset/xml/BaseComponentDTO.java @@ -76,6 +76,9 @@ public abstract class BaseComponentDTO { if ( preset.has(ComponentPreset.FILLED) ) { setFilled( preset.get(ComponentPreset.FILLED)); } + if (preset.has(ComponentPreset.IMAGE) ) { + setImageData(preset.get(ComponentPreset.IMAGE)); + } } public String getManufacturer() { @@ -171,6 +174,9 @@ public abstract class BaseComponentDTO { if ( filled != null ) { props.put(ComponentPreset.FILLED, getFilled()); } + if (image != null) { + props.put(ComponentPreset.IMAGE, image); + } } protected Material find(List materialList, AnnotatedMaterialDTO dto) { @@ -184,18 +190,14 @@ 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; + } + + return Material.newUserMaterial(dto.getORMaterialType(), dto.material, 0.0); - 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; - } - } static class AnnotatedMaterialDTO { @@ -210,6 +212,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 { @@ -247,6 +260,7 @@ public abstract class BaseComponentDTO { } static class Base64Adapter extends XmlAdapter { + @Override public byte[] unmarshal(String s) { if (s == null) { return null; @@ -254,6 +268,7 @@ public abstract class BaseComponentDTO { return DatatypeConverter.parseBase64Binary(s); } + @Override public String marshal(byte[] bytes) { if (bytes == null) { return null;