summaryrefslogtreecommitdiff
path: root/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TestMap.java
diff options
context:
space:
mode:
Diffstat (limited to 'projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TestMap.java')
-rw-r--r--projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TestMap.java164
1 files changed, 164 insertions, 0 deletions
diff --git a/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TestMap.java b/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TestMap.java
new file mode 100644
index 0000000..8a88e68
--- /dev/null
+++ b/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TestMap.java
@@ -0,0 +1,164 @@
+package net.wotonomy.test;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+import java.util.StringTokenizer;
+
+import net.wotonomy.datastore.DataSoup;
+import net.wotonomy.datastore.SerializedFileSoup;
+import net.wotonomy.datastore.XMLFileSoup;
+import net.wotonomy.foundation.internal.ValueConverter;
+
+public class TestMap extends HashMap
+{
+ public TestMap()
+ {
+ put( "date", new Date() );
+ put( "firstName", randomParse(
+ "Bert|Ernie|Elmo|Zoe|Arthur|Emily|DJ|Grover|Oscar|Max|Big|Twinkle") );
+ put( "middleName", new StringBuffer( randomParse(
+ "Rufus|Remy|Martin|Josephus|Ulysses|Homer|Bart|Tip|Onegin|Meredith|Jay") ) );
+ put( "lastName", randomParse(
+ "Alejandro|Alexander|Bird|Gosling|Joy|Van Hoff|Pedia|Marr|McNealy|Ping") );
+ put( "address", randomParse( "1|2|3|4" ) + randomParse( "0|1|00|10|5|50" ) +
+ randomParse( "0|00|1|01|5|05|9|09||000" ) + " " + randomParse(
+ "Merry|Berry|Perry|Jerry|Meadow|Falls|Elm|Raspberry|Strawberry") + " "
+ + randomParse( "Road|Lane|Court|Drive|Parkway|Terrace" ) );
+ put( "city", randomParse(
+ "Springfield|Sterling|Cascades|Vienna|Reston|Paris|London|Runnymeade") );
+ put( "state", randomParse(
+ "TX|NJ|NY|VA|DC|MD|NC|SC|WV|AR|FL|CA|TN" ) );
+ put( "zip", ValueConverter.getInteger(
+ randomParse( "1|2|3|4" ) + "0" + randomParse( "0|1|2|3|5" ) +
+ randomParse( "6|7|8|9" ) + randomParse( "6|7|8|9" ) ) );
+ put( "age", new Short( (short) ( new Random().nextDouble() * 40 + 18 ) ) );
+ childCount = -1;
+ }
+
+ protected int childCount;
+ public int getChildCount()
+ {
+ if ( childCount == -1 )
+ {
+ //childCount = (int) ( random.nextDouble() * 6 ) - 3; // + 100; // tree scalability test
+ if ( childCount < 0 ) childCount = 0;
+ }
+ return childCount;
+ };
+
+ protected TestMap[] children;
+ public TestMap[] getChildren()
+ {
+ if ( get( "children" ) == null )
+ {
+ int n = getChildCount();
+ TestMap[] children = new TestMap[ n ];
+ for ( int i = 0; i < n; i++ )
+ {
+ children[i] = new TestMap();
+ }
+ put( "children", children );
+ }
+ return (TestMap[]) get( "children" );
+ }
+ public void setChildren( TestMap[] aChildArray )
+ {
+ put( "children", aChildArray );
+ }
+ public List getChildList()
+ {
+ List result = new LinkedList();
+ TestMap[] childArray = getChildren();
+ for ( int i = 0; i < childArray.length; i++ )
+ {
+ result.add( childArray[i] );
+ }
+ return result;
+ }
+ public void setChildList( List aChildList )
+ {
+ TestMap[] children = new TestMap[ aChildList.size() ];
+ for ( int i = 0; i < children.length; i++ )
+ {
+ children[i] = (TestMap) aChildList.get( i );
+ }
+ setChildren( children );
+ }
+
+ public String getFullName()
+ {
+ return get( "firstName" ) + " " + get( "middleName" ) + " " + get( "lastName" );
+ }
+
+ public boolean equals( Object anObject )
+ {
+ return anObject == this;
+ }
+
+ public String toString()
+ {
+ return "[" + getClass().getName() + ":" + getFullName() + "]";
+ }
+
+ // statics
+
+ private static Random random = new Random();
+ private static String randomParse( String aString )
+ {
+ String result = "";
+ StringTokenizer tokens = new StringTokenizer( aString, "|" );
+ int n = (int) ( random.nextDouble() * tokens.countTokens() );
+ for ( int i = 0; i <= n; i++ )
+ {
+ result = tokens.nextToken();
+ }
+ return result;
+ }
+
+ public static void main( String[] argv )
+ {
+ int count = 100;
+ boolean xmlMode = false;
+ if ( argv.length > 0 )
+ {
+ Integer parsed = ValueConverter.getInteger( argv[0] );
+ if ( parsed != null ) count = parsed.intValue();
+
+ if ( argv.length > 1 )
+ {
+ if ( argv[1].indexOf( "xml" ) > -1 )
+ {
+ xmlMode = true;
+ }
+ }
+ }
+
+long millis = System.currentTimeMillis();
+
+ DataSoup store = null;
+ if ( xmlMode )
+ {
+ store = new XMLFileSoup( "testMaps-xml" );
+ }
+ else
+ {
+ store = new SerializedFileSoup( "testMaps-java" );
+ }
+
+ Object o;
+ for ( int i = 0; i < count; i++ )
+ {
+ store.addObject( new TestMap() );
+ }
+ /*
+ store.addIndex( "age", "age" );
+ store.addIndex( "zipCode", "zipCode" );
+ store.addIndex( "firstName", "firstName" );
+ store.addIndex( "lastName", "lastName" );
+*/
+System.out.println( System.currentTimeMillis() - millis + " milliseconds" );
+ }
+}