Package org.erlide.cover.ui.actions

Source Code of org.erlide.cover.ui.actions.ShowCoverageAction

package org.erlide.cover.ui.actions;

import java.io.File;
import java.util.Collection;

import org.eclipse.jface.viewers.TreeViewer;
import org.erlide.cover.core.Activator;
import org.erlide.cover.core.Logger;
import org.erlide.cover.core.MD5Checksum;
import org.erlide.cover.views.model.FunctionStats;
import org.erlide.cover.views.model.ICoverageObject;
import org.erlide.cover.views.model.ModuleStats;
import org.erlide.cover.views.model.StatsTreeModel;
import org.erlide.cover.views.model.StatsTreeObject;
import org.erlide.engine.ErlangEngine;
import org.erlide.util.ErlLogger;

/**
* Showing annotations from context menu for specified objects
*
* @author Aleksandra Lipiec <aleksandra.lipiec@erlang-solutions.com>
*
*/
public class ShowCoverageAction extends CoverageAction {

    private final Logger log;

    public ShowCoverageAction(final TreeViewer viewer) {
        super(viewer);
        log = Activator.getDefault();
    }

    @Override
    protected void perform(final StatsTreeObject selection) {

        if (selection instanceof ModuleStats) {
            final ModuleStats module = (ModuleStats) selection;
            final String name = module.getLabel() + ".erl";
            if (ifMarkAnnotations(module)) {
                module.couldBeMarked = true;
                marker.addAnnotationsToFile(name);
            }
        } else if (selection instanceof FunctionStats) {
            final FunctionStats fs = (FunctionStats) selection;
            final ModuleStats module = (ModuleStats) fs.getParent();
            final String name = module.getLabel() + ".erl";

            if (ifMarkAnnotations(module)) {
                log.info(fs.getLineStart());
                log.info(fs.getLineEnd());
                module.couldBeMarked = true;
                marker.addAnnotationsFragment(name, fs.getLineStart(), fs.getLineEnd());
            }

        } else if (selection.equals(StatsTreeModel.getInstance().getRoot())) {
            // TODO: check annotation tree, only if root mark all annotations
            final Collection<ICoverageObject> col = selection.getModules();
            for (final ICoverageObject module : col) {
                if (ifMarkAnnotations((ModuleStats) module)) {
                    ((ModuleStats) module).couldBeMarked = true;
                } else {
                    ((ModuleStats) module).couldBeMarked = false;
                }
            }
            marker.addAnnotations();
        } else {
            final Collection<ICoverageObject> col = selection.getModules();
            for (final ICoverageObject module : col) {
                if (ifMarkAnnotations((ModuleStats) module)) {
                    final String name = module.getLabel() + ".erl";
                    ((ModuleStats) module).couldBeMarked = true;
                    marker.addAnnotationsToFile(name);
                }
            }
        }

    }

    // calculate md5
    private boolean ifMarkAnnotations(final ModuleStats module) {
        try {
            final File file = new File(ErlangEngine.getInstance().getModel()
                    .findModule(module.getLabel()).getFilePath());

            if (module.getMd5().equals(MD5Checksum.getMD5(file))) {
                return true;
            }
        } catch (final Exception e) {
            ErlLogger.error(e);
        }
        return false;
    }

}
TOP

Related Classes of org.erlide.cover.ui.actions.ShowCoverageAction

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.