drools-eclipse/org.drools.eclipse/src/main/java/org/drools/eclipse/editors/rete/ReteViewer.java
public ReteGraph loadReteModel(IProgressMonitor monitor,
                                   String contents) throws Throwable {
        if ( relayoutRequired == false ) {
            return diagram;
        }

        ReteGraph newDiagram = new ReteGraph();

        try {

            monitor.beginTask( "Loading RETE Tree",
                               100 );

            monitor.subTask( "Loading Rule Base" );
            InternalKnowledgeBase ruleBase = null;
            try {
                IResource resource = drlEditor.getResource();
                ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
                if ( resource.getProject().getNature( "org.eclipse.jdt.core.javanature" ) != null ) {
                    IJavaProject project = JavaCore.create( resource.getProject() );
                    newLoader = ProjectClassLoader.getProjectClassLoader( project );
                }
                DRLInfo drlInfo = DroolsEclipsePlugin.getDefault().parseResource(drlEditor, true, true);
                if (drlInfo == null) {
                    throw new Exception( "Could not find DRL info" );
                }
                if (drlInfo.getBuilderErrors().length > 0) {
                    throw new Exception( drlInfo.getBuilderErrors().length + " build errors" );
                }
                if (drlInfo.getParserErrors().size() > 0) {
                    throw new Exception( drlInfo.getParserErrors().size() + " parser errors" );
                }

                InternalKnowledgePackage pkg = drlInfo.getPackage();
                RuleBaseConfiguration config = new RuleBaseConfiguration();
                config.setClassLoader(newLoader);
                ruleBase = KnowledgeBaseFactory.newKnowledgeBase(config);
                if (pkg != null) {
                    ruleBase.addPackage(pkg);
                }
            } catch ( Throwable t ) {
                DroolsEclipsePlugin.log( t );
                throw new Exception( MSG_PARSE_ERROR + " " + t.getMessage());
            }

            monitor.worked( 50 );
            if ( monitor.isCanceled() ) {
                throw new InterruptedException();
            }

            monitor.subTask( "Building RETE Tree" );
            final ReteooVisitor visitor = new ReteooVisitor( newDiagram );
            visitor.visitInternalKnowledgeBase( ruleBase );
            monitor.worked( 30 );
            if ( monitor.isCanceled() ) {
                throw new InterruptedException();
            }

            monitor.subTask( "Calculating RETE Tree Layout" );
            BaseVertex rootVertex = visitor.getRootVertex();
            RowList rowList = ReteooLayoutFactory.calculateReteRows( rootVertex );
            ReteooLayoutFactory.layoutRowList( newDiagram,
                                               rowList );
            zeroBaseDiagram( newDiagram );
            monitor.worked( 20 );
            if ( monitor.isCanceled() ) {
                throw new InterruptedException();
            }
            monitor.done();

        } catch ( Throwable t ) {
            if ( !(t instanceof InterruptedException) ) {
                DroolsEclipsePlugin.log( t );
            }
            throw t;
        }
        relayoutRequired = false;
        return newDiagram;
    }
public ReteGraph loadReteModel(IProgressMonitor monitor,
                                   String contents) throws Throwable {
        if ( relayoutRequired == false ) {
            return diagram;
        }

        ReteGraph newDiagram = new ReteGraph();

        try {

            monitor.beginTask( "Loading RETE Tree",
                               100 );

            monitor.subTask( "Loading Rule Base" );
            InternalKnowledgeBase ruleBase = null;
            try {
                IResource resource = drlEditor.getResource();
                ClassLoader newLoader = DroolsBuilder.class.getClassLoader();
                if ( resource.getProject().getNature( "org.eclipse.jdt.core.javanature" ) != null ) {
                    IJavaProject project = JavaCore.create( resource.getProject() );
                    newLoader = ProjectClassLoader.getProjectClassLoader( project );
                }
                DRLInfo drlInfo = DroolsEclipsePlugin.getDefault().parseResource(drlEditor, true, true);
                if (drlInfo == null) {
                    throw new Exception( "Could not find DRL info" );
                }
                if (drlInfo.getBuilderErrors().length > 0) {
                    throw new Exception( drlInfo.getBuilderErrors().length + " build errors" );
                }
                if (drlInfo.getParserErrors().size() > 0) {
                    throw new Exception( drlInfo.getParserErrors().size() + " parser errors" );
                }

                InternalKnowledgePackage pkg = drlInfo.getPackage();
                RuleBaseConfiguration config = new RuleBaseConfiguration();
                config.setClassLoader(newLoader);
                ruleBase = KnowledgeBaseFactory.newKnowledgeBase(config);
                if (pkg != null) {
                    ruleBase.addPackage(pkg);
                }
            } catch ( Throwable t ) {
                DroolsEclipsePlugin.log( t );
                throw new Exception( MSG_PARSE_ERROR + " " + t.getMessage());
            }

            monitor.worked( 50 );
            if ( monitor.isCanceled() ) {
                throw new InterruptedException();
            }

            monitor.subTask( "Building RETE Tree" );
            final ReteooVisitor visitor = new ReteooVisitor( newDiagram );
            visitor.visitInternalKnowledgeBase( ruleBase );
            monitor.worked( 30 );
            if ( monitor.isCanceled() ) {
                throw new InterruptedException();
            }

            monitor.subTask( "Calculating RETE Tree Layout" );
            BaseVertex rootVertex = visitor.getRootVertex();
            RowList rowList = ReteooLayoutFactory.calculateReteRows( rootVertex );
            ReteooLayoutFactory.layoutRowList( newDiagram,
                                               rowList );
            zeroBaseDiagram( newDiagram );
            monitor.worked( 20 );
            if ( monitor.isCanceled() ) {
                throw new InterruptedException();
            }
            monitor.done();

        } catch ( Throwable t ) {
            if ( !(t instanceof InterruptedException) ) {
                DroolsEclipsePlugin.log( t );
            }
            throw t;
        }
        relayoutRequired = false;
        return newDiagram;
    }
