/**
     * Identifies the property rules set that the property belongs to, and notifies
     * it about the property change.
     *
     * @param property The property that has been changed
     */
    private void notifyChanges(String property) {
        if (rulesList.size() == 0) {
            return;
        }

        boolean notified = false;
        Enumeration rules = rulesList.elements();
        while (rules.hasMoreElements() && !notified) {
            IPropertyRules therules = (IPropertyRules)rules.nextElement();
            if (therules.checkPropertyAllowed(property)) {
                therules.handlePropertyChanges(property);
            }
        }

    }
 /**
  * Checks that a property is permitted to exist by any of the existing rules sets
  *
  * @param propertyName The name of the property to be set
  * @return true if the property is permitted to store values. false otherwise
  */
 public boolean checkPropertyAllowed(String propertyName) {
     if (rulesList.size() == 0) {
         return true;
     } else {
         boolean allowed = false;
         Enumeration en = rulesList.elements();
         //We're fine if we return true, inclusive rules sets
         while (en.hasMoreElements() && !allowed) {
             IPropertyRules rules = (IPropertyRules)en.nextElement();
             if (rules.checkPropertyAllowed(propertyName)) {
                 allowed = true;
             }
         }
         return allowed;
     }
 }
 /**
  * Checks that a property is allowed to store a certain value.
  *
  * @param propertyName  The name of the property to be set
  * @param propertyValue The value to be stored in the given property
  * @return true if the property given is allowed to be stored. false otherwise.
  */
 public boolean checkValueAllowed(String propertyName,
                                  String propertyValue) {
     if (rulesList.size() == 0) {
         return true;
     } else {
         boolean allowed = false;
         Enumeration en = rulesList.elements();
         while (en.hasMoreElements() && !allowed) {
             IPropertyRules rules = (IPropertyRules)en.nextElement();
             if (rules.checkPropertyAllowed(propertyName)) {
                 if (rules.checkValueAllowed(propertyName, propertyValue)) {
                     allowed = true;
                 }
             }
         }
         return allowed;
     }
 }