[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