[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