001    package ca.uhn.hl7v2.conf.spec.usecase;
002    
003    /**
004     * An abstraction of the parts of a use case (eg EventFlow), all of which have a name and a body.  
005     * @author Bryan Tripp 
006     */
007    public class AbstractUseCaseComponent {
008        
009        /** Holds value of property name. */
010        private String name;
011        
012        /** Utility field used by bound properties. */
013        private java.beans.PropertyChangeSupport propertyChangeSupport =  new java.beans.PropertyChangeSupport(this);
014        
015        /** Utility field used by constrained properties. */
016        private java.beans.VetoableChangeSupport vetoableChangeSupport =  new java.beans.VetoableChangeSupport(this);
017        
018        /** Holds value of property body. */
019        private String body;
020        
021        /** Creates a new instance of AbstractUseCaseComponent */
022        public AbstractUseCaseComponent() {
023        }
024        
025        /** Adds a PropertyChangeListener to the listener list.
026         * @param l The listener to add.
027         */
028        public void addPropertyChangeListener(java.beans.PropertyChangeListener l) {
029            propertyChangeSupport.addPropertyChangeListener(l);
030        }
031        
032        /** Removes a PropertyChangeListener from the listener list.
033         * @param l The listener to remove.
034         */
035        public void removePropertyChangeListener(java.beans.PropertyChangeListener l) {
036            propertyChangeSupport.removePropertyChangeListener(l);
037        }
038        
039        /** Adds a VetoableChangeListener to the listener list.
040         * @param l The listener to add.
041         */
042        public void addVetoableChangeListener(java.beans.VetoableChangeListener l) {
043            vetoableChangeSupport.addVetoableChangeListener(l);
044        }
045        
046        /** Removes a VetoableChangeListener from the listener list.
047         * @param l The listener to remove.
048         */
049        public void removeVetoableChangeListener(java.beans.VetoableChangeListener l) {
050            vetoableChangeSupport.removeVetoableChangeListener(l);
051        }
052        
053        /** Getter for property name.
054         * @return Value of property name.
055         */
056        public String getName() {
057            return this.name;
058        }
059        
060        /** Setter for property name.
061         * @param name New value of property name.
062         *
063         * @throws PropertyVetoException
064         */
065        public void setName(String name) throws java.beans.PropertyVetoException {
066            String oldName = this.name;
067            vetoableChangeSupport.fireVetoableChange("name", oldName, name);
068            this.name = name;
069            propertyChangeSupport.firePropertyChange("name", oldName, name);
070        }
071        
072        /** Getter for property body.
073         * @return Value of property body.
074         */
075        public String getBody() {
076            return this.body;
077        }
078        
079        /** Setter for property body.
080         * @param body New value of property body.
081         *
082         * @throws PropertyVetoException
083         */
084        public void setBody(String body) throws java.beans.PropertyVetoException {
085            String oldBody = this.body;
086            vetoableChangeSupport.fireVetoableChange("body", oldBody, body);
087            this.body = body;
088            propertyChangeSupport.firePropertyChange("body", oldBody, body);
089        }
090        
091    }