001 package org.vmdb.hl7; 002 003 /** 004 * <p><Title:> Generic HL7 Object Abstract Base Class. </p> 005 * <p>Description: Network Connectivity For VMDB. </p> 006 * <p>Copyright: Copyright (c) 2002-2003. </p> 007 * <p>Company: Veterinary Medical Database (VMDB). </p> 008 * <p>This provides a generic interface supported by all HL7 objects as well 009 * as providing some general implementation.</p> 010 * @author Michael K. Martin 011 * @version 1.0 012 */ 013 014 public abstract class HL7Object { 015 static final int FIELD_SEP = 0; 016 static final int COMP_SEP = 1; 017 static final int REP_SEP = 2; 018 static final int ESC_SEP = 3; 019 static final int SUB_SEP = 4; 020 protected String sName; 021 protected String sSeparators = "|^~\\&"; 022 protected String sRule = "*"; 023 024 public HL7Object() { 025 } 026 027 void setName( String sName ) { 028 this.sName = sName; 029 } 030 031 String getName() { return sName; } 032 033 void setRule( String sRule ) { 034 this.sRule = sRule; 035 } 036 037 void setSeparators( String sSeparators ) { 038 this.sSeparators = sSeparators; 039 } 040 041 String getSeparators() { return sSeparators; } 042 char getSeparator( int i ) { 043 if( sSeparators == null || i > sSeparators.length() ) return ' '; 044 return sSeparators.charAt(i); 045 } 046 047 /** 048 * Output the rule string for this object.<br><br> 049 * This follows generally the HL7 convention of using [] for optionality 050 * and {} for repeatablility. Whitespace separates sequential non-repeating 051 * required elements. 052 * @return Rule as a string. 053 */ 054 public String getRule() { return sRule; } 055 056 /** 057 * Output the object as XML.<br><br> 058 * For HL7Message, this will be a full message. For all other objects it 059 * will be the DOM element for that object and all its contained objects. 060 * @param iDepth int value for the number of spaces to indent this object. Used just 061 * to make the XML easier to read as unformatted text. 062 * @return foratted XML text. 063 */ 064 public String toXML( int iDepth ) { 065 StringBuffer sb = new StringBuffer(); 066 for( int x = 0; x < iDepth; x++ ) sb.append( " " ); 067 sb.append( '<' ); 068 sb.append( getName() ); 069 sb.append( '>' ); 070 sb.append( toString() ); 071 sb.append( '<' ); 072 sb.append( '/' ); 073 sb.append( getName() ); 074 sb.append( '>' ); 075 return sb.toString(); 076 } 077 078 }// End class HL7Object