[jboss-svn-commits] JBL Code SVN: r7751 - in labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide: . editors editors/rete

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Nov 21 17:59:22 EST 2006


Author: KrisVerlaenen
Date: 2006-11-21 17:59:20 -0500 (Tue, 21 Nov 2006)
New Revision: 7751

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/editors/DRLRuleEditor2.java
   labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java
Log:
JBRULES-517: Port ReteOO viewer from Jung /Swing to GEF
 - adjusting ReteViewer to new build system for drls

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-11-21 21:35:54 UTC (rev 7750)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/DroolsIDEPlugin.java	2006-11-21 22:59:20 UTC (rev 7751)
@@ -203,12 +203,17 @@
 	
 	public DRLInfo parseResource(DRLRuleEditor editor, boolean useUnsavedContent, boolean compile) throws DroolsParserException {
 		IResource resource = editor.getResource();
-		DRLInfo result = (DRLInfo) compiledRules.get(resource);
-		if (result == null && !compile) {
-			result = (DRLInfo) parsedRules.get(resource);
+		if (!editor.isDirty() || !useUnsavedContent) {
+			DRLInfo result = (DRLInfo) compiledRules.get(resource);
+			if (result == null && !compile) {
+				result = (DRLInfo) parsedRules.get(resource);
+			}
+			if (result != null) {
+				return result;
+			}
 		}
-		if (result != null) {
-			return result;
+		if (!editor.isDirty()) {
+			return generateParsedResource(editor.getContent(), resource, true, compile);
 		}
 		// TODO: can we cache result when using unsaved content as well? 
 		return generateParsedResource(editor.getContent(), resource, !useUnsavedContent, compile);
@@ -297,6 +302,7 @@
             	// cache result
         		if (useCache) {
 	    			if (compile && !parser.hasErrors()) {
+	    				parsedRules.remove(resource);
 	    				compiledRules.put(resource, result);
 	        			RuleInfo[] ruleInfos = result.getRuleInfos();
 	        			for (int i = 0; i < ruleInfos.length; i++) {

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor2.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor2.java	2006-11-21 21:35:54 UTC (rev 7750)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/DRLRuleEditor2.java	2006-11-21 22:59:20 UTC (rev 7751)
@@ -85,7 +85,7 @@
                 }
             };
 
-            reteViewer = new ReteViewer();
+            reteViewer = new ReteViewer(textEditor);
 
             int text = addPage( textEditor,
                                 getEditorInput() );

Modified: labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java
===================================================================
--- labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java	2006-11-21 21:35:54 UTC (rev 7750)
+++ labs/jbossrules/trunk/drools-ide/src/main/java/org/drools/ide/editors/rete/ReteViewer.java	2006-11-21 22:59:20 UTC (rev 7751)
@@ -15,30 +15,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import org.drools.PackageIntegrationException;
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
-import org.drools.compiler.DrlParser;
-import org.drools.compiler.DroolsParserException;
-import org.drools.compiler.PackageBuilder;
+import org.drools.ide.DRLInfo;
 import org.drools.ide.DroolsIDEPlugin;
-import org.drools.ide.builder.DroolsBuilder;
-import org.drools.ide.editors.DSLAdapter;
+import org.drools.ide.editors.DRLRuleEditor;
 import org.drools.ide.editors.rete.model.ReteGraph;
 import org.drools.ide.editors.rete.part.VertexEditPartFactory;
-import org.drools.ide.util.ProjectClassLoader;
-import org.drools.lang.descr.PackageDescr;
 import org.drools.reteoo.BaseVertex;
 import org.drools.reteoo.ReteooRuleBase;
 import org.drools.reteoo.ReteooVisitor;
 import org.drools.rule.Package;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.draw2d.ColorConstants;
 import org.eclipse.draw2d.ConnectionLayer;
@@ -59,10 +50,7 @@
 import org.eclipse.gef.editparts.ZoomManager;
 import org.eclipse.gef.ui.parts.GraphicalEditor;
 import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.JavaCore;
 import org.eclipse.swt.SWT;
-import org.eclipse.ui.IFileEditorInput;
 
 /**
  * GEF-based RETE Viewer
@@ -74,8 +62,6 @@
 
     private static final String  MSG_PARSE_ERROR         = "Unable to parse rules to show RETE view!";
 
-    private static final String  JAVA_NATURE             = "org.eclipse.jdt.core.javanature";
-
     private static final int     SIMPLE_ROUTER_MIN_NODES = 100;
 
     ScalableFreeformRootEditPart rootEditPart            = new ScalableFreeformRootEditPart();
@@ -83,14 +69,16 @@
     private ReteGraph            diagram                 = new ReteGraph();
 
     private boolean              relayoutRequired        = true;
+    
+    private DRLRuleEditor drlEditor;
 
     /**
      * Constructor.
      * 
      * @param documentProvider documentProvider must contain Document with rules.
      */
-    public ReteViewer() {
-        super();
+    public ReteViewer(DRLRuleEditor drlEditor) {
+        this.drlEditor = drlEditor;
         setEditDomain( new DefaultEditDomain( this ) );
     }
 
@@ -118,70 +106,22 @@
         return super.getAdapter( type );
     }
 
-    private RuleBase getRuleBase(String contents) throws PackageIntegrationException,
-                                                 DroolsParserException,
-                                                 CoreException {
-        if ( getEditorInput() instanceof IFileEditorInput ) {
-            ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();
-            ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
-            IFile file = ((IFileEditorInput) getEditorInput()).getFile();
-            if ( file.getProject().getNature( JAVA_NATURE ) != null ) {
-                IJavaProject project = JavaCore.create( file.getProject() );
-                newLoader = ProjectClassLoader.getProjectClassLoader( project );
-            }
-
-            Reader dslReader = DSLAdapter.getDSLContent( contents,
-                                                         file );
-
-            try {
-                Thread.currentThread().setContextClassLoader( newLoader );
-
-                return parseRuleBase( contents,
-                                      dslReader );
-
-            } finally {
-                Thread.currentThread().setContextClassLoader( oldLoader );
-            }
+    private RuleBase getRuleBase(String contents) {
+        try {
+        	DRLInfo drlInfo = DroolsIDEPlugin.getDefault().parseResource(drlEditor, true, true);
+        	if (drlInfo != null) {
+        		Package pkg = drlInfo.getPackage();
+        		ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase(RuleBase.RETEOO);
+        		ruleBase.addPackage(pkg);
+        		return ruleBase;
+        	}
+        } catch ( Throwable t ) {
+            DroolsIDEPlugin.log( t );
         }
-
         return null;
-
     }
 
     /**
-     * 
-     * 
-     * @param contents
-     * @param dslReader
-     * @return
-     * @throws DroolsParserException
-     * @throws PackageIntegrationException
-     */
-    public static RuleBase parseRuleBase(String contents,
-                                         Reader dslReader) throws DroolsParserException,
-                                                          PackageIntegrationException {
-        DrlParser parser = new DrlParser();
-
-        PackageDescr packageDescr = null;
-        if ( dslReader == null ) {
-            packageDescr = parser.parse( contents );
-        } else {
-            packageDescr = parser.parse( contents,
-                                         dslReader );
-        }
-
-        //pre build the package
-        PackageBuilder builder = new PackageBuilder();
-        builder.addPackage( packageDescr );
-        Package pkg = builder.getPackage();
-
-        //add the package to a rulebase
-        ReteooRuleBase ruleBase = (ReteooRuleBase) RuleBaseFactory.newRuleBase( RuleBase.RETEOO );
-        ruleBase.addPackage( pkg );
-        return ruleBase;
-    }
-
-    /**
      * Loads model from rule base,
      * calculates rete view and initializes diagram model.
      * @param monitor 
@@ -362,4 +302,4 @@
 
     }
 
-}
\ No newline at end of file
+}




More information about the jboss-svn-commits mailing list