[jboss-svn-commits] JBL Code SVN: r19852 - in labs/jbossrules/trunk/drools-jbrms/src: test/java/org/drools/brms/client and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun May 4 05:54:34 EDT 2008
Author: michael.neale at jboss.com
Date: 2008-05-04 05:54:34 -0400 (Sun, 04 May 2008)
New Revision: 19852
Added:
labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/PackageHierarchy.java
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/explorer/
labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/explorer/PackageHierarchyTest.java
Log:
yay - in jetlagged state I was able to make this work
Added: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/PackageHierarchy.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/PackageHierarchy.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/PackageHierarchy.java 2008-05-04 09:54:34 UTC (rev 19852)
@@ -0,0 +1,57 @@
+package org.drools.brms.client.explorer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class PackageHierarchy {
+
+
+ public Folder root = new Folder();
+
+ public void addPackage(String packageName) {
+ Folder folder = root;
+ String[] folders = packageName.split("\\.");
+ for (int i = 0; i < folders.length; i++) {
+ String f = folders[i];
+ Folder existing = folder.contains(f);
+ if (existing == null || existing.children.size() == 0) {
+ folder = folder.add(f);
+ } else {
+ folder = existing;
+ }
+ }
+ }
+
+
+
+ public static class Folder {
+ String name;
+ boolean hasChildren() {
+ return children.size() > 0;
+ }
+
+ public Folder add(String f) {
+ Folder n = new Folder();
+ n.name = f;
+ children.add(n);
+ return n;
+ }
+
+ public String toString() {
+ return name;
+ }
+
+ public Folder contains(String f) {
+ for (int i = 0; i < children.size(); i++) {
+ Folder fld = (Folder) children.get(i);
+ if (fld.name.equals(f)) {
+ return fld;
+ }
+ }
+ return null;
+ }
+
+ public List children = new ArrayList();
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/client/explorer/PackageHierarchy.java
___________________________________________________________________
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/explorer/PackageHierarchyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/explorer/PackageHierarchyTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/explorer/PackageHierarchyTest.java 2008-05-04 09:54:34 UTC (rev 19852)
@@ -0,0 +1,81 @@
+package org.drools.brms.client.explorer;
+
+import org.drools.brms.client.explorer.PackageHierarchy.Folder;
+
+import junit.framework.TestCase;
+
+public class PackageHierarchyTest extends TestCase {
+
+ public void testSimple() {
+ PackageHierarchy h = new PackageHierarchy();
+ h.addPackage("com.foo");
+ Folder root = h.root;
+
+ assertEquals(1, root.children.size());
+ Folder f = (Folder) root.children.get(0);
+ assertEquals("com", f.name);
+ assertEquals(1, f.children.size());
+ f = (Folder) f.children.get(0);
+ assertEquals("foo", f.name);
+
+
+ h.addPackage("com.bar");
+ f = (Folder) root.children.get(0);
+ assertEquals("com", f.name);
+ assertEquals(2, f.children.size());
+ f = (Folder) f.children.get(1);
+ assertEquals("bar", f.name);
+
+ h.addPackage("goo.bar.baz");
+ assertEquals(2, root.children.size());
+ f = (Folder) root.children.get(1);
+ assertEquals("goo", f.name);
+
+ assertEquals(1, f.children.size());
+ f = (Folder) f.children.get(0);
+ assertEquals("bar", f.name);
+
+ assertEquals(1, f.children.size());
+ f= (Folder) f.children.get(0);
+ assertEquals("baz", f.name);
+
+
+ h.addPackage("goo.char.baz");
+ assertEquals(2, root.children.size());
+ f = (Folder) root.children.get(1);
+ assertEquals(2, f.children.size());
+ f = (Folder) f.children.get(1);
+ assertEquals("char", f.name);
+ assertEquals(1, f.children.size());
+ f = (Folder) f.children.get(0);
+ assertEquals("baz", f.name);
+
+ h.addPackage("Whee");
+ assertEquals(3, root.children.size());
+
+
+ }
+
+ public void testComplex() {
+
+ PackageHierarchy h = new PackageHierarchy();
+ h.addPackage("com.bar");
+ h.addPackage("com.bar.baz");
+ assertEquals(1, h.root.children.size());
+ Folder f = (Folder) h.root.children.get(0);
+ assertEquals(2, f.children.size());
+ f = (Folder) f.children.get(0);
+ assertEquals("bar", f.name);
+ assertEquals(0, f.children.size());
+
+ f = (Folder) h.root.children.get(0);
+ f = (Folder) f.children.get(1);
+ assertEquals("bar", f.name);
+
+ assertEquals(1, f.children.size());
+ f = (Folder) f.children.get(0);
+ assertEquals("baz", f.name);
+
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/client/explorer/PackageHierarchyTest.java
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list