if ( preset.has(ComponentPreset.FILLED) ) {
setFilled( preset.get(ComponentPreset.FILLED));
}
+ if (preset.has(ComponentPreset.IMAGE) ) {
+ setImageData(preset.get(ComponentPreset.IMAGE));
+ }
}
public String getManufacturer() {
if ( filled != null ) {
props.put(ComponentPreset.FILLED, getFilled());
}
+ if (image != null) {
+ props.put(ComponentPreset.IMAGE, image);
+ }
}
- private Material find(List<MaterialDTO> materialList, AnnotatedMaterialDTO dto) {
+ protected Material find(List<MaterialDTO> materialList, AnnotatedMaterialDTO dto) {
+ if ( dto == null ) {
+ return null;
+ }
for (int i = 0; i < materialList.size(); i++) {
MaterialDTO materialDTO = materialList.get(i);
if (materialDTO.getType().name().equals(dto.type) && materialDTO.getName().equals(dto.material)) {
return materialDTO.asMaterial();
}
}
- //Otherwise fallback and look at factory default materials.
- return Databases.findMaterial(Material.Type.valueOf(material.type), material.material);
+
+ // 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);
+
}
static class AnnotatedMaterialDTO {
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 {
}
static class Base64Adapter extends XmlAdapter<String, byte[]> {
+ @Override
public byte[] unmarshal(String s) {
if (s == null) {
return null;
return DatatypeConverter.parseBase64Binary(s);
}
+ @Override
public String marshal(byte[] bytes) {
if (bytes == null) {
return null;