create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / file / openrocket / savers / TransitionSaver.java
1 package net.sf.openrocket.file.openrocket.savers;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.Locale;
6
7 import net.sf.openrocket.rocketcomponent.NoseCone;
8 import net.sf.openrocket.rocketcomponent.Transition;
9
10
11 public class TransitionSaver extends SymmetricComponentSaver {
12         
13         private static final TransitionSaver instance = new TransitionSaver();
14         
15         public static ArrayList<String> getElements(net.sf.openrocket.rocketcomponent.RocketComponent c) {
16                 ArrayList<String> list = new ArrayList<String>();
17                 
18                 list.add("<transition>");
19                 instance.addParams(c, list);
20                 list.add("</transition>");
21                 
22                 return list;
23         }
24         
25         
26         /*
27          * Note:  This method must be capable of handling nose cones as well.
28          */
29         @Override
30         protected void addParams(net.sf.openrocket.rocketcomponent.RocketComponent c, List<String> elements) {
31                 super.addParams(c, elements);
32                 net.sf.openrocket.rocketcomponent.Transition trans = (net.sf.openrocket.rocketcomponent.Transition) c;
33                 boolean nosecone = (trans instanceof NoseCone);
34                 
35                 
36                 Transition.Shape shape = trans.getType();
37                 elements.add("<shape>" + shape.name().toLowerCase(Locale.ENGLISH) + "</shape>");
38                 if (shape.isClippable()) {
39                         elements.add("<shapeclipped>" + trans.isClipped() + "</shapeclipped>");
40                 }
41                 if (shape.usesParameter()) {
42                         elements.add("<shapeparameter>" + trans.getShapeParameter() + "</shapeparameter>");
43                 }
44                 
45                 
46                 if (!nosecone) {
47                         if (trans.isForeRadiusAutomatic())
48                                 elements.add("<foreradius>auto</foreradius>");
49                         else
50                                 elements.add("<foreradius>" + trans.getForeRadius() + "</foreradius>");
51                 }
52                 
53                 if (trans.isAftRadiusAutomatic())
54                         elements.add("<aftradius>auto</aftradius>");
55                 else
56                         elements.add("<aftradius>" + trans.getAftRadius() + "</aftradius>");
57                 
58                 
59                 if (!nosecone) {
60                         elements.add("<foreshoulderradius>" + trans.getForeShoulderRadius()
61                                         + "</foreshoulderradius>");
62                         elements.add("<foreshoulderlength>" + trans.getForeShoulderLength()
63                                         + "</foreshoulderlength>");
64                         elements.add("<foreshoulderthickness>" + trans.getForeShoulderThickness()
65                                         + "</foreshoulderthickness>");
66                         elements.add("<foreshouldercapped>" + trans.isForeShoulderCapped()
67                                         + "</foreshouldercapped>");
68                 }
69                 
70                 elements.add("<aftshoulderradius>" + trans.getAftShoulderRadius()
71                                 + "</aftshoulderradius>");
72                 elements.add("<aftshoulderlength>" + trans.getAftShoulderLength()
73                                 + "</aftshoulderlength>");
74                 elements.add("<aftshoulderthickness>" + trans.getAftShoulderThickness()
75                                 + "</aftshoulderthickness>");
76                 elements.add("<aftshouldercapped>" + trans.isAftShoulderCapped()
77                                 + "</aftshouldercapped>");
78         }
79         
80 }