org.eclipse.edt.ide.eunit.ui.testresult.ResultSummaryBlock.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.edt.ide.eunit.ui.testresult.ResultSummaryBlock.java

Source

/*******************************************************************************
 * Copyright  2012, 2013 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 * IBM Corporation - initial API and implementation
 *
 *******************************************************************************/
package org.eclipse.edt.ide.eunit.ui.testresult;

import java.util.ArrayList;

import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.forms.DetailsPart;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.MasterDetailsBlock;
import org.eclipse.ui.forms.SectionPart;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.w3c.dom.Element;

public class ResultSummaryBlock extends MasterDetailsBlock {

    private SectionPart spart;
    protected FormPage fPage;

    private static final String TREEROOTNODENAME = "Test Result Summary:";

    public static class TestResultRootNode {
        String rootname;
        boolean isSuccessful = true;
        int expectedTotalTestVariationCnt = -1;
        String startTS = "";
        String endRunTS = "";
        String finalTS = "";
        Element elemRoot;

        ResultStatisticCnts statisticCnts = new ResultStatisticCnts();
    }

    public static class TestResultPkgNode {
        String pkgName;
        boolean isSuccessful = true;
        ResultStatisticCnts statisticCnts = new ResultStatisticCnts();
        ArrayList<Record_ResultSummary> listRS = new ArrayList<Record_ResultSummary>();
    }

    //Record ResultSummary
    //   pkgName String {@XMLAttribute{}};   //package name
    //   name String{@XMLAttribute{}};      //test library part name
    //   resultCode int{@XMLAttribute{}};   //test result code value
    //   testCnt int{@XMLAttribute{}};
    //   passedCnt int{@XMLAttribute{}};
    //   failedCnt int{@XMLAttribute{}};
    //   errCnt int{@XMLAttribute{}};
    //   badCnt int{@XMLAttribute{}};
    //   notRunCnt int{@XMLAttribute{}};   
    //end

    public static class ResultStatisticCnts {
        private int testCnt;
        private int expCnt;
        private int passedCnt;
        private int failedCnt;
        private int exCnt;
        private int badCnt;
        private int notRunCnt;

        public int getTestCnt() {
            return testCnt;
        }

        public int getExpectedCnt() {
            return expCnt;
        }

        public int getPassedCnt() {
            return passedCnt;
        }

        public int getFailedCnt() {
            return failedCnt;
        }

        public int getExCnt() {
            return exCnt;
        }

        public int getBadCnt() {
            return badCnt;
        }

        public int getNotRunCnt() {
            return notRunCnt;
        }

        public ResultStatisticCnts() {
            this(0, 0, 0, 0, 0, 0, 0);
        }

        public ResultStatisticCnts(int testCnt, int expCnt, int passedCnt, int failedCnt, int exCnt, int badCnt,
                int notRunCnt) {
            this.testCnt = testCnt;
            this.expCnt = expCnt;
            this.passedCnt = passedCnt;
            this.failedCnt = failedCnt;
            this.exCnt = exCnt;
            this.badCnt = badCnt;
            this.notRunCnt = notRunCnt;
        }

        public ResultStatisticCnts clone() {
            return new ResultStatisticCnts(testCnt, expCnt, passedCnt, failedCnt, exCnt, badCnt, notRunCnt);
        }

        public ResultStatisticCnts plus(ResultStatisticCnts other) {
            return new ResultStatisticCnts(testCnt + other.testCnt, expCnt + other.expCnt,
                    passedCnt + other.passedCnt, failedCnt + other.failedCnt, exCnt + other.exCnt,
                    badCnt + other.badCnt, notRunCnt + other.notRunCnt);
        }

        /**
         * If any failed or were bad, return ConstantUtil.FAILED.  Otherwise, if any got an
         * exception, return ConstantUtil.EXCEPTION.  Otherwise, if any were
         * skipped, return ConstantUtil.NOT_RUN.  Otherwise, ConstantUtil.PASSED.
         */
        public int overallResult() {
            if (failedCnt > 0 || badCnt > 0)
                return ConstantUtil.FAILED;
            if (exCnt > 0)
                return ConstantUtil.EXCEPTION;
            if (notRunCnt > 0)
                return ConstantUtil.NOT_RUN;
            return ConstantUtil.PASSED;
        }
    }

    public static class Record_ResultSummary {
        String pkgName;
        String name;
        int resultCode;
        boolean isSuccessful;
        ResultStatisticCnts statisticCnts;

        public Record_ResultSummary(String pkgName, String name, int resultCode,
                ResultStatisticCnts statisticCnts) {
            this.pkgName = pkgName;
            this.name = name;
            this.resultCode = resultCode;
            this.isSuccessful = (this.resultCode == ConstantUtil.PASSED);

            this.statisticCnts = statisticCnts.clone();
        }
    }

    public ResultSummaryBlock(FormPage page) {
        fPage = page;
    }

    protected Element getResultSummaryRoot() {
        FormEditor formEditor = fPage.getEditor();

        if (formEditor instanceof TestResultViewer)
            return ((TestResultViewer) formEditor).getResultSummaryRoot();
        return null;
    }

    @Override
    protected void createMasterPart(IManagedForm managedForm, Composite parent) {

        FormToolkit toolkit = managedForm.getToolkit();

        Section section = toolkit.createSection(parent, Section.TITLE_BAR);
        section.setText("Click on a node to view its details.");
        section.marginHeight = 5;
        section.marginWidth = 10;

        Composite seprator = toolkit.createCompositeSeparator(section);
        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.heightHint = 3;
        seprator.setLayoutData(gd);

        createResultSummarySection(managedForm, section, toolkit);
    }

    private void createResultSummarySection(final IManagedForm managedForm, Section section, FormToolkit toolkit) {
        Composite client = toolkit.createComposite(section, SWT.WRAP);
        GridLayout layout = new GridLayout();
        layout.numColumns = 2;
        layout.marginWidth = 2;
        layout.marginHeight = 2;
        client.setLayout(layout);

        Tree tr = createResultSummaryTreeControl(client, toolkit);

        section.setClient(client);
        spart = new SectionPart(section);
        managedForm.addPart(spart);

        TreeViewer fTreeViewer = new TreeViewer(tr);

        fTreeViewer.setContentProvider(new RSTreeContentProvider());
        fTreeViewer.setLabelProvider(new RSTreeLabelProvider());

        TestResultRootNode rootNode = createNewRootNode();
        managedForm.setInput(rootNode);
        fTreeViewer.setInput(managedForm);
        fTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent event) {
                managedForm.fireSelectionChanged(spart, event.getSelection());
                HandleTreeSelectionChanged(event);
            }
        });
        fTreeViewer.setSorter(new ViewerSorter());

    }

    private TestResultRootNode createNewRootNode() {
        TestResultRootNode rootNode = new TestResultRootNode();
        rootNode.elemRoot = getResultSummaryRoot();
        IEditorInput editorinput = fPage.getEditor().getEditorInput();
        if (editorinput instanceof IFileEditorInput) {
            IFileEditorInput fileinput = (IFileEditorInput) editorinput;
            String parentSegment = fileinput.getFile().getParent().getName();
            rootNode.rootname = TREEROOTNODENAME + " " + parentSegment;
        }
        return rootNode;
    }

    protected void HandleTreeSelectionChanged(SelectionChangedEvent event) {
        // TODO Auto-generated method stub

    }

    private Tree createResultSummaryTreeControl(Composite client, FormToolkit toolkit) {
        Tree tr = toolkit.createTree(client, SWT.V_SCROLL);
        tr.setHeaderVisible(true);
        tr.setLinesVisible(true);

        GridData gd = new GridData(GridData.FILL_BOTH);
        gd.heightHint = 20;
        gd.widthHint = 100;
        tr.setLayoutData(gd);
        toolkit.paintBordersFor(client);

        return tr;
    }

    @Override
    protected void createToolBarActions(IManagedForm arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    protected void registerPages(DetailsPart arg0) {
        detailsPart.setPageProvider(new TestResultDetailPageProvider());

    }

}