001package ca.uhn.hl7v2.validation.app; 002 003import ca.uhn.hl7v2.HL7Exception; 004import ca.uhn.hl7v2.model.Message; 005import ca.uhn.hl7v2.validation.ValidationException; 006import ca.uhn.hl7v2.validation.impl.ConformanceProfileRule; 007 008/** 009 * <p>Tests messages against conformance profiles. A constant profile 010 * can be used, or each message can be tested against the profiles 011 * that it declares.</p> 012 * <p>Note that profiles are referenced by ID, and that the ca.uhn.hl7v2.conf.store 013 * package is used to get the actual profiles. </p> 014 * @author Bryan Tripp 015 * @deprecated 016 */ 017public class ProfileTestApplication extends TestApplication { 018 019 private String profileID; 020 private ConformanceProfileRule rule; 021 022 /** 023 * Creates a new instance of ProfileTestApplication that tests using profiles 024 * declared in each message (if any) 025 */ 026 public ProfileTestApplication() { 027 rule = new ConformanceProfileRule(); 028 } 029 030 /** 031 * Creates a new instance of ProfileTestApplication. 032 * @param profileID the ID of the profile against which to test messages; 033 * null means use profiles declared in the message (if any) 034 */ 035 public ProfileTestApplication(String profileID) { 036 this.profileID = profileID; 037 rule = new ConformanceProfileRule(profileID); 038 } 039 040 /** 041 * Returns true if this Application wishes to accept the message. By returning 042 * true, this Application declares itself the recipient of the message, accepts 043 * responsibility for it, and must be able to respond appropriately to the sending system. 044 */ 045 public boolean canProcess(Message in) { 046 return true; 047 } 048 049 /** 050 * Tests the message against a profile or profiles. A constant profile 051 * is used if one was provided to the constructor, otherwise any profiles 052 * declared in the message are used. 053 */ 054 public HL7Exception[] test(Message in) throws HL7Exception { 055 ValidationException[] errors = rule.test(in); 056 057 HL7Exception[] result = new HL7Exception[errors.length]; 058 for (int i = 0; i < errors.length; i++) { 059 Throwable t = errors[i].getCause(); 060 if ((t != null) && (t instanceof HL7Exception)) { 061 result[i] = (HL7Exception) t; 062 } else { 063 result[i] = new HL7Exception(errors[i]); 064 } 065 } 066 067 return result; 068 } 069 070 public String getProfileID() { 071 return this.profileID; 072 } 073}