001/** 002 * The contents of this file are subject to the Mozilla Public License Version 1.1 003 * (the "License"); you may not use this file except in compliance with the License. 004 * You may obtain a copy of the License at http://www.mozilla.org/MPL/ 005 * Software distributed under the License is distributed on an "AS IS" basis, 006 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the 007 * specific language governing rights and limitations under the License. 008 * 009 * The Original Code is "IStructureDefinition.java" 010 * 011 * The Initial Developer of the Original Code is University Health Network. Copyright (C) 012 * 2001. All Rights Reserved. 013 * 014 * Contributor(s): 015 * 016 * Alternatively, the contents of this file may be used under the terms of the 017 * GNU General Public License (the �GPL�), in which case the provisions of the GPL are 018 * applicable instead of those above. If you wish to allow use of your version of this 019 * file only under the terms of the GPL and not to allow others to use your version 020 * of this file under the MPL, indicate your decision by deleting the provisions above 021 * and replace them with the notice and other provisions required by the GPL License. 022 * If you do not delete the provisions above, a recipient may use your version of 023 * this file under either the MPL or the GPL. 024 * 025 */ 026 027package ca.uhn.hl7v2.parser; 028 029import java.util.Collections; 030import java.util.List; 031import java.util.Set; 032 033/** 034 * Structure definition which defines a non-standard structure within a parent 035 * structure. 036 * 037 * This class is used more as a runtime placeholder than as something that would 038 * be produced by the structure parser. 039 */ 040public class NonStandardStructureDefinition implements IStructureDefinition { 041 042 private String myName; 043 private IStructureDefinition myParent; 044 private int myPosition; 045 private IStructureDefinition myPreviousSibling; 046 047 /** 048 * Constructor 049 */ 050 public NonStandardStructureDefinition(IStructureDefinition theParent, IStructureDefinition thePreviousSibling, String theName, int thePosition) { 051 if (theName == null || theName.length() == 0) { 052 throw new IllegalArgumentException("theName is missing"); 053 } 054 055 myParent = theParent; 056 myName = theName; 057 myPreviousSibling = thePreviousSibling; 058 myPosition = thePosition; 059 } 060 061 /** 062 * {@inheritDoc } 063 */ 064 public Set<String> getAllChildNames() { 065 return Collections.emptySet(); 066 } 067 068 /** 069 * {@inheritDoc } 070 */ 071 public Set<String> getAllPossibleFirstChildren() { 072 return Collections.emptySet(); 073 } 074 075 /** 076 * {@inheritDoc } 077 */ 078 public List<StructureDefinition> getChildren() { 079 return Collections.emptyList(); 080 } 081 082 /** 083 * {@inheritDoc } 084 */ 085 public IStructureDefinition getFirstChild() { 086 return null; 087 } 088 089 /** 090 * {@inheritDoc } 091 */ 092 public IStructureDefinition getFirstSibling() { 093 return null; 094 } 095 096 /** 097 * {@inheritDoc } 098 */ 099 public String getName() { 100 return myName; 101 } 102 103 /** 104 * {@inheritDoc} 105 */ 106 public String getNameAsItAppearsInParent() { 107 return getName(); 108 } 109 110 /** 111 * {@inheritDoc } 112 */ 113 public Set<String> getNamesOfAllPossibleFollowingLeaves() { 114 return myPreviousSibling.getNamesOfAllPossibleFollowingLeaves(); 115 } 116 117 /** 118 * {@inheritDoc } 119 */ 120 public IStructureDefinition getNextLeaf() { 121 return myPreviousSibling.getNextLeaf(); 122 } 123 124 /** 125 * {@inheritDoc } 126 */ 127 public IStructureDefinition getNextSibling() { 128 return myPreviousSibling.getNextSibling(); 129 } 130 131 /** 132 * {@inheritDoc } 133 */ 134 public IStructureDefinition getParent() { 135 return myParent; 136 } 137 138 /** 139 * {@inheritDoc } 140 */ 141 public int getPosition() { 142 return myPosition; 143 } 144 145 /** 146 * {@inheritDoc } 147 */ 148 public boolean hasChildren() { 149 return false; 150 } 151 152 /** 153 * {@inheritDoc } 154 */ 155 public boolean isFinalChildOfParent() { 156 return myPreviousSibling.isFinalChildOfParent(); 157 } 158 159 /** 160 * {@inheritDoc } 161 */ 162 public boolean isRepeating() { 163 return true; 164 } 165 166 /** 167 * {@inheritDoc } 168 */ 169 public boolean isRequired() { 170 return false; 171 } 172 173 /** 174 * {@inheritDoc } 175 */ 176 public boolean isSegment() { 177 return true; 178 } 179 180 /** 181 * {@inheritDoc } 182 */ 183 public boolean isChoiceElement() { 184 return false; 185 } 186 187}