Revision: 1186
Author: peterdb
Date: 2006-05-27 16:18:25 -0700 (Sat, 27 May 2006)
ViewCVS: http://svn.sourceforge.net/spring-rich-c/?rev=1186&view=rev
Log Message:
-----------
added support for removing settings nodes
Modified Paths:
--------------
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/AbstractSettings.java
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/Settings.java
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/TransientSettings.java
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/j2seprefs/PreferencesSettings.java
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/jdbc/JdbcSettings.java
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/xml/XmlSettings.java
trunk/spring-richclient/sandbox/src/test/java/org/springframework/richclient/settings/SettingsAbstractTests.java
Modified:
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/AbstractSettings.java
===================================================================
---
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/AbstractSettings.java
2006-05-27 21:05:45 UTC (rev 1185)
+++
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/AbstractSettings.java
2006-05-27 23:18:25 UTC (rev 1186)
@@ -17,6 +17,7 @@
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
+import java.util.AbstractSet;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -94,7 +95,7 @@
private boolean childSettingsLoaded = false;
- private List childSettingNames = new ArrayList();
+ private Set childSettingNames = new HashSet();
public Settings getSettings(String name) {
if (!children.containsKey(name)) {
@@ -610,4 +611,13 @@
public boolean isRoot() {
return getParent() == null;
}
+
+ public void removeSettings() {
+ internalRemoveSettings();
+ if(getParent() instanceof AbstractSettings) {
+
((AbstractSettings)getParent()).childSettingNames.remove(getName());
+ }
+ }
+
+ protected abstract void internalRemoveSettings();
}
\ No newline at end of file
Modified:
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/Settings.java
===================================================================
---
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/Settings.java
2006-05-27 21:05:45 UTC (rev 1185)
+++
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/Settings.java
2006-05-27 23:18:25 UTC (rev 1186)
@@ -108,6 +108,11 @@
void load() throws IOException;
Settings getSettings(String name);
+
+ /**
+ * Removes this <code>Settings</code> from the backing store.
+ */
+ void removeSettings();
String getName();
Modified:
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/TransientSettings.java
===================================================================
---
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/TransientSettings.java
2006-05-27 21:05:45 UTC (rev 1185)
+++
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/TransientSettings.java
2006-05-27 23:18:25 UTC (rev 1186)
@@ -71,4 +71,8 @@
protected String[] internalGetChildSettings() {
return new String[0];
}
+
+ public void internalRemoveSettings() {
+
+ }
}
\ No newline at end of file
Modified:
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/j2seprefs/PreferencesSettings.java
===================================================================
---
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/j2seprefs/PreferencesSettings.java
2006-05-27 21:05:45 UTC (rev 1185)
+++
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/j2seprefs/PreferencesSettings.java
2006-05-27 23:18:25 UTC (rev 1186)
@@ -149,4 +149,12 @@
throw new RuntimeException(e);
}
}
+
+ protected void internalRemoveSettings() {
+ try {
+ prefs.removeNode();
+ } catch( BackingStoreException e ) {
+ throw new RuntimeException(e);
+ }
+ }
}
\ No newline at end of file
Modified:
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/jdbc/JdbcSettings.java
===================================================================
---
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/jdbc/JdbcSettings.java
2006-05-27 21:05:45 UTC (rev 1185)
+++
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/jdbc/JdbcSettings.java
2006-05-27 23:18:25 UTC (rev 1186)
@@ -169,10 +169,30 @@
childKeys = (String[]) keys.toArray( new String[keys.size()] );
}
- protected void internalRemoveChild( String key ) {
- }
-
public String getUser() {
return user;
}
+
+ public void internalRemoveSettings() {
+ if( id != null ) {
+ // first delete all children
+ for( int i = 0; i < childKeys.length; i++ ) {
+ getSettings(childKeys[i]).removeSettings();
+ }
+
+ // now delete all values
+ JdbcTemplate template = new JdbcTemplate( dataSource );
+ template.update( "DELETE FROM SETTINGS_VALUES WHERE
SETTINGS_ID=?", new Object[] { id } );
+
+ // now delete our own record
+ template.update( "DELETE FROM SETTINGS WHERE ID=?", new Object[] {
id } );
+
+ id = null;
+ }
+
+ values.clear();
+ remove.clear();
+ add.clear();
+ update.clear();
+ }
}
Modified:
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/xml/XmlSettings.java
===================================================================
---
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/xml/XmlSettings.java
2006-05-27 21:05:45 UTC (rev 1185)
+++
trunk/spring-richclient/sandbox/src/main/java/org/springframework/richclient/settings/xml/XmlSettings.java
2006-05-27 23:18:25 UTC (rev 1186)
@@ -194,4 +194,8 @@
return (String[]) childSettingsNames.toArray(new
String[childSettingsNames.size()]);
}
+
+ public void internalRemoveSettings() {
+ element.getParentNode().removeChild(element);
+ }
}
Modified:
trunk/spring-richclient/sandbox/src/test/java/org/springframework/richclient/settings/SettingsAbstractTests.java
===================================================================
---
trunk/spring-richclient/sandbox/src/test/java/org/springframework/richclient/settings/SettingsAbstractTests.java
2006-05-27 21:05:45 UTC (rev 1185)
+++
trunk/spring-richclient/sandbox/src/test/java/org/springframework/richclient/settings/SettingsAbstractTests.java
2006-05-27 23:18:25 UTC (rev 1186)
@@ -15,6 +15,8 @@
*/
package org.springframework.richclient.settings;
+import java.util.Arrays;
+
import junit.framework.TestCase;
import org.springframework.core.enums.LabeledEnum;
@@ -23,240 +25,251 @@
* @author Peter De Bruycker
*/
public abstract class SettingsAbstractTests extends TestCase {
- private Settings settings;
+ private Settings settings;
- private TestablePropertyChangeListener propertyChangeListener;
+ private TestablePropertyChangeListener propertyChangeListener;
- protected final void setUp() throws Exception {
- doSetUp();
-
- settings = createSettings();
- propertyChangeListener = new TestablePropertyChangeListener();
- settings.addPropertyChangeListener(propertyChangeListener);
+ protected final void setUp() throws Exception {
+ doSetUp();
- assertNotNull("settings cannot be null", settings);
- }
-
- protected void doSetUp() throws Exception{
-
- }
+ settings = createSettings();
+ propertyChangeListener = new TestablePropertyChangeListener();
+ settings.addPropertyChangeListener( propertyChangeListener );
- public final void testGetSettings() {
- Settings childSettings = settings.getSettings("child");
- assertNotNull(childSettings);
- assertEquals("child", childSettings.getName());
- assertEquals(settings, childSettings.getParent());
- }
-
- public final void testRemove() {
- settings.setString("key", "value");
- assertTrue(settings.contains("key"));
- settings.remove("key");
- assertFalse(settings.contains("key"));
- }
+ assertNotNull( "settings cannot be null", settings );
+ }
- public final void testBoolean() {
- String key = "boolean-value";
- Boolean defaultValue = Boolean.FALSE;
- Boolean newValue = Boolean.TRUE;
+ protected void doSetUp() throws Exception {
- // default value
- assertEquals(defaultValue.booleanValue(),
settings.getBoolean(key));
- assertEquals(defaultValue.booleanValue(),
settings.getDefaultBoolean(key));
- assertTrue(settings.isDefault(key));
- assertFalse(settings.contains(key));
+ }
- // change the value
- settings.setBoolean(key, newValue.booleanValue());
+ public final void testGetSettings() {
+ Settings childSettings = settings.getSettings( "child" );
+ assertTrue( Arrays.asList( settings.getChildSettings() ).contains(
"child" ) );
- assertEquals(newValue.booleanValue(), settings.getBoolean(key));
- assertFalse(settings.isDefault(key));
- assertTrue(settings.contains(key));
+ assertNotNull( childSettings );
+ assertEquals( "child", childSettings.getName() );
+ assertEquals( settings, childSettings.getParent() );
+ }
- // check property change event
- assertPropertyChangeEventFired(key, defaultValue, newValue);
- propertyChangeListener.reset();
+ public final void testRemove() {
+ settings.setString( "key", "value" );
+ assertTrue( settings.contains( "key" ) );
+ settings.remove( "key" );
+ assertFalse( settings.contains( "key" ) );
+ }
- // change the value to the same value, no property change event
should
- // be fired
- settings.setBoolean(key, newValue.booleanValue());
- assertEquals(0, propertyChangeListener.getCount());
- }
+ public final void testRemoveSettings() {
+ Settings childSettings = settings.getSettings( "child" );
+ assertTrue( Arrays.asList( settings.getChildSettings() ).contains(
"child" ) );
- public final void testInt() {
- String key = "int-value";
- Integer defaultValue = new Integer(0);
- Integer newValue = new Integer(5);
+ childSettings.removeSettings();
- // default value
- assertEquals(defaultValue.intValue(), settings.getInt(key));
- assertEquals(defaultValue.intValue(),
settings.getDefaultInt(key));
- assertTrue(settings.isDefault(key));
- assertFalse(settings.contains(key));
+ assertFalse( Arrays.asList( settings.getChildSettings() ).contains(
"child" ) );
+ }
- // change the value
- settings.setInt(key, newValue.intValue());
+ public final void testBoolean() {
+ String key = "boolean-value";
+ Boolean defaultValue = Boolean.FALSE;
+ Boolean newValue = Boolean.TRUE;
- assertEquals(newValue.intValue(), settings.getInt(key));
- assertFalse(settings.isDefault(key));
- assertTrue(settings.contains(key));
+ // default value
+ assertEquals( defaultValue.booleanValue(), settings.getBoolean( key )
);
+ assertEquals( defaultValue.booleanValue(), settings.getDefaultBoolean(
key ) );
+ assertTrue( settings.isDefault( key ) );
+ assertFalse( settings.contains( key ) );
- // check property change event
- assertPropertyChangeEventFired(key, defaultValue, newValue);
- propertyChangeListener.reset();
+ // change the value
+ settings.setBoolean( key, newValue.booleanValue() );
- // change the value to the same value, no property change event
should
- // be fired
- settings.setInt(key, newValue.intValue());
- assertEquals(0, propertyChangeListener.getCount());
- }
+ assertEquals( newValue.booleanValue(), settings.getBoolean( key ) );
+ assertFalse( settings.isDefault( key ) );
+ assertTrue( settings.contains( key ) );
- public final void testLong() {
- String key = "long-value";
- Long defaultValue = new Long(0);
- Long newValue = new Long(555L);
+ // check property change event
+ assertPropertyChangeEventFired( key, defaultValue, newValue );
+ propertyChangeListener.reset();
- // default value
- assertEquals(defaultValue.longValue(), settings.getLong(key));
- assertEquals(defaultValue.longValue(),
settings.getDefaultLong(key));
- assertTrue(settings.isDefault(key));
- assertFalse(settings.contains(key));
+ // change the value to the same value, no property change event should
+ // be fired
+ settings.setBoolean( key, newValue.booleanValue() );
+ assertEquals( 0, propertyChangeListener.getCount() );
+ }
- // change the value
- settings.setLong(key, newValue.longValue());
+ public final void testInt() {
+ String key = "int-value";
+ Integer defaultValue = new Integer( 0 );
+ Integer newValue = new Integer( 5 );
- assertEquals(newValue.longValue(), settings.getLong(key));
- assertFalse(settings.isDefault(key));
- assertTrue(settings.contains(key));
+ // default value
+ assertEquals( defaultValue.intValue(), settings.getInt( key ) );
+ assertEquals( defaultValue.intValue(), settings.getDefaultInt( key ) );
+ assertTrue( settings.isDefault( key ) );
+ assertFalse( settings.contains( key ) );
- // check property change event
- assertPropertyChangeEventFired(key, defaultValue, newValue);
- propertyChangeListener.reset();
+ // change the value
+ settings.setInt( key, newValue.intValue() );
- // change the value to the same value, no property change event
should
- // be fired
- settings.setLong(key, newValue.longValue());
- assertEquals(0, propertyChangeListener.getCount());
- }
+ assertEquals( newValue.intValue(), settings.getInt( key ) );
+ assertFalse( settings.isDefault( key ) );
+ assertTrue( settings.contains( key ) );
- public final void testFloat() {
- String key = "float-value";
- Float defaultValue = new Float(0.0f);
- Float newValue = new Float(1.23f);
+ // check property change event
+ assertPropertyChangeEventFired( key, defaultValue, newValue );
+ propertyChangeListener.reset();
- // default value
- assertEquals(defaultValue.floatValue(), settings.getFloat(key),
0.0f);
- assertEquals(defaultValue.floatValue(),
settings.getDefaultFloat(key), 0.0f);
- assertTrue(settings.isDefault(key));
- assertFalse(settings.contains(key));
+ // change the value to the same value, no property change event should
+ // be fired
+ settings.setInt( key, newValue.intValue() );
+ assertEquals( 0, propertyChangeListener.getCount() );
+ }
- // change the value
- settings.setFloat(key, newValue.floatValue());
+ public final void testLong() {
+ String key = "long-value";
+ Long defaultValue = new Long( 0 );
+ Long newValue = new Long( 555L );
- assertEquals(newValue.floatValue(), settings.getFloat(key),
0.0f);
- assertFalse(settings.isDefault(key));
- assertTrue(settings.contains(key));
+ // default value
+ assertEquals( defaultValue.longValue(), settings.getLong( key ) );
+ assertEquals( defaultValue.longValue(), settings.getDefaultLong( key )
);
+ assertTrue( settings.isDefault( key ) );
+ assertFalse( settings.contains( key ) );
- // check property change event
- assertPropertyChangeEventFired(key, defaultValue, newValue);
- propertyChangeListener.reset();
+ // change the value
+ settings.setLong( key, newValue.longValue() );
- // change the value to the same value, no property change event
should
- // be fired
- settings.setFloat(key, newValue.floatValue());
- assertEquals(0, propertyChangeListener.getCount());
- }
+ assertEquals( newValue.longValue(), settings.getLong( key ) );
+ assertFalse( settings.isDefault( key ) );
+ assertTrue( settings.contains( key ) );
- public final void testDouble() {
- String key = "double-value";
- Double defaultValue = new Double(0.0);
- Double newValue = new Double(1.23);
+ // check property change event
+ assertPropertyChangeEventFired( key, defaultValue, newValue );
+ propertyChangeListener.reset();
- // default value
- assertEquals(defaultValue.doubleValue(),
settings.getDouble(key), 0.0);
- assertEquals(defaultValue.doubleValue(),
settings.getDefaultDouble(key), 0.0);
- assertTrue(settings.isDefault(key));
- assertFalse(settings.contains(key));
+ // change the value to the same value, no property change event should
+ // be fired
+ settings.setLong( key, newValue.longValue() );
+ assertEquals( 0, propertyChangeListener.getCount() );
+ }
- // change the value
- settings.setDouble(key, newValue.doubleValue());
+ public final void testFloat() {
+ String key = "float-value";
+ Float defaultValue = new Float( 0.0f );
+ Float newValue = new Float( 1.23f );
- assertEquals(newValue.doubleValue(), settings.getDouble(key),
0.0);
- assertFalse(settings.isDefault(key));
- assertTrue(settings.contains(key));
+ // default value
+ assertEquals( defaultValue.floatValue(), settings.getFloat( key ),
0.0f );
+ assertEquals( defaultValue.floatValue(), settings.getDefaultFloat( key
), 0.0f );
+ assertTrue( settings.isDefault( key ) );
+ assertFalse( settings.contains( key ) );
- // check property change event
- assertPropertyChangeEventFired(key, defaultValue, newValue);
- propertyChangeListener.reset();
+ // change the value
+ settings.setFloat( key, newValue.floatValue() );
- // change the value to the same value, no property change event
should
- // be fired
- settings.setDouble(key, newValue.doubleValue());
- assertEquals(0, propertyChangeListener.getCount());
- }
+ assertEquals( newValue.floatValue(), settings.getFloat( key ), 0.0f );
+ assertFalse( settings.isDefault( key ) );
+ assertTrue( settings.contains( key ) );
- public final void testString() {
- String key = "string-value";
- String defaultValue = "";
- String newValue = "value";
+ // check property change event
+ assertPropertyChangeEventFired( key, defaultValue, newValue );
+ propertyChangeListener.reset();
- // default value
- assertEquals(defaultValue, settings.getString(key));
- assertEquals(defaultValue, settings.getDefaultString(key));
- assertTrue(settings.isDefault(key));
- assertFalse(settings.contains(key));
+ // change the value to the same value, no property change event should
+ // be fired
+ settings.setFloat( key, newValue.floatValue() );
+ assertEquals( 0, propertyChangeListener.getCount() );
+ }
- // change the value
- settings.setString(key, newValue);
+ public final void testDouble() {
+ String key = "double-value";
+ Double defaultValue = new Double( 0.0 );
+ Double newValue = new Double( 1.23 );
- assertEquals(newValue, settings.getString(key));
- assertFalse(settings.isDefault(key));
- assertTrue(settings.contains(key));
+ // default value
+ assertEquals( defaultValue.doubleValue(), settings.getDouble( key ),
0.0 );
+ assertEquals( defaultValue.doubleValue(), settings.getDefaultDouble(
key ), 0.0 );
+ assertTrue( settings.isDefault( key ) );
+ assertFalse( settings.contains( key ) );
- // check property change event
- assertPropertyChangeEventFired(key, defaultValue, newValue);
- propertyChangeListener.reset();
+ // change the value
+ settings.setDouble( key, newValue.doubleValue() );
- // change the value to the same value, no property change event
should
- // be fired
- settings.setString(key, newValue);
- assertEquals(0, propertyChangeListener.getCount());
- }
+ assertEquals( newValue.doubleValue(), settings.getDouble( key ), 0.0 );
+ assertFalse( settings.isDefault( key ) );
+ assertTrue( settings.contains( key ) );
- public final void testEnum() {
- String key = "enum-value";
- LabeledEnum defaultValue = null;
- LabeledEnum newValue = TestEnum.ENUM2;
+ // check property change event
+ assertPropertyChangeEventFired( key, defaultValue, newValue );
+ propertyChangeListener.reset();
- // default value
- assertEquals(defaultValue, settings.getLabeledEnum(key));
- assertEquals(defaultValue, settings.getDefaultLabeledEnum(key));
- assertTrue(settings.isDefault(key));
- assertFalse(settings.contains(key));
+ // change the value to the same value, no property change event should
+ // be fired
+ settings.setDouble( key, newValue.doubleValue() );
+ assertEquals( 0, propertyChangeListener.getCount() );
+ }
- // change the value
- settings.setLabeledEnum(key, newValue);
+ public final void testString() {
+ String key = "string-value";
+ String defaultValue = "";
+ String newValue = "value";
- assertEquals(newValue, settings.getLabeledEnum(key));
- assertFalse(settings.isDefault(key));
- assertTrue(settings.contains(key));
+ // default value
+ assertEquals( defaultValue, settings.getString( key ) );
+ assertEquals( defaultValue, settings.getDefaultString( key ) );
+ assertTrue( settings.isDefault( key ) );
+ assertFalse( settings.contains( key ) );
- // check property change event
- assertPropertyChangeEventFired(key, defaultValue, newValue);
- propertyChangeListener.reset();
+ // change the value
+ settings.setString( key, newValue );
- // change the value to the same value, no property change event
should
- // be fired
- settings.setLabeledEnum(key, newValue);
- assertEquals(0, propertyChangeListener.getCount());
- }
+ assertEquals( newValue, settings.getString( key ) );
+ assertFalse( settings.isDefault( key ) );
+ assertTrue( settings.contains( key ) );
- private void assertPropertyChangeEventFired(String key, Object
oldValue, Object newValue) {
- assertEquals(1, propertyChangeListener.getCount());
- assertEquals(key,
propertyChangeListener.getEvent().getPropertyName());
- assertEquals(newValue,
propertyChangeListener.getEvent().getNewValue());
- assertEquals(oldValue,
propertyChangeListener.getEvent().getOldValue());
- }
+ // check property change event
+ assertPropertyChangeEventFired( key, defaultValue, newValue );
+ propertyChangeListener.reset();
- protected abstract Settings createSettings() throws Exception;
+ // change the value to the same value, no property change event should
+ // be fired
+ settings.setString( key, newValue );
+ assertEquals( 0, propertyChangeListener.getCount() );
+ }
+
+ public final void testEnum() {
+ String key = "enum-value";
+ LabeledEnum defaultValue = null;
+ LabeledEnum newValue = TestEnum.ENUM2;
+
+ // default value
+ assertEquals( defaultValue, settings.getLabeledEnum( key ) );
+ assertEquals( defaultValue, settings.getDefaultLabeledEnum( key ) );
+ assertTrue( settings.isDefault( key ) );
+ assertFalse( settings.contains( key ) );
+
+ // change the value
+ settings.setLabeledEnum( key, newValue );
+
+ assertEquals( newValue, settings.getLabeledEnum( key ) );
+ assertFalse( settings.isDefault( key ) );
+ assertTrue( settings.contains( key ) );
+
+ // check property change event
+ assertPropertyChangeEventFired( key, defaultValue, newValue );
+ propertyChangeListener.reset();
+
+ // change the value to the same value, no property change event should
+ // be fired
+ settings.setLabeledEnum( key, newValue );
+ assertEquals( 0, propertyChangeListener.getCount() );
+ }
+
+ private void assertPropertyChangeEventFired( String key, Object oldValue,
Object newValue ) {
+ assertEquals( 1, propertyChangeListener.getCount() );
+ assertEquals( key, propertyChangeListener.getEvent().getPropertyName()
);
+ assertEquals( newValue,
propertyChangeListener.getEvent().getNewValue() );
+ assertEquals( oldValue,
propertyChangeListener.getEvent().getOldValue() );
+ }
+
+ protected abstract Settings createSettings() throws Exception;
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------
All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
spring-rich-c-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spring-rich-c-cvs