create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / file / rocksim / importt / AttachedPartsHandler.java
1 /*
2  * AttachedPartsHandler.java
3  */
4 package net.sf.openrocket.file.rocksim.importt;
5
6 import net.sf.openrocket.aerodynamics.WarningSet;
7 import net.sf.openrocket.file.rocksim.RocksimCommonConstants;
8 import net.sf.openrocket.file.simplesax.AbstractElementHandler;
9 import net.sf.openrocket.file.simplesax.ElementHandler;
10 import net.sf.openrocket.rocketcomponent.RocketComponent;
11
12 import java.util.HashMap;
13
14 /**
15  * A SAX handler for the Rocksim AttachedParts XML type.  
16  */
17 class AttachedPartsHandler extends AbstractElementHandler {
18     /** The parent component. */
19     private final RocketComponent component;
20
21     /**
22      * Constructor.
23      * 
24      * @param c  the parent
25      * 
26      * @throws IllegalArgumentException   thrown if <code>c</code> is null
27      */
28     public AttachedPartsHandler(RocketComponent c) throws IllegalArgumentException {
29         if (c == null) {
30             throw new IllegalArgumentException("The parent component of any attached part may not be null.");
31         }
32         component = c;
33     }
34
35     @Override
36     public ElementHandler openElement(String element, HashMap<String, String> attributes, WarningSet warnings) {
37         if (RocksimCommonConstants.FIN_SET.equals(element)) {
38             return new FinSetHandler(component);
39         }
40         if (RocksimCommonConstants.CUSTOM_FIN_SET.equals(element)) {
41             return new FinSetHandler(component);
42         }
43         if (RocksimCommonConstants.LAUNCH_LUG.equals(element)) {
44             return new LaunchLugHandler(component, warnings);
45         }
46         if (RocksimCommonConstants.PARACHUTE.equals(element)) {
47             return new ParachuteHandler(component, warnings);
48         }
49         if (RocksimCommonConstants.STREAMER.equals(element)) {
50             return new StreamerHandler(component, warnings);
51         }
52         if (RocksimCommonConstants.MASS_OBJECT.equals(element)) {
53             return new MassObjectHandler(component, warnings);
54         }
55         if (RocksimCommonConstants.RING.equals(element)) {
56             return new RingHandler(component, warnings);
57         }
58         if (RocksimCommonConstants.BODY_TUBE.equals(element)) {
59             return new InnerBodyTubeHandler(component, warnings);
60         }
61         if (RocksimCommonConstants.TRANSITION.equals(element)) {
62             return new TransitionHandler(component, warnings);
63         }
64         if (RocksimCommonConstants.TUBE_FIN_SET.equals(element)) {
65             warnings.add("Tube fins are not currently supported. Ignoring.");
66         }
67         if (RocksimCommonConstants.RING_TAIL.equals(element)) {
68             warnings.add("Ring tails are not currently supported. Ignoring.");
69         }
70         if (RocksimCommonConstants.EXTERNAL_POD.equals(element)) {
71             warnings.add("Pods are not currently supported. Ignoring.");
72         }
73         return null;
74     }
75 }
76