Coverage Report - ca.uhn.hl7v2.model.GenericMessage
 
Classes in this File Line Coverage Branch Coverage Complexity
GenericMessage
68%
11/16
100%
2/2
1.179
GenericMessage$UnknownVersion
100%
3/3
N/A
1.179
GenericMessage$V21
0%
0/3
N/A
1.179
GenericMessage$V22
100%
3/3
N/A
1.179
GenericMessage$V23
100%
3/3
N/A
1.179
GenericMessage$V231
100%
3/3
N/A
1.179
GenericMessage$V24
100%
3/3
N/A
1.179
GenericMessage$V25
100%
3/3
N/A
1.179
GenericMessage$V251
100%
3/3
N/A
1.179
GenericMessage$V26
100%
3/3
N/A
1.179
GenericMessage$V27
100%
3/3
N/A
1.179
GenericMessage$V271
100%
3/3
N/A
1.179
GenericMessage$V28
100%
3/3
N/A
1.179
GenericMessage$V281
100%
3/3
N/A
1.179
 
 1  
 package ca.uhn.hl7v2.model;
 2  
 
 3  
 import org.slf4j.Logger;
 4  
 import org.slf4j.LoggerFactory;
 5  
 
 6  
 import ca.uhn.hl7v2.HL7Exception;
 7  
 import ca.uhn.hl7v2.Version;
 8  
 import ca.uhn.hl7v2.parser.ModelClassFactory;
 9  
 
 10  
 /**
 11  
  * A generic HL7 message, meant for parsing message with unrecognized structures
 12  
  * into a flat list of segments.
 13  
  * 
 14  
  * @author Bryan Tripp
 15  
  * @author Christian Ohr
 16  
  */
 17  
 @SuppressWarnings("serial")
 18  
 public abstract class GenericMessage extends AbstractMessage {
 19  
     
 20  5
         private static final Logger log = LoggerFactory.getLogger(GenericMessage.class);
 21  
         
 22  
     /** 
 23  
      * Creates a new instance of GenericMessage. 
 24  
      * 
 25  
      * @param factory class factory for contained structures 
 26  
      */
 27  
     public GenericMessage(ModelClassFactory factory) {
 28  795
         super(factory);
 29  
         try {
 30  795
             this.addNonstandardSegment("MSH");
 31  0
         } catch(HL7Exception e) {
 32  0
             String message = "Unexpected error adding GenericSegment to GenericMessage.";
 33  0
             log.error(message, e);
 34  0
             throw new Error(message); // TODO better throw RuntimeException
 35  795
         }        
 36  795
     }
 37  
     
 38  
     /**
 39  
      * Returns a subclass of GenericMessage corresponding to a certain version.  
 40  
      * This is needed so that version-specific segments can be added as the message
 41  
      * is parsed.
 42  
      *
 43  
      * @param version the HL7 version
 44  
      * @return the class of the generic message
 45  
      */
 46  
         @SuppressWarnings("unchecked")
 47  
         public static Class<? extends Message> getGenericMessageClass(String version) {
 48  
                 
 49  245
                 Version v = Version.versionOf(version);
 50  245
         if (v != null) {       
 51  
                 try {
 52  235
                         String className = GenericMessage.class.getName() + "$" + v.name();
 53  235
                         return (Class<? extends Message>)Class.forName(className);
 54  0
                 } catch (ClassNotFoundException e) {
 55  
                         // should not happen as long Version corresponds with the static
 56  
                         // subclasses of GenericMessage
 57  
                 }
 58  
         }
 59  
 
 60  10
         log.debug("Unknown version for generic type {}", version);
 61  10
         return UnknownVersion.class;
 62  
     }
 63  
 
 64  
 
 65  
     public static class UnknownVersion extends GenericMessage {
 66  
                 private static final long serialVersionUID = 4773366840392833956L;
 67  
                 public UnknownVersion(ModelClassFactory factory) {
 68  5
             super(factory);
 69  5
         }
 70  
         public String getVersion() {
 71  5
                 return Version.latestVersion().getVersion();
 72  
         }
 73  
 
 74  
     }
 75  
 
 76  
     public static class V21 extends GenericMessage {
 77  
                 private static final long serialVersionUID = 4773366840392833956L;
 78  
                 public V21(ModelClassFactory factory) {
 79  0
             super(factory);
 80  0
         }
 81  0
         public String getVersion() { return Version.V21.getVersion(); }
 82  
     }
 83  
     
 84  
     public static class V22 extends GenericMessage {
 85  
                 private static final long serialVersionUID = 7124224621400437244L;
 86  
                 public V22(ModelClassFactory factory) {
 87  55
             super(factory);
 88  55
         }
 89  1160
         public String getVersion() { return Version.V22.getVersion(); }
 90  
     }
 91  
     
 92  
     public static class V23 extends GenericMessage {
 93  
                 private static final long serialVersionUID = -8794048442253389190L;
 94  
                 public V23(ModelClassFactory factory) {
 95  20
             super(factory);
 96  20
         }
 97  640
         public String getVersion() { return Version.V23.getVersion(); }
 98  
     }
 99  
     
 100  
     public static class V231 extends GenericMessage {
 101  
                 private static final long serialVersionUID = 5979370667795858995L;
 102  
                 public V231(ModelClassFactory factory) {
 103  20
             super(factory);
 104  20
         }
 105  635
         public String getVersion() { return Version.V231.getVersion(); }
 106  
     }
 107  
     
 108  
     public static class V24 extends GenericMessage {
 109  
                 private static final long serialVersionUID = -4944772617600551061L;
 110  
                 public V24(ModelClassFactory factory) {
 111  430
             super(factory);
 112  430
         }
 113  1695
         public String getVersion() { return Version.V24.getVersion(); }
 114  
     }
 115  
     
 116  
     public static class V25 extends GenericMessage {
 117  
                 private static final long serialVersionUID = 3937051332672967947L;
 118  
                 public V25(ModelClassFactory factory) {
 119  150
             super(factory);
 120  150
         }
 121  1905
         public String getVersion() { return Version.V25.getVersion(); }
 122  
     }
 123  
     
 124  
     public static class V251 extends GenericMessage {
 125  
                 private static final long serialVersionUID = -767282165482145544L;
 126  
                 public V251(ModelClassFactory factory) {
 127  10
             super(factory);
 128  10
         }
 129  290
         public String getVersion() { return Version.V251.getVersion(); }
 130  
     }
 131  
 
 132  
     public static class V26 extends GenericMessage {
 133  
                 private static final long serialVersionUID = -1693277295151324396L;
 134  
                 public V26(ModelClassFactory factory) {
 135  45
             super(factory);
 136  45
         }
 137  1250
         public String getVersion() { return Version.V26.getVersion(); }
 138  
     }
 139  
 
 140  
     public static class V27 extends GenericMessage {
 141  
                 private static final long serialVersionUID = -1693277295151324396L;
 142  
                 public V27(ModelClassFactory factory) {
 143  20
             super(factory);
 144  20
         }
 145  610
         public String getVersion() { return Version.V27.getVersion(); }
 146  
     }
 147  
 
 148  
     public static class V271 extends GenericMessage {
 149  
                 private static final long serialVersionUID = -1693277295151324396L;
 150  
                 public V271(ModelClassFactory factory) {
 151  20
             super(factory);
 152  20
         }
 153  675
         public String getVersion() { return Version.V271.getVersion(); }
 154  
     }
 155  
 
 156  
     public static class V28 extends GenericMessage {
 157  
                 private static final long serialVersionUID = -1693277295151324396L;
 158  
                 public V28(ModelClassFactory factory) {
 159  10
             super(factory);
 160  10
         }
 161  290
         public String getVersion() { return Version.V28.getVersion(); }
 162  
     }
 163  
 
 164  
     public static class V281 extends GenericMessage {
 165  
                 private static final long serialVersionUID = -1693277295151324396L;
 166  
                 public V281(ModelClassFactory factory) {
 167  10
             super(factory);
 168  10
         }
 169  290
         public String getVersion() { return Version.V281.getVersion(); }
 170  
     }
 171  
 
 172  
 }