package net.sf.openrocket.file.openrocket.savers;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import net.sf.openrocket.rocketcomponent.DeploymentConfiguration;
import net.sf.openrocket.rocketcomponent.RecoveryDevice;
import net.sf.openrocket.rocketcomponent.Rocket;
public class RecoveryDeviceSaver extends MassObjectSaver {
@Override
protected void addParams(net.sf.openrocket.rocketcomponent.RocketComponent c, List<String> elements) {
super.addParams(c, elements);
RecoveryDevice dev = (RecoveryDevice) c;
if (dev.isCDAutomatic())
elements.add("<cd>auto</cd>");
else
elements.add("<cd>" + dev.getCD() + "</cd>");
elements.add(materialParam(dev.getMaterial()));
// NOTE: Default config must be BEFORE overridden config for proper backward compatibility later on
DeploymentConfiguration defaultConfig = dev.getDeploymentConfiguration().getDefault();
elements.addAll(deploymentConfiguration(defaultConfig, false));
Rocket rocket = c.getRocket();
// Note - getFlightConfigurationIDs returns at least one element. The first element
// is null and means "default".
String[] configs = rocket.getFlightConfigurationIDs();
if (configs.length > 1) {
for (String id : configs) {
if (id == null) {
continue;
}
if (dev.getDeploymentConfiguration().isDefault(id)) {
continue;
}
DeploymentConfiguration config = dev.getDeploymentConfiguration().get(id);
elements.add("<deploymentconfiguration configid=\"" + id + "\">");
elements.addAll(deploymentConfiguration(config, true));
elements.add("</deploymentconfiguration>");
}
}
}
private List<String> deploymentConfiguration(DeploymentConfiguration config, boolean indent) {
List<String> elements = new ArrayList<String>(3);
elements.add((indent ? " " : "") + "<deployevent>" + config.getDeployEvent().name().toLowerCase(Locale.ENGLISH).replace("_", "") + "</deployevent>");
elements.add((indent ? " " : "") + "<deployaltitude>" + config.getDeployAltitude() + "</deployaltitude>");
elements.add((indent ? " " : "") + "<deploydelay>" + config.getDeployDelay() + "</deploydelay>");
return elements;
}
}