View Javadoc
1   /**
2    * The contents of this file are subject to the Mozilla Public License Version 1.1
3    * (the "License"); you may not use this file except in compliance with the License.
4    * You may obtain a copy of the License at http://www.mozilla.org/MPL/
5    * Software distributed under the License is distributed on an "AS IS" basis,
6    * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the
7    * specific language governing rights and limitations under the License.
8    *
9    * The Original Code is ""  Description:
10   * ""
11   *
12   * The Initial Developer of the Original Code is University Health Network. Copyright (C)
13   * 2001.  All Rights Reserved.
14   *
15   * Contributor(s): ______________________________________.
16   *
17   * Alternatively, the contents of this file may be used under the terms of the
18   * GNU General Public License (the  "GPL"), in which case the provisions of the GPL are
19   * applicable instead of those above.  If you wish to allow use of your version of this
20   * file only under the terms of the GPL and not to allow others to use your version
21   * of this file under the MPL, indicate your decision by deleting  the provisions above
22   * and replace  them with the notice and other provisions required by the GPL License.
23   * If you do not delete the provisions above, a recipient may use your version of
24   * this file under either the MPL or the GPL.
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  	 * Constructor
51  	 */
52  	public ConformanceComposite(ConformanceMessage theMessage, AbstractComponent theConfDefinition) {
53  		super(theMessage);
54  		
55  		myConfDefinition = theConfDefinition;
56  	}
57  
58  	/**
59  	 * @return the confDefinition
60  	 */
61  	public AbstractComponent getConfDefinition() {
62  		return myConfDefinition;
63  	}
64  
65  	/**
66  	 * Internal method for adding a child definition
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  	 * {@inheritDoc}
80  	 */
81  	public Type getComponent(int theNumber) throws DataTypeException {
82  		return myChildren.get(theNumber);
83  	}
84  
85  	/**
86  	 * {@inheritDoc}
87  	 */
88  	public Type[] getComponents() {
89  		return myChildren.toArray(new Type[myChildren.size()]);
90  	}
91  
92  	/**
93  	 * {@inheritDoc}
94  	 */
95  	@Override
96  	public String getName() {
97  		return myConfDefinition.getDatatype();
98  	}
99  
100 	/**
101 	 * Returns the name of the given child
102 	 */
103 	public String getName(int theNumber) {
104 		return myName.get(theNumber);
105 	}
106 
107 	/**
108 	 * {@inheritDoc}
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 }