001    package ca.uhn.hl7v2.conf.spec.message;
002    
003    import ca.uhn.hl7v2.conf.ProfileException;
004    
005    /**
006     * An explicit data value specified in a message profile.  
007     * @author Bryan Tripp
008     */
009    public class DataValue {
010        
011        /** Holds value of property exValue. */
012        private String exValue;
013        
014        /** Utility field used by bound properties. */
015        private java.beans.PropertyChangeSupport propertyChangeSupport =  new java.beans.PropertyChangeSupport(this);
016        
017        /** Utility field used by constrained properties. */
018        private java.beans.VetoableChangeSupport vetoableChangeSupport =  new java.beans.VetoableChangeSupport(this);
019        
020        /** Creates a new instance of DataValue */
021        public DataValue() {
022        }
023        
024        /** Adds a PropertyChangeListener to the listener list.
025         * @param l The listener to add.
026         */
027        public void addPropertyChangeListener(java.beans.PropertyChangeListener l) {
028            propertyChangeSupport.addPropertyChangeListener(l);
029        }
030        
031        /** Removes a PropertyChangeListener from the listener list.
032         * @param l The listener to remove.
033         */
034        public void removePropertyChangeListener(java.beans.PropertyChangeListener l) {
035            propertyChangeSupport.removePropertyChangeListener(l);
036        }
037        
038        /** Adds a VetoableChangeListener to the listener list.
039         * @param l The listener to add.
040         */
041        public void addVetoableChangeListener(java.beans.VetoableChangeListener l) {
042            vetoableChangeSupport.addVetoableChangeListener(l);
043        }
044        
045        /** Removes a VetoableChangeListener from the listener list.
046         * @param l The listener to remove.
047         */
048        public void removeVetoableChangeListener(java.beans.VetoableChangeListener l) {
049            vetoableChangeSupport.removeVetoableChangeListener(l);
050        }
051        
052        /** Getter for property exValue.
053         * @return Value of property exValue.
054         */
055        public String getExValue() {
056            return this.exValue;
057        }
058        
059        /** Setter for property exValue.
060         * @param exValue New value of property exValue.
061         *
062         * @throws ProfileException
063         */
064        public void setExValue(String exValue) throws ProfileException {
065            String oldExValue = this.exValue;
066            try {
067                vetoableChangeSupport.fireVetoableChange("exValue", oldExValue, exValue);
068            } catch (Exception e) {
069                throw new ProfileException(null, e);
070            }
071            this.exValue = exValue;
072            propertyChangeSupport.firePropertyChange("exValue", oldExValue, exValue);
073        }
074        
075    }