[jboss-svn-commits] JBL Code SVN: r6799 - in labs/jbossrules/trunk/drools-ide: . META-INF src/main/java/org/drools/ide src/main/java/org/drools/ide/builder
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Oct 13 17:58:50 EDT 2006
Author: KrisVerlaenen
Date: 2006-10-13 17:58:46 -0400 (Fri, 13 Oct 2006)
New Revision: 6799
Modified:
labs/jbossrules/trunk/drools-ide/.classpath
labs/jbossrules/trunk/drools-ide/META-INF/MANIFEST.MF
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DRLInfo.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java
labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/builder/DroolsBuilder.java
Log:
JBRULES-513: Auto compile of XLS found in rule projects
- all *.xls files in a Drools Project are parsed and errors are shown as problem markers
Modified: labs/jbossrules/trunk/drools-ide/.classpath
===================================================================
--- labs/jbossrules/trunk/drools-ide/.classpath 2006-10-13 21:33:59 UTC (rev 6798)
+++ labs/jbossrules/trunk/drools-ide/.classpath 2006-10-13 21:58:46 UTC (rev 6799)
@@ -4,6 +4,7 @@
<classpathentry kind="src" path="src/test/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="lib" path="lib/jxl-2.4.2.jar"/>
<classpathentry kind="lib" path="lib/xstream-1.1.3.jar"/>
<classpathentry kind="lib" path="lib/commons-lang-2.1.jar"/>
<classpathentry kind="lib" path="lib/junit-3.8.1.jar"/>
@@ -11,5 +12,6 @@
<classpathentry kind="lib" path="lib/commons-jci-core-1.0-406301.jar"/>
<classpathentry kind="lib" path="lib/drools-compiler.jar"/>
<classpathentry kind="lib" path="lib/drools-core.jar"/>
+ <classpathentry kind="lib" path="lib/drools-decisiontables.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Modified: labs/jbossrules/trunk/drools-ide/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/trunk/drools-ide/META-INF/MANIFEST.MF 2006-10-13 21:33:59 UTC (rev 6798)
+++ labs/jbossrules/trunk/drools-ide/META-INF/MANIFEST.MF 2006-10-13 21:58:46 UTC (rev 6799)
@@ -55,4 +55,5 @@
lib/drools-compiler.jar,
lib/drools-core.jar,
lib/drools-decisiontables.jar,
- lib/drools-jsr94.jar
+ lib/drools-jsr94.jar,
+ lib/jxl-2.4.2.jar
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DRLInfo.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DRLInfo.java 2006-10-13 21:33:59 UTC (rev 6798)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DRLInfo.java 2006-10-13 21:58:46 UTC (rev 6799)
@@ -34,6 +34,7 @@
this.packageDescr = packageDescr;
this.parserErrors =
parserErrors == null ? EMPTY_LIST : Collections.unmodifiableList(parserErrors);
+ this.builderErrors = EMPTY_DROOLS_ERROR_ARRAY;
}
public DRLInfo(String pathName, PackageDescr packageDescr, List parserErrors, Package compiledPackage, DroolsError[] builderErrors) {
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java 2006-10-13 21:33:59 UTC (rev 6798)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java 2006-10-13 21:58:46 UTC (rev 6799)
@@ -214,6 +214,14 @@
return generateParsedResource(editor.getContent(), resource, !useUnsavedContent, compile);
}
+ public DRLInfo parseXLSResource(String content, IResource resource) throws DroolsParserException {
+ DRLInfo result = (DRLInfo) compiledRules.get(resource);
+ if (result != null) {
+ return result;
+ }
+ return generateParsedResource(content, resource, false, true);
+ }
+
public void invalidateResource(IResource resource) {
DRLInfo cached = (DRLInfo) compiledRules.remove(resource);
if (cached != null) {
Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/builder/DroolsBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/builder/DroolsBuilder.java 2006-10-13 21:33:59 UTC (rev 6798)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/builder/DroolsBuilder.java 2006-10-13 21:58:46 UTC (rev 6799)
@@ -13,9 +13,10 @@
import org.drools.compiler.FieldTemplateError;
import org.drools.compiler.FunctionError;
import org.drools.compiler.GlobalError;
-import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.compiler.ParserError;
import org.drools.compiler.RuleError;
+import org.drools.decisiontable.InputType;
+import org.drools.decisiontable.SpreadsheetCompiler;
import org.drools.ide.DRLInfo;
import org.drools.ide.DroolsIDEPlugin;
import org.drools.ide.preferences.IDroolsConstants;
@@ -119,7 +120,7 @@
if (res instanceof IFile && "drl".equals(res.getFileExtension())) {
removeProblemsFor(res);
try {
- DroolsBuildMarker[] markers = parseFile((IFile) res, new String(Util.getResourceContentsAsCharArray((IFile) res)));
+ DroolsBuildMarker[] markers = parseDRLFile((IFile) res, new String(Util.getResourceContentsAsCharArray((IFile) res)));
for (int i = 0; i < markers.length; i++) {
createMarker(res, markers[i].getText(), markers[i].getLine());
}
@@ -127,18 +128,23 @@
createMarker(res, t.getMessage(), -1);
}
return false;
+ } else if (res instanceof IFile && "xls".equals(res.getFileExtension())) {
+ removeProblemsFor(res);
+ try {
+ DroolsBuildMarker[] markers = parseXLSFile((IFile) res);
+ for (int i = 0; i < markers.length; i++) {
+ createMarker(res, markers[i].getText(), markers[i].getLine());
+ }
+ } catch (Throwable t) {
+ createMarker(res, t.getMessage(), -1);
+ }
+ return false;
}
+
return true;
}
- private static PackageBuilderConfiguration builder_configuration = new PackageBuilderConfiguration();
-
- public static void setupPackageBuilder(IJavaProject project) {
- String level = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
- builder_configuration.setJavaLanguageLevel(level);
- }
-
- public static DroolsBuildMarker[] parseFile(IFile file, String content) {
+ private DroolsBuildMarker[] parseDRLFile(IFile file, String content) {
List markers = new ArrayList();
try {
DRLInfo drlInfo =
@@ -146,9 +152,8 @@
//parser errors
markParseErrors(markers, drlInfo.getParserErrors());
markOtherErrors(markers, drlInfo.getBuilderErrors());
-
} catch (DroolsParserException e) {
- //we have an error thrown from DrlParser
+ // we have an error thrown from DrlParser
Throwable cause = e.getCause();
if (cause instanceof RecognitionException ) {
RecognitionException recogErr = (RecognitionException) cause;
@@ -156,6 +161,33 @@
}
} catch (Exception t) {
String message = t.getMessage();
+ if (message == null || message.trim().equals("")) {
+ message = "Error: " + t.getClass().getName();
+ }
+ markers.add(new DroolsBuildMarker(message));
+ }
+ return (DroolsBuildMarker[]) markers.toArray(new DroolsBuildMarker[markers.size()]);
+ }
+
+ private DroolsBuildMarker[] parseXLSFile(IFile file) {
+ List markers = new ArrayList();
+ try {
+ SpreadsheetCompiler converter = new SpreadsheetCompiler();
+ String drl = converter.compile(file.getContents(), InputType.XLS);
+ DRLInfo drlInfo =
+ DroolsIDEPlugin.getDefault().parseXLSResource(drl, file);
+ // parser errors
+ markParseErrors(markers, drlInfo.getParserErrors());
+ markOtherErrors(markers, drlInfo.getBuilderErrors());
+ } catch (DroolsParserException e) {
+ // we have an error thrown from DrlParser
+ Throwable cause = e.getCause();
+ if (cause instanceof RecognitionException ) {
+ RecognitionException recogErr = (RecognitionException) cause;
+ markers.add(new DroolsBuildMarker(recogErr.getMessage(), recogErr.line)); //flick back the line number
+ }
+ } catch (Exception t) {
+ String message = t.getMessage();
if (message == null || message.trim().equals( "" )) {
message = "Error: " + t.getClass().getName();
}
@@ -168,7 +200,7 @@
* This will create markers for parse errors.
* Parse errors mean that antlr has picked up some major typos in the input source.
*/
- private static void markParseErrors(List markers, List parserErrors) {
+ private void markParseErrors(List markers, List parserErrors) {
for ( Iterator iter = parserErrors.iterator(); iter.hasNext(); ) {
ParserError err = (ParserError) iter.next();
markers.add(new DroolsBuildMarker(err.getMessage(), err.getRow()));
@@ -178,7 +210,7 @@
/**
* This will create markers for build errors that happen AFTER parsing.
*/
- private static void markOtherErrors(List markers,
+ private void markOtherErrors(List markers,
DroolsError[] buildErrors) {
// TODO are there warnings too?
for (int i = 0; i < buildErrors.length; i++ ) {
More information about the jboss-svn-commits
mailing list