package net.sf.openrocket.file.openrocket.savers;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import net.sf.openrocket.rocketcomponent.ReferenceType;
import net.sf.openrocket.rocketcomponent.Rocket;
public class RocketSaver extends RocketComponentSaver {
private static final RocketSaver instance = new RocketSaver();
public static ArrayList<String> getElements(net.sf.openrocket.rocketcomponent.RocketComponent c) {
ArrayList<String> list = new ArrayList<String>();
list.add("<rocket>");
instance.addParams(c, list);
list.add("</rocket>");
return list;
}
@Override
protected void addParams(net.sf.openrocket.rocketcomponent.RocketComponent c, List<String> elements) {
super.addParams(c, elements);
Rocket rocket = (Rocket) c;
if (rocket.getDesigner().length() > 0) {
elements.add("<designer>"
+ net.sf.openrocket.util.TextUtil.escapeXML(rocket.getDesigner())
+ "</designer>");
}
if (rocket.getRevision().length() > 0) {
elements.add("<revision>"
+ net.sf.openrocket.util.TextUtil.escapeXML(rocket.getRevision())
+ "</revision>");
}
// Motor configurations
String defId = rocket.getDefaultConfiguration().getFlightConfigurationID();
for (String id : rocket.getFlightConfigurationIDs()) {
if (id == null)
continue;
String str = "<motorconfiguration configid=\"" + id + "\"";
if (id.equals(defId))
str += " default=\"true\"";
if (rocket.getFlightConfigurationName(id).equals(Rocket.DEFAULT_NAME)) {
str += "/>";
} else {
str += "><name>" + net.sf.openrocket.util.TextUtil.escapeXML(rocket.getFlightConfigurationName(id))
+ "</name></motorconfiguration>";
}
elements.add(str);
}
// Reference diameter
elements.add("<referencetype>" + rocket.getReferenceType().name().toLowerCase(Locale.ENGLISH)
+ "</referencetype>");
if (rocket.getReferenceType() == ReferenceType.CUSTOM) {
elements.add("<customreference>" + rocket.getCustomReferenceLength()
+ "</customreference>");
}
}
}