public ReteGraph loadReteModel ( IProgressMonitor monitor , String contents ) throws Throwable { if ( relayoutRequired == false ) { return diagram ; } ReteGraph newDiagram = new ReteGraph ( ) ; try { monitor . beginTask ( "Loading RETE Tree" , 100 ) ; monitor . subTask ( "Loading Rule Base" ) ; InternalKnowledgeBase ruleBase = null ; try { IResource resource = drlEditor . getResource ( ) ; ClassLoader newLoader = DroolsBuilder . class . getClassLoader ( ) ; if ( resource . getProject ( ) . getNature ( "org.eclipse.jdt.core.javanature" ) != null ) { IJavaProject project = JavaCore . create ( resource . getProject ( ) ) ; newLoader = ProjectClassLoader . getProjectClassLoader ( project ) ; } DRLInfo drlInfo = DroolsEclipsePlugin . getDefault ( ) . parseResource ( drlEditor , true , true ) ; if ( drlInfo == null ) { throw new Exception ( "Could not find DRL info" ) ; } if ( drlInfo . getBuilderErrors ( ) . length > 0 ) { throw new Exception ( drlInfo . getBuilderErrors ( ) . length + " build errors" ) ; } if ( drlInfo . getParserErrors ( ) . size ( ) > 0 ) { throw new Exception ( drlInfo . getParserErrors ( ) . size ( ) + " parser errors" ) ; } InternalKnowledgePackage pkg = drlInfo . getPackage ( ) ; RuleBaseConfiguration config = new RuleBaseConfiguration ( ) ; config . setClassLoader ( newLoader ) ; ruleBase = KnowledgeBaseFactory . newKnowledgeBase ( config ) ; if ( pkg != null ) { ruleBase . addPackage ( pkg ) ; } } catch ( Throwable t ) { DroolsEclipsePlugin . log ( t ) ; throw new Exception ( MSG_PARSE_ERROR + " " + t . getMessage ( ) ) ; } monitor . worked ( 50 ) ; if ( monitor . isCanceled ( ) ) { throw new InterruptedException ( ) ; } monitor . subTask ( "Building RETE Tree" ) ; final ReteooVisitor visitor = new ReteooVisitor ( newDiagram ) ; visitor . visitInternalKnowledgeBase ( ruleBase ) ; monitor . worked ( 30 ) ; if ( monitor . isCanceled ( ) ) { throw new InterruptedException ( ) ; } monitor . subTask ( "Calculating RETE Tree Layout" ) ; BaseVertex rootVertex = visitor . getRootVertex ( ) ; RowList rowList = ReteooLayoutFactory . calculateReteRows ( rootVertex ) ; ReteooLayoutFactory . layoutRowList ( newDiagram , rowList ) ; zeroBaseDiagram ( newDiagram ) ; monitor . worked ( 20 ) ; if ( monitor . isCanceled ( ) ) { throw new InterruptedException ( ) ; } monitor . done ( ) ; } catch ( Throwable t ) { if ( ! ( t instanceof InterruptedException ) ) { DroolsEclipsePlugin . log ( t ) ; } throw t ; } relayoutRequired = false ; return newDiagram ; }
Loads model from rule base,
calculates rete view and initializes diagram model.
@param monitor
@param contents
@return
Loads model from rule base calculates rete view and initializes diagram model .