Package org.drools.workbench.screens.testscenario.client

Source Code of org.drools.workbench.screens.testscenario.client.TestRunnerWidget

/*
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.drools.workbench.screens.testscenario.client;

import java.util.List;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import org.drools.workbench.models.testscenarios.shared.BuilderResultLine;
import org.drools.workbench.models.testscenarios.shared.Scenario;
import org.drools.workbench.screens.testscenario.client.resources.i18n.TestScenarioConstants;
import org.drools.workbench.screens.testscenario.client.resources.images.AuditEventsImages;
import org.drools.workbench.screens.testscenario.service.ScenarioTestEditorService;
import org.jboss.errai.bus.client.api.RemoteCallback;
import org.jboss.errai.ioc.client.api.Caller;
import org.kie.workbench.common.widgets.client.callbacks.HasBusyIndicatorDefaultErrorCallback;
import org.kie.workbench.common.widgets.client.widget.HasBusyIndicator;
import org.kie.workbench.common.widgets.errors.client.resources.ImageResources;
import org.uberfire.backend.vfs.Path;
import org.uberfire.client.common.BusyPopup;
import org.uberfire.client.common.SmallLabel;

public class TestRunnerWidget extends Composite implements HasBusyIndicator {

    private FlexTable results = new FlexTable();
    private VerticalPanel layout = new VerticalPanel();
    private SimplePanel actions = new SimplePanel();

    public TestRunnerWidget( final Scenario scenario,
                             final Caller<ScenarioTestEditorService> testScenarioEditorService,
                             final Path path ) {

        final Button run = new Button( TestScenarioConstants.INSTANCE.RunScenario() );
        run.setTitle( TestScenarioConstants.INSTANCE.RunScenarioTip() );
        run.addClickHandler( new ClickHandler() {

            public void onClick( ClickEvent event ) {
                testScenarioEditorService.call( new RemoteCallback<Void>() {
                    @Override
                    public void callback( Void v ) {
                        BusyPopup.close();
                        layout.clear();
                        layout.add( actions );
                        layout.add( results );
                        actions.setVisible( true );
                    }
                }, new HasBusyIndicatorDefaultErrorCallback( TestRunnerWidget.this ) ).runScenario( path,
                                                                                                    scenario );
            }
        } );

        actions.add( run );
        layout.add( actions );
        initWidget( layout );
    }

    private void showErrors( List<BuilderResultLine> rs ) {
        results.clear();
        results.setVisible( true );

        FlexTable errTable = new FlexTable();
        errTable.setStyleName( "build-Results" );
        for ( int i = 0; i < rs.size(); i++ ) {
            int row = i;
            final BuilderResultLine res = rs.get( i );
            errTable.setWidget( row,
                                0,
                                new Image( ImageResources.INSTANCE.error() ) );
            if ( res.getAssetFormat().equals( "package" ) ) {
                errTable.setText( row,
                                  1,
                                  TestScenarioConstants.INSTANCE.packageConfigurationProblem1() + res.getMessage() );
            } else {
                errTable.setText( row,
                                  1,
                                  "[" + res.getAssetName() + "] " + res.getMessage() );
            }

        }
        ScrollPanel scroll = new ScrollPanel( errTable );

        scroll.setWidth( "100%" );
        results.setWidget( 0,
                           0,
                           scroll );

    }

//    private void showResults(final ScenarioEditorPresenter parent,
//                             final SingleScenarioResult data) {
//        results.clear();
//        results.setVisible(true);
//
//        parent.setScenario(data.getResult().getScenario());
//
//        parent.setShowResults(true);
//        parent.renderEditor();
//
//        int failures = 0;
//        int total = 0;
//        VerticalPanel resultsDetail = new VerticalPanel();
//
//        for (Iterator<Fixture> fixturesIterator = data.getResult().getScenario().getFixtures().iterator(); fixturesIterator.hasNext(); ) {
//            Fixture fixture = fixturesIterator.next();
//            if (fixture instanceof VerifyRuleFired) {
//
//                VerifyRuleFired verifyRuleFired = (VerifyRuleFired) fixture;
//                HorizontalPanel panel = new HorizontalPanel();
//                if (!verifyRuleFired.getSuccessResult().booleanValue()) {
//                    panel.add(new Image(CommonImages.INSTANCE.warning()));
//                    failures++;
//                } else {
//                    panel.add(new Image(TestScenarioImages.INSTANCE.testPassed()));
//                }
//                panel.add(new SmallLabel(verifyRuleFired.getExplanation()));
//                resultsDetail.add(panel);
//                total++;
//            } else if (fixture instanceof VerifyFact) {
//                VerifyFact verifyFact = (VerifyFact) fixture;
//                for (Iterator<VerifyField> fieldIterator = verifyFact.getFieldValues().iterator(); fieldIterator.hasNext(); ) {
//                    total++;
//                    VerifyField verifyField = fieldIterator.next();
//                    HorizontalPanel panel = new HorizontalPanel();
//                    if (!verifyField.getSuccessResult().booleanValue()) {
//                        panel.add(new Image(CommonImages.INSTANCE.warning()));
//                        failures++;
//                    } else {
//                        panel.add(new Image(TestScenarioImages.INSTANCE.testPassed()));
//                    }
//                    panel.add(new SmallLabel(verifyField.getExplanation()));
//                    resultsDetail.add(panel);
//                }
//
//            } else if (fixture instanceof ExecutionTrace) {
//                ExecutionTrace ex = (ExecutionTrace) fixture;
//                if (ex.getNumberOfRulesFired() == data.getResult().getScenario().getMaxRuleFirings()) {
//                    Window.alert(TestScenarioConstants.INSTANCE.MaxRuleFiringsReachedWarning(
//                            data.getResult().getScenario().getMaxRuleFirings()));
//                }
//            }
//
//        }
//
//        results.setWidget(0,
//                0,
//                new SmallLabel(TestScenarioConstants.INSTANCE.Results()));
//        results.getFlexCellFormatter().setHorizontalAlignment(0,
//                0,
//                HasHorizontalAlignment.ALIGN_RIGHT);
//        if (failures > 0) {
//            results.setWidget(0,
//                    1,
//                    new PercentageBar("#CC0000",
//                            150,
//                            failures,
//                            total));
//        } else {
//            results.setWidget(0,
//                    1,
//                    new PercentageBar("GREEN",
//                            150,
//                            failures,
//                            total));
//        }
//
//        results.setWidget(1,
//                0,
//                new SmallLabel(TestScenarioConstants.INSTANCE.SummaryColon()));
//        results.getFlexCellFormatter().setHorizontalAlignment(1,
//                0,
//                HasHorizontalAlignment.ALIGN_RIGHT);
//        results.setWidget(1,
//                1,
//                resultsDetail);
//        results.setWidget(2,
//                0,
//                new SmallLabel(TestScenarioConstants.INSTANCE.AuditLogColon()));
//
//        final Button showExp = new Button(TestScenarioConstants.INSTANCE.ShowEventsButton());
//        results.setWidget(2,
//                1,
//                showExp);
//        showExp.addClickHandler(new ClickHandler() {
//
//            public void onClick(ClickEvent event) {
//                showExp.setVisible(false);
//                results.setWidget(2,
//                        1,
//                        doAuditView(data.getAuditLog()));
//            }
//        });
//
//    }

    private Widget doAuditView( List<String[]> auditLog ) {
        VerticalPanel vp = new VerticalPanel();
        vp.add( new HTML( "<hr/>" ) );
        FlexTable g = new FlexTable();
        int row = 0;
        boolean firing = false;
        for ( int i = 0; i < auditLog.size(); i++ ) {
            String[] lg = auditLog.get( i );

            int id = Integer.parseInt( lg[ 0 ] );
            if ( id <= 7 ) {
                if ( id <= 3 ) {
                    if ( !firing ) {
                        g.setWidget( row,
                                     0,
                                     getEventImage( lg[ 0 ] ) );
                        g.setWidget( row,
                                     1,
                                     new SmallLabel( lg[ 1 ] ) );
                    } else {
                        g.setWidget( row,
                                     1,
                                     hz( getEventImage( lg[ 0 ] ),
                                         new SmallLabel( lg[ 1 ] ) ) );
                    }
                    row++;
                } else if ( id == 6 ) {
                    firing = true;
                    g.setWidget( row,
                                 0,
                                 getEventImage( lg[ 0 ] ) );
                    g.setWidget( row,
                                 1,
                                 new SmallLabel( "<b>" + lg[ 1 ] + "</b>" ) );
                    row++;
                } else if ( id == 7 ) {
                    firing = false;
                } else {
                    g.setWidget( row,
                                 0,
                                 getEventImage( lg[ 0 ] ) );
                    g.setWidget( row,
                                 1,
                                 new SmallLabel( "<font color='grey'>" + lg[ 1 ] + "</font>" ) );
                    row++;
                }
            } else {
                g.setWidget( row,
                             0,
                             new Image( AuditEventsImages.INSTANCE.miscEvent() ) );
                g.setWidget( row,
                             1,
                             new SmallLabel( "<font color='grey'>" + lg[ 1 ] + "</font>" ) );
                row++;
            }
        }
        vp.add( g );
        vp.add( new HTML( "<hr/>" ) );
        return vp;
    }

    private Widget hz( Image image,
                       SmallLabel smallLabel ) {
        HorizontalPanel h = new HorizontalPanel();
        h.add( image );
        h.add( smallLabel );
        return h;
    }

    private Image getEventImage( String eventType ) {
        int type;

        try {
            type = Integer.parseInt( eventType );
        } catch ( NumberFormatException e ) {
            return new Image( AuditEventsImages.INSTANCE.miscEvent() );
        }

        switch ( type ) {
            case 1:
                return new Image( AuditEventsImages.INSTANCE.image1() );
            case 2:
                return new Image( AuditEventsImages.INSTANCE.image2() );
            case 3:
                return new Image( AuditEventsImages.INSTANCE.image3() );
            case 4:
                return new Image( AuditEventsImages.INSTANCE.image4() );
            case 5:
                return new Image( AuditEventsImages.INSTANCE.image5() );
            case 6:
                return new Image( AuditEventsImages.INSTANCE.image6() );
            case 7:
                return new Image( AuditEventsImages.INSTANCE.image7() );
            default:
                return new Image( AuditEventsImages.INSTANCE.miscEvent() );
        }
    }

    @Override
    public void showBusyIndicator( String message ) {
        BusyPopup.showMessage( message );
    }

    @Override
    public void hideBusyIndicator() {
        BusyPopup.close();
    }
}
TOP

Related Classes of org.drools.workbench.screens.testscenario.client.TestRunnerWidget

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.