[jboss-svn-commits] JBL Code SVN: r19603 - in labs/jbossrules/trunk/drools-jbrms/src: main/java/org/drools/brms/server/util and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Apr 16 22:26:09 EDT 2008


Author: michael.neale at jboss.com
Date: 2008-04-16 22:26:08 -0400 (Wed, 16 Apr 2008)
New Revision: 19603

Modified:
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java
   labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/ClassicDRLImporter.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/ClassicDRLImporterTest.java
   labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java
Log:
JBRULES-1565 Merging of imported drl headers

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java	2008-04-17 02:11:11 UTC (rev 19602)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/files/FileManagerUtils.java	2008-04-17 02:26:08 UTC (rev 19603)
@@ -200,6 +200,7 @@
         boolean existing = false;
         if ( repository.containsPackage( imp.getPackageName() ) ) {
             pkg = repository.loadPackage( imp.getPackageName() );
+            pkg.updateHeader(ClassicDRLImporter.mergeLines(pkg.getHeader(), imp.getPackageHeader()));
             existing = true;
         } else {
             pkg = repository.createPackage( imp.getPackageName(), "<imported>" );

Modified: labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/ClassicDRLImporter.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/ClassicDRLImporter.java	2008-04-17 02:11:11 UTC (rev 19602)
+++ labs/jbossrules/trunk/drools-jbrms/src/main/java/org/drools/brms/server/util/ClassicDRLImporter.java	2008-04-17 02:26:08 UTC (rev 19603)
@@ -22,7 +22,10 @@
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -189,5 +192,29 @@
         public String content;
     }
 
+    /**
+     * This merges the toMerge new schtuff into the existing. Line by line, simple stuff.
+     */
+	public static String mergeLines(String existing, String toMerge) {
 
+		if (toMerge == null || toMerge.equals("")) {
+			return existing;
+		}
+		if (existing == null  || existing.equals("")) {
+			return toMerge;
+		}
+		Set existingLines =  new HashSet<String>(Arrays.asList(existing.split("\n")));
+		String[] newLines = toMerge.split("\n");
+		for (int i = 0; i < newLines.length; i++) {
+			String newLine = newLines[i].trim();
+
+			if (!newLine.equals("") && !existingLines.contains(newLines[i].trim())) {
+				existing = existing + "\n" + newLines[i];
+			}
+		}
+		return existing;
+
+	}
+
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/ClassicDRLImporterTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/ClassicDRLImporterTest.java	2008-04-17 02:11:11 UTC (rev 19602)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/ClassicDRLImporterTest.java	2008-04-17 02:26:08 UTC (rev 19603)
@@ -124,4 +124,20 @@
                       cleanActual );
     }
 
+    public void testMergeHeader() {
+    	String header = "import foo.bar\nimport wee.waa\n\nglobal goo.ber baz\n";
+    	String toMerge = "import ninja\nimport foo.bar\nimport slack.bladder\n\nimport wee.waa";
+
+    	String result = ClassicDRLImporter.mergeLines(header, toMerge);
+
+    	assertEquals("import foo.bar\nimport wee.waa\n\nglobal goo.ber baz\n\nimport ninja\nimport slack.bladder", result);
+
+    	assertEquals("abc", ClassicDRLImporter.mergeLines("abc", ""));
+
+    	assertEquals("qed", ClassicDRLImporter.mergeLines("qed", null));
+
+    	assertEquals("xyz", ClassicDRLImporter.mergeLines("", "xyz"));
+    	assertEquals("xyz", ClassicDRLImporter.mergeLines(null, "xyz"));
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java	2008-04-17 02:11:11 UTC (rev 19602)
+++ labs/jbossrules/trunk/drools-jbrms/src/test/java/org/drools/brms/server/util/FileManagerUtilsTest.java	2008-04-17 02:26:08 UTC (rev 19603)
@@ -225,7 +225,10 @@
 		assertNotNull(pkg);
 
 		// it should not overwrite this.
-		assertTrue(pkg.getHeader().indexOf("import should not see") == -1);
+		String hdr = pkg.getHeader();
+		assertTrue(hdr.indexOf("import should not see") > -1);
+		assertTrue(hdr.indexOf("import blah") > -1);
+		assertTrue(hdr.indexOf("import should not see") > hdr.indexOf("import blah"));
 
 		rules = iteratorToList(pkg.getAssets());
 		assertEquals(3, rules.size());




More information about the jboss-svn-commits mailing list