001package ca.uhn.hl7v2.model; 002 003import java.util.ArrayList; 004import java.util.List; 005 006/** 007 * An unspecified Composite datatype that has an undefined number of components, each 008 * of which is a Varies. 009 * This is used to store Varies data, when the data type is unknown. It is also 010 * used to store unrecognized message constituents. 011 * @author Bryan Tripp 012 */ 013@SuppressWarnings("serial") 014public class GenericComposite extends AbstractComposite { 015 016 private List<Type> components; 017 private Message message; 018 019 /** Creates a new instance of GenericComposite */ 020 public GenericComposite(Message message) { 021 super(message); 022 this.message = message; 023 components = new ArrayList<Type>(20); 024 } 025 026 /** 027 * Returns the single component of this composite at the specified position (starting at 0) - 028 * Creates it (and any nonexistent components before it) if necessary. 029 */ 030 public Type getComponent(int number) throws DataTypeException { 031 for (int i = components.size(); i <= number; i++) { 032 components.add(new Varies(message)); 033 } 034 return components.get(number); 035 } 036 037 /** 038 * Returns an array containing the components of this field. 039 */ 040 public Type[] getComponents() { 041 return components.toArray(new Type[components.size()]); 042 } 043 044 /** Returns the name of the type (used in XML encoding and profile checking) */ 045 public String getName() { 046 return "UNKNOWN"; 047 } 048 049 050}