1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  package ca.uhn.hl7v2.testpanel.model.conf;
27  
28  import java.util.ArrayList;
29  import java.util.List;
30  
31  import ca.uhn.hl7v2.HL7Exception;
32  import ca.uhn.hl7v2.Location;
33  import ca.uhn.hl7v2.conf.spec.message.AbstractComponent;
34  import ca.uhn.hl7v2.model.AbstractType;
35  import ca.uhn.hl7v2.model.Composite;
36  import ca.uhn.hl7v2.model.DataTypeException;
37  import ca.uhn.hl7v2.model.ExtraComponents;
38  import ca.uhn.hl7v2.model.MessageVisitor;
39  import ca.uhn.hl7v2.model.Type;
40  import ca.uhn.hl7v2.model.Varies;
41  
42  
43  public class ConformanceComposite extends AbstractType implements Composite, ConformanceType<ConformanceComposite> {
44  
45  	private List<Type> myChildren = new ArrayList<Type>();
46  	private List<String> myName = new ArrayList<String>();
47  	private AbstractComponent myConfDefinition;
48  
49  	
50  
51  
52  	public ConformanceComposite(ConformanceMessage theMessage, AbstractComponent theConfDefinition) {
53  		super(theMessage);
54  		
55  		myConfDefinition = theConfDefinition;
56  	}
57  
58  	
59  
60  
61  	public AbstractComponent getConfDefinition() {
62  		return myConfDefinition;
63  	}
64  
65  	
66  
67  
68  	void addChild(ConformanceType<? extends Type> theChild, String theName) {
69  		myChildren.add(theChild);
70  		myName.add(theName);
71  	}
72  	
73  	@Override
74  	public ConformanceMessage getMessage() {
75  		return (ConformanceMessage) super.getMessage();
76  	}
77  
78  	
79  
80  
81  	public Type getComponent(int theNumber) throws DataTypeException {
82  		return myChildren.get(theNumber);
83  	}
84  
85  	
86  
87  
88  	public Type[] getComponents() {
89  		return myChildren.toArray(new Type[myChildren.size()]);
90  	}
91  
92  	
93  
94  
95  	@Override
96  	public String getName() {
97  		return myConfDefinition.getDatatype();
98  	}
99  
100 	
101 
102 
103 	public String getName(int theNumber) {
104 		return myName.get(theNumber);
105 	}
106 
107 	
108 
109 
110 	public ConformanceComposite instantiateClone() {
111 		ConformanceComposite retVal = new ConformanceComposite((ConformanceMessage) getMessage(), myConfDefinition);
112 		
113 		int index = 0;
114 		for (Type next : myChildren) {
115 			ConformanceType<? extends Type> nextCtype = (ConformanceType<?>)next;
116 			ConformanceType<?> clone = nextCtype.instantiateClone();
117 			retVal.addChild(clone, myName.get(index));
118 			
119 			index++;
120 		}
121 		
122 		return retVal;
123 	}
124 
125     public boolean accept(MessageVisitor visitor, Location location) throws HL7Exception {
126     	throw new UnsupportedOperationException();
127     }
128 
129 }