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 "Field.java". Description: 10 * Auxilliary model class encapsulating field repetitions and substructures 11 * 12 * The Initial Developer of the Original Code is University Health Network. Copyright (C) 13 * 2001-2013. 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 */ 27 package ca.uhn.hl7v2.model; 28 29 import ca.uhn.hl7v2.HL7Exception; 30 import ca.uhn.hl7v2.Location; 31 32 /** 33 * Field is a auxiliary model class only created while visiting parts of the 34 * message. 35 */ 36 public class Field implements Visitable { 37 38 private final Type[] reps; 39 private final int maxCardinality; 40 41 42 public Field(Type[] reps, int maxCardinality) { 43 super(); 44 this.reps = reps; 45 this.maxCardinality = maxCardinality; 46 } 47 48 public boolean accept(MessageVisitor visitor, Location currentLocation) throws HL7Exception { 49 if (visitor.start(this, currentLocation)) { 50 for (int i=0; i < reps.length; i++) { 51 Type t = reps[i]; 52 Location nextLocation = currentLocation; 53 if (reps.length > 1) { 54 nextLocation = provideLocation(currentLocation, currentLocation.getField(), i); 55 } 56 if (!t.accept(visitor, nextLocation)) 57 break; 58 } 59 } 60 return visitor.end(this, currentLocation); 61 } 62 63 public Location/../ca/uhn/hl7v2/Location.html#Location">Location provideLocation(Location parentLocation, int index, int repetition) { 64 return new Location(parentLocation).withField(index).withFieldRepetition(repetition); 65 } 66 67 public boolean isEmpty() { 68 return reps.length == 0; 69 } 70 71 }