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