package net.sf.openrocket.file.openrocket.savers;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import net.sf.openrocket.rocketcomponent.NoseCone;
import net.sf.openrocket.rocketcomponent.Transition;
public class TransitionSaver extends SymmetricComponentSaver {
private static final TransitionSaver instance = new TransitionSaver();
public static ArrayList<String> getElements(net.sf.openrocket.rocketcomponent.RocketComponent c) {
ArrayList<String> list = new ArrayList<String>();
list.add("<transition>");
instance.addParams(c, list);
list.add("</transition>");
return list;
}
/*
* Note: This method must be capable of handling nose cones as well.
*/
@Override
protected void addParams(net.sf.openrocket.rocketcomponent.RocketComponent c, List<String> elements) {
super.addParams(c, elements);
net.sf.openrocket.rocketcomponent.Transition trans = (net.sf.openrocket.rocketcomponent.Transition) c;
boolean nosecone = (trans instanceof NoseCone);
Transition.Shape shape = trans.getType();
elements.add("<shape>" + shape.name().toLowerCase(Locale.ENGLISH) + "</shape>");
if (shape.isClippable()) {
elements.add("<shapeclipped>" + trans.isClipped() + "</shapeclipped>");
}
if (shape.usesParameter()) {
elements.add("<shapeparameter>" + trans.getShapeParameter() + "</shapeparameter>");
}
if (!nosecone) {
if (trans.isForeRadiusAutomatic())
elements.add("<foreradius>auto</foreradius>");
else
elements.add("<foreradius>" + trans.getForeRadius() + "</foreradius>");
}
if (trans.isAftRadiusAutomatic())
elements.add("<aftradius>auto</aftradius>");
else
elements.add("<aftradius>" + trans.getAftRadius() + "</aftradius>");
if (!nosecone) {
elements.add("<foreshoulderradius>" + trans.getForeShoulderRadius()
+ "</foreshoulderradius>");
elements.add("<foreshoulderlength>" + trans.getForeShoulderLength()
+ "</foreshoulderlength>");
elements.add("<foreshoulderthickness>" + trans.getForeShoulderThickness()
+ "</foreshoulderthickness>");
elements.add("<foreshouldercapped>" + trans.isForeShoulderCapped()
+ "</foreshouldercapped>");
}
elements.add("<aftshoulderradius>" + trans.getAftShoulderRadius()
+ "</aftshoulderradius>");
elements.add("<aftshoulderlength>" + trans.getAftShoulderLength()
+ "</aftshoulderlength>");
elements.add("<aftshoulderthickness>" + trans.getAftShoulderThickness()
+ "</aftshoulderthickness>");
elements.add("<aftshouldercapped>" + trans.isAftShoulderCapped()
+ "</aftshouldercapped>");
}
}