ozeigermann    2004/09/23 00:27:08

  Modified:    src/share/org/apache/slide/content Tag:
                        SLIDE_2_1_RELEASE_BRANCH
                        NodeRevisionDescriptor.java
  Log:
  Took over core part (not store implementation) of 

  enhancement #30442 from HEAD branch into release
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.34.2.2  +46 -16    
jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptor.java
  
  Index: NodeRevisionDescriptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/src/share/org/apache/slide/content/NodeRevisionDescriptor.java,v
  retrieving revision 1.34.2.1
  retrieving revision 1.34.2.2
  diff -u -r1.34.2.1 -r1.34.2.2
  --- NodeRevisionDescriptor.java       1 Sep 2004 15:40:13 -0000       1.34.2.1
  +++ NodeRevisionDescriptor.java       23 Sep 2004 07:27:08 -0000      1.34.2.2
  @@ -162,6 +162,8 @@
           this.properties = new Hashtable();
           this.labels = new Vector();
           this.branchName = NodeRevisionDescriptors.MAIN_BRANCH;
  +        this.updatedProperties = new Hashtable();
  +        this.removedProperties = new Hashtable();
           initDefaultProperties();
       }
       
  @@ -217,7 +219,13 @@
        * Properties field.
        */
       private Hashtable properties;
  -    
  +
  +    /**
  +     * Track updated properties
  +     */
  +    private Hashtable updatedProperties;
  +    private Hashtable removedProperties;
  +
       
       // ------------------------------------------------------------- Properties
       
  @@ -308,6 +316,7 @@
       void setProperties(Hashtable properties) {
           // FIXME : Do a clean merge
           this.properties = properties;
  +        this.updatedProperties = new Hashtable(properties);
       }
       
       
  @@ -393,20 +402,21 @@
        * @param property Property
        */
       public void setProperty(NodeProperty property) {
  -        properties.put(getNamespacedPropertyName(property.getNamespace(),
  -                                                 property.getName()) ,
  -                       property);
  +        String name = getNamespacedPropertyName(property.getNamespace(), 
property.getName());
  +        properties.put(name, property);
  +        updatedProperties.put(name, property);
  +        removedProperties.remove(name);
       }
       
       
       /**
        * Remove a property.
  -     *
  -     * @param property Property
  +     * 
  +     * @param property
  +     *            Property
        */
       public void removeProperty(NodeProperty property) {
  -        properties.remove(getNamespacedPropertyName(property.getNamespace(),
  -                                                    property.getName()));
  +        removeProperty(property.getNamespace(), property.getName());
       }
       
       
  @@ -416,7 +426,7 @@
        * @param property Property
        */
       public void removeProperty(String property) {
  -        properties.remove(getNamespacedPropertyName(NodeProperty.DEFAULT_NAMESPACE, 
property));
  +        removeProperty(property, NodeProperty.DEFAULT_NAMESPACE);
       }
       
       
  @@ -426,7 +436,13 @@
        * @param property Property
        */
       public void removeProperty(String property, String nameSpace) {
  -        properties.remove(getNamespacedPropertyName(nameSpace, property));
  +        String name = getNamespacedPropertyName(nameSpace, property);
  +        NodeProperty nodeProperty = (NodeProperty )properties.remove(name);
  +        // check if the property existed before
  +        if (nodeProperty != null) {
  +            removedProperties.put(name, nodeProperty);
  +            updatedProperties.remove(name);
  +        }
       }
       
       
  @@ -477,8 +493,22 @@
       public Enumeration enumerateProperties() {
           return properties.elements();
       }
  -    
  -    
  +
  +    public Enumeration enumerateRemovedProperties() {
  +        return removedProperties.elements();
  +    }
  +
  +    public Enumeration enumerateUpdatedProperties() {
  +        return updatedProperties.elements();
  +    }
  +
  +    public void resetUpdatedProperties() {
  +        updatedProperties.clear();
  +    }
  +
  +    public void resetRemovedProperties() {
  +        removedProperties.clear();
  +    }
                                        
       /**
        * Checks whether the value of the given property contains the specified
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to