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]