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