001    package ca.uhn.hl7v2.conf.spec;
002    
003    import ca.uhn.hl7v2.conf.spec.usecase.UseCase;
004    import ca.uhn.hl7v2.conf.spec.message.StaticDef;
005    import ca.uhn.hl7v2.conf.ProfileException;
006    
007    /**
008     * A conformance specification (see HL7 2.5 section 2.12).  
009     * @author Bryan Tripp
010     */
011    public class RuntimeProfile {
012        
013        private Conformance conformance;
014        /** Holds value of property conformanceType. */
015        private String conformanceType;
016        private Encoding[] encodings;
017        /** Holds value of property HL7OID. */
018        private String HL7OID;
019        /** Holds value of property HL7Version. */
020        private String HL7Version;
021            
022        private String impNote;
023        
024        /** Holds value of property message. */
025        private StaticDef message;
026        
027        /** Holds value of property orgName. */
028        private String orgName;
029        
030        /** Utility field used by bound properties. */
031        private java.beans.PropertyChangeSupport propertyChangeSupport =  new java.beans.PropertyChangeSupport(this);
032        
033        /** Holds value of property role. */
034        private String role;
035        
036        /** Holds value of property specName. */
037        private String specName;
038        
039        /** Holds value of property specVersion. */
040        private String specVersion;
041        
042        private StaticDef StaticDef;
043        
044        /** Holds value of property status. */
045        private String status;
046        
047        private UseCase useCase;
048        
049        /** Utility field used by constrained properties. */
050        private java.beans.VetoableChangeSupport vetoableChangeSupport =  new java.beans.VetoableChangeSupport(this);
051            private String name;
052        
053        /** Creates a new instance of Specification */
054        public RuntimeProfile() {
055        }
056        
057        /** Adds a PropertyChangeListener to the listener list.
058         * @param l The listener to add.
059         */
060        public void addPropertyChangeListener(java.beans.PropertyChangeListener l) {
061            propertyChangeSupport.addPropertyChangeListener(l);
062        }
063        
064        /** Adds a VetoableChangeListener to the listener list.
065         * @param l The listener to add.
066         */
067        public void addVetoableChangeListener(java.beans.VetoableChangeListener l) {
068            vetoableChangeSupport.addVetoableChangeListener(l);
069        }
070        
071        /** Getter for property conformance.
072         * @return Value of property conformance.
073         */
074        public Conformance getConformance() {
075            return this.conformance;
076        }
077        
078        /** Getter for property conformanceType.
079         * @return Value of property conformanceType.
080         */
081        public String getConformanceType() {
082            return this.conformanceType;
083        }
084        
085        /** Indexed getter for property encodings.
086         * @param index Index of the property.
087         * @return Value of the property at <CODE>index</CODE>.
088         */
089        public Encoding getEncodings(int index) {
090            return this.encodings[index];
091        }
092        
093        /** Getter for property HL7OID.
094         * @return Value of property HL7OID.
095         */
096        public String getHL7OID() {
097            return this.HL7OID;
098        }
099        
100        /** Getter for property HL7Version.
101         * @return Value of property HL7Version.
102         */
103        public String getHL7Version() {
104            return this.HL7Version;
105        }
106        
107        /** Getter for property impNote.
108         * @return Value of property impNote.
109         */
110        public String getImpNote() {
111            return this.impNote;
112        }
113        
114        /** Getter for property message.
115         * @return Value of property message.
116         */
117        public StaticDef getMessage() {
118            return this.message;
119        }
120        
121        /** Getter for property orgName.
122         * @return Value of property orgName.
123         */
124        public String getOrgName() {
125            return this.orgName;
126        }
127        
128        /** Getter for property role.
129         * @return Value of property role.
130         */
131        public String getRole() {
132            return this.role;
133        }
134        
135        /** Getter for property specName.
136         * @return Value of property specName.
137         */
138        public String getSpecName() {
139            return this.specName;
140        }
141        
142        /** Getter for property specVersion.
143         * @return Value of property specVersion.
144         */
145        public String getSpecVersion() {
146            return this.specVersion;
147        }
148        
149        /** Getter for property status.
150         * @return Value of property status.
151         */
152        public String getStatus() {
153            return this.status;
154        }
155        
156        /** Getter for property useCase.
157         * @return Value of property useCase.
158         */
159        public UseCase getUseCase() {
160            return this.useCase;
161        }
162        
163        /** Removes a PropertyChangeListener from the listener list.
164         * @param l The listener to remove.
165         */
166        public void removePropertyChangeListener(java.beans.PropertyChangeListener l) {
167            propertyChangeSupport.removePropertyChangeListener(l);
168        }
169        
170        /** Removes a VetoableChangeListener from the listener list.
171         * @param l The listener to remove.
172         */
173        public void removeVetoableChangeListener(java.beans.VetoableChangeListener l) {
174            vetoableChangeSupport.removeVetoableChangeListener(l);
175        }
176        
177        /** Setter for property conformance.
178         * @param conformance New value of property conformance.
179         *
180         * @throws ProfileException
181         */
182        public void setConformance(Conformance conformance) throws ProfileException {
183            Conformance oldConformance = this.conformance;
184            try {
185                vetoableChangeSupport.fireVetoableChange("conformance", oldConformance, conformance);
186            } catch (Exception e) {
187                throw new ProfileException(null, e);
188            }
189            this.conformance = conformance;
190            propertyChangeSupport.firePropertyChange("conformance", oldConformance, conformance);
191        }
192        
193        /** Setter for property conformanceType.
194         * @param conformanceType New value of property conformanceType.
195         *
196         * @throws ProfileException
197         */
198        public void setConformanceType(String conformanceType) throws ProfileException {
199            String oldConformanceType = this.conformanceType;
200            try {
201                vetoableChangeSupport.fireVetoableChange("conformanceType", oldConformanceType, conformanceType);
202            } catch (Exception e) {
203                throw new ProfileException(null, e);
204            }
205            this.conformanceType = conformanceType;
206            propertyChangeSupport.firePropertyChange("conformanceType", oldConformanceType, conformanceType);
207        }
208        
209        /** Indexed setter for property encodings.
210         * @param index Index of the property.
211         * @param encodings New value of the property at <CODE>index</CODE>.
212         *
213         * @throws ProfileException
214         */
215        public void setEncodings(int index, Encoding encodings) throws ProfileException {
216            Encoding oldEncodings = this.encodings[index];
217            this.encodings[index] = encodings;
218            try {
219                vetoableChangeSupport.fireVetoableChange("encodings", null, null );
220            }
221            catch(java.beans.PropertyVetoException vetoException ) {
222                this.encodings[index] = oldEncodings;
223                throw new ProfileException(null, vetoException);
224            }
225            propertyChangeSupport.firePropertyChange("encodings", null, null );
226        }
227        
228        /** Setter for property HL7OID.
229         * @param HL7OID New value of property HL7OID.
230         *
231         * @throws ProfileException
232         */
233        public void setHL7OID(String HL7OID) throws ProfileException {
234            String oldHL7OID = this.HL7OID;
235            try {
236                vetoableChangeSupport.fireVetoableChange("HL7OID", oldHL7OID, HL7OID);
237            } catch (Exception e) {
238                throw new ProfileException(null, e);
239            }
240            this.HL7OID = HL7OID;
241            propertyChangeSupport.firePropertyChange("HL7OID", oldHL7OID, HL7OID);
242        }
243        
244        /** Setter for property HL7Version.
245         * @param HL7Version New value of property HL7Version.
246         *
247         * @throws ProfileException
248         */
249        public void setHL7Version(String HL7Version) throws ProfileException {
250            String oldHL7Version = this.HL7Version;
251            try {
252                vetoableChangeSupport.fireVetoableChange("HL7Version", oldHL7Version, HL7Version);
253            } catch (Exception e) {
254                throw new ProfileException(null, e);
255            }
256            this.HL7Version = HL7Version;
257            propertyChangeSupport.firePropertyChange("HL7Version", oldHL7Version, HL7Version);
258        }
259        
260        /** Setter for property impNote.
261         * @param impNote New value of property impNote.
262         *
263         * @throws ProfileException
264         */
265        public void setImpNote(String impNote) throws ProfileException {
266            String oldImpNote = this.impNote;
267            try {
268                vetoableChangeSupport.fireVetoableChange("impNote", oldImpNote, impNote);
269            } catch (Exception e) {
270                throw new ProfileException(null, e);
271            }
272            this.impNote = impNote;
273            propertyChangeSupport.firePropertyChange("impNote", oldImpNote, impNote);
274        }
275        
276        /** Setter for property message.
277         * @param message New value of property message.
278         *
279         * @throws ProfileException
280         */
281        public void setMessage(StaticDef message) throws ProfileException {
282            StaticDef oldMessage = this.message;
283            try {
284                vetoableChangeSupport.fireVetoableChange("message", oldMessage, message);
285            } catch (Exception e) {
286                throw new ProfileException(null, e);
287            }
288            this.message = message;
289            propertyChangeSupport.firePropertyChange("message", oldMessage, message);
290        }
291        
292        public void setName(String theName) throws ProfileException {
293            String oldOrgName = this.name;
294            try {
295                vetoableChangeSupport.fireVetoableChange("name", oldOrgName, theName);
296            } catch (Exception e) {
297                throw new ProfileException(null, e);
298            }
299            this.name = theName;
300            propertyChangeSupport.firePropertyChange("name", oldOrgName, theName);
301            }
302        
303        /**
304             * @return the name for this profile (as drawn from the MetaData tag within the overall profile tag)
305             */
306            public String getName() {
307                    return name;
308            }
309    
310            /** Setter for property orgName.
311         * @param orgName New value of property orgName.
312         *
313         * @throws ProfileException
314         */
315        public void setOrgName(String orgName) throws ProfileException {
316            String oldOrgName = this.orgName;
317            try {
318                vetoableChangeSupport.fireVetoableChange("orgName", oldOrgName, orgName);
319            } catch (Exception e) {
320                throw new ProfileException(null, e);
321            }
322            this.orgName = orgName;
323            propertyChangeSupport.firePropertyChange("orgName", oldOrgName, orgName);
324        }
325        
326        /** Setter for property role.
327         * @param role New value of property role.
328         *
329         * @throws ProfileException
330         */
331        public void setRole(String role) throws ProfileException {
332            String oldRole = this.role;
333            try {
334                vetoableChangeSupport.fireVetoableChange("role", oldRole, role);
335            } catch (Exception e) {
336                throw new ProfileException(null, e);
337            }
338            this.role = role;
339            propertyChangeSupport.firePropertyChange("role", oldRole, role);
340        }
341        
342        /** Setter for property specName.
343         * @param specName New value of property specName.
344         *
345         * @throws ProfileException
346         */
347        public void setSpecName(String specName) throws ProfileException {
348            String oldSpecName = this.specName;
349            try {
350                vetoableChangeSupport.fireVetoableChange("specName", oldSpecName, specName);
351            } catch (Exception e) {
352                throw new ProfileException(null, e);
353            }
354            this.specName = specName;
355            propertyChangeSupport.firePropertyChange("specName", oldSpecName, specName);
356        }
357        
358        /** Setter for property specVersion.
359         * @param specVersion New value of property specVersion.
360         *
361         * @throws ProfileException
362         */
363        public void setSpecVersion(String specVersion) throws ProfileException {
364            String oldSpecVersion = this.specVersion;
365            try {
366                vetoableChangeSupport.fireVetoableChange("specVersion", oldSpecVersion, specVersion);
367            } catch (Exception e) {
368                throw new ProfileException(null, e);
369            }
370            this.specVersion = specVersion;
371            propertyChangeSupport.firePropertyChange("specVersion", oldSpecVersion, specVersion);
372        }
373        
374        /** Setter for property status.
375         * @param status New value of property status.
376         *
377         * @throws ProfileException
378         */
379        public void setStatus(String status) throws ProfileException {
380            String oldStatus = this.status;
381            try {
382                vetoableChangeSupport.fireVetoableChange("status", oldStatus, status);
383            } catch (Exception e) {
384                throw new ProfileException(null, e);
385            }
386            this.status = status;
387            propertyChangeSupport.firePropertyChange("status", oldStatus, status);
388        }
389    
390            /** Setter for property useCase.
391         * @param useCase New value of property useCase.
392         *
393         * @throws ProfileException
394         */
395        public void setUseCase(UseCase useCase) throws ProfileException {
396            UseCase oldUseCase = this.useCase;
397            try {
398                vetoableChangeSupport.fireVetoableChange("useCase", oldUseCase, useCase);
399            } catch (Exception e) {
400                throw new ProfileException(null, e);
401            }
402            this.useCase = useCase;
403            propertyChangeSupport.firePropertyChange("useCase", oldUseCase, useCase);
404        }
405        
406    }