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