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.Window;
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.TextBox;
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.FormStylePopup;
import org.uberfire.client.common.SmallLabel;

public class TestRunnerWidget extends Composite implements HasBusyIndicator {


    FlexTable results = new FlexTable();
    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) {
                final FormStylePopup pop = new FormStylePopup();
                final TextBox sessionNameTextBox = new TextBox();       
                pop.addAttribute(TestScenarioConstants.INSTANCE.SessionName() + ":", sessionNameTextBox);

                Button ok = new Button("OK");
                ok.addClickHandler(new ClickHandler() {
                    public void onClick(ClickEvent event) {
                        if(sessionNameTextBox.getText() == null || "".equals(sessionNameTextBox.getText())) {
                            Window.alert(TestScenarioConstants.INSTANCE.PleaseInputSessionName());
                            return;
                        }
                       
                        BusyPopup.showMessage(TestScenarioConstants.INSTANCE.BuildingAndRunningScenario());

                        testScenarioEditorService.call(new RemoteCallback<Void>() {
                            @Override
                            public void callback(Void v) {
                                pop.hide();
                                BusyPopup.close();
                                layout.clear();
                                layout.add(actions);
                                layout.add(results);
                                actions.setVisible(true);
                            }
                        },
                                new HasBusyIndicatorDefaultErrorCallback(TestRunnerWidget.this)
                        ).runScenario(path, scenario, sessionNameTextBox.getText());                       
                    }
                });
                pop.addAttribute( "", ok);
                pop.show();               
             }
        });

        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.