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 "AbstractConformanceDataType.java". Description: 010 * "This class contains the functionality for a Data Type in the Conformance class set" 011 * 012 * The Initial Developer of the Original Code is University Health Network. Copyright (C) 013 * 2001. All Rights Reserved. 014 * 015 * Contributor(s): James Agnew 016 * Paul Brohman 017 * Mitch Delachevrotiere 018 * Shawn Dyck 019 * Cory Metcalf 020 * 021 * Alternatively, the contents of this file may be used under the terms of the 022 * GNU General Public License (the ?GPL?), in which case the provisions of the GPL are 023 * applicable instead of those above. If you wish to allow use of your version of this 024 * file only under the terms of the GPL and not to allow others to use your version 025 * of this file under the MPL, indicate your decision by deleting the provisions above 026 * and replace them with the notice and other provisions required by the GPL License. 027 * If you do not delete the provisions above, a recipient may use your version of 028 * this file under either the MPL or the GPL. 029 * 030 */ 031 032 package ca.uhn.hl7v2.conf.classes.abs; 033 034 import ca.uhn.hl7v2.conf.classes.exceptions.ConfDataException; 035 import ca.uhn.hl7v2.model.DataTypeException; 036 import ca.uhn.hl7v2.model.Primitive; 037 import ca.uhn.log.HapiLog; 038 import ca.uhn.log.HapiLogFactory; 039 040 /** This class contains the functionality for a Data Type in the Conformance class set 041 * @author <table><tr>James Agnew</tr> 042 * <tr>Paul Brohman</tr> 043 * <tr>Mitch Delachevrotiere</tr> 044 * <tr>Shawn Dyck</tr> 045 * <tr>Cory Metcalf</tr></table> 046 */ 047 public abstract class AbstractConformanceDataType { 048 049 private static final HapiLog log = HapiLogFactory.getHapiLog(AbstractConformanceDataType.class); 050 051 private Primitive hapiPrimitive; 052 053 /** Default constructor */ 054 private AbstractConformanceDataType() { 055 } 056 057 /** Constructor for AbstractConformanceDataType 058 * @param hapiPrimitive the underlying primitive that the extending class represents 059 */ 060 public AbstractConformanceDataType(Primitive hapiPrimitive) { 061 this.hapiPrimitive = hapiPrimitive; 062 063 try { 064 if ( getConstantValue() != null ) 065 setValue( getConstantValue() ); 066 } catch ( ConfDataException e ) { 067 log.error( "Could not enforce constant value.", e ); 068 } 069 } 070 071 /** This method returns the constant value for the extending class. 072 * @return the constant value 073 */ 074 public abstract String getConstantValue(); 075 076 /** This method returns the Maximum length of the extending object. 077 * @return the maximum length 078 */ 079 public abstract long getMaxLength(); 080 081 /** This method validates the <code>String</code> value passed in to be no greater then the 082 * maximum allowable length for the extending class. If the <code>String</code> value is valid, this 083 * method will set the underlying HAPI class's value. If the data passed in is invalid for the given 084 * data type, a ConfDataException is thrown. 085 * @throws ConformaceException 086 * @param value the value of the Data Type 087 */ 088 protected void setValue(java.lang.String value) throws ConfDataException { 089 if ((this.getMaxLength() > 0) 090 && (value.length() > this.getMaxLength())) { 091 throw new ConfDataException("DataType length exceeds the Maximum allowable length"); 092 } 093 094 try { 095 this.hapiPrimitive.setValue(value); 096 } catch (DataTypeException e) { 097 throw new ConfDataException("Invalid Data Populated"); 098 } 099 } 100 101 }