package net.sf.openrocket.preset.loader; import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.preset.ComponentPresetFactory; import net.sf.openrocket.preset.InvalidComponentPresetException; import net.sf.openrocket.preset.TypedPropertyMap; import java.io.File; import java.util.ArrayList; import java.util.List; public abstract class BaseComponentLoader extends RocksimComponentFileLoader { List<ComponentPreset> presets; public BaseComponentLoader(MaterialHolder materials, File theBasePathToLoadFrom) { super(theBasePathToLoadFrom); presets = new ArrayList<ComponentPreset>(); fileColumns.add( new ManufacturerColumnParser() ); fileColumns.add( new StringColumnParser("Part No.", ComponentPreset.PARTNO)); fileColumns.add( new StringColumnParser("Desc.", ComponentPreset.DESCRIPTION)); fileColumns.add(new MaterialColumnParser(materials)); fileColumns.add(new MassColumnParser("Mass","Mass units")); } protected abstract ComponentPreset.Type getComponentPresetType(); public List<ComponentPreset> getPresets() { return presets; } @Override protected void postProcess(TypedPropertyMap props) { try { //Some Rocksim files don't contain description, so set it to the part no when not available. if (!props.containsKey(ComponentPreset.DESCRIPTION)) { props.put(ComponentPreset.DESCRIPTION, props.get(ComponentPreset.PARTNO)); } props.put(ComponentPreset.TYPE, getComponentPresetType()); ComponentPreset preset = ComponentPresetFactory.create(props); presets.add(preset); } catch ( InvalidComponentPresetException ex ) { System.err.println(ex.getMessage()); System.err.println(props); } } }