[jboss-svn-commits] JBL Code SVN: r19988 - labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sat May 17 13:24:02 EDT 2008
Author: KrisVerlaenen
Date: 2008-05-17 13:24:02 -0400 (Sat, 17 May 2008)
New Revision: 19988
Modified:
labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder/DroolsBuilder.java
Log:
JBRULES-1605: Scan and parse decision tables in CSV format
- builder now also takes .csv files into account
Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder/DroolsBuilder.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder/DroolsBuilder.java 2008-05-17 16:13:38 UTC (rev 19987)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/builder/DroolsBuilder.java 2008-05-17 17:24:02 UTC (rev 19988)
@@ -159,6 +159,20 @@
createMarker(res, t.getMessage(), -1);
}
return false;
+ } else if (res instanceof IFile && "csv".equals(res.getFileExtension())) {
+ removeProblemsFor(res);
+ try {
+ if (clean) {
+ DroolsEclipsePlugin.getDefault().invalidateResource(res);
+ }
+ DroolsBuildMarker[] markers = parseCSVFile((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;
} else if (res instanceof IFile && "brl".equals(res.getFileExtension())) {
removeProblemsFor(res);
try {
@@ -244,6 +258,33 @@
return (DroolsBuildMarker[]) markers.toArray(new DroolsBuildMarker[markers.size()]);
}
+ private DroolsBuildMarker[] parseCSVFile(IFile file) {
+ List markers = new ArrayList();
+ try {
+ SpreadsheetCompiler converter = new SpreadsheetCompiler();
+ String drl = converter.compile(file.getContents(), InputType.CSV);
+ DRLInfo drlInfo =
+ DroolsEclipsePlugin.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();
+ }
+ markers.add(new DroolsBuildMarker(message));
+ }
+ return (DroolsBuildMarker[]) markers.toArray(new DroolsBuildMarker[markers.size()]);
+ }
+
private DroolsBuildMarker[] parseBRLFile(IFile file) {
List markers = new ArrayList();
try {
More information about the jboss-svn-commits
mailing list