All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.maizegenetics.tassel.ShowParameterCachePlugin Maven / Gradle / Ivy

package net.maizegenetics.tassel;

import net.maizegenetics.plugindef.AbstractPlugin;
import net.maizegenetics.plugindef.DataSet;
import net.maizegenetics.plugindef.Datum;
import net.maizegenetics.plugindef.ParameterCache;
import net.maizegenetics.util.TableReportBuilder;

import javax.swing.*;
import java.awt.*;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

/**
 * This plugin creates a table report of the key / value pairs stored in the @{@link ParameterCache}
 *
 * @author Terry Casstevens
 * Created September 08, 2018
 */
public class ShowParameterCachePlugin extends AbstractPlugin {

    public ShowParameterCachePlugin(Frame parentFrame, boolean isInteractive) {
        super(parentFrame, isInteractive);
    }

    @Override
    public DataSet processData(DataSet input) {

        Enumeration keys = ParameterCache.keys();
        if (keys == null) {
            throw new IllegalArgumentException("ShowParameterCachePlugin: processData: there is no parameter cache. Use File -> Preferences to set.");
        }

        List keyList = new ArrayList<>();
        while (keys.hasMoreElements()) {
            keyList.add(keys.nextElement().toString());
        }

        keyList.sort((o1, o2) -> {
            int o1Periods = countPeriods(o1);
            int o2Periods = countPeriods(o2);
            if (o1Periods < o2Periods) {
                return -1;
            } else if (o1Periods > o2Periods) {
                return 1;
            }
            return o1.compareTo(o2);
        });

        TableReportBuilder builder = TableReportBuilder.getInstance("Parameter Cache", new String[]{"plugin", "parameter", "value"});
        for (String key : keyList) {
            int index = key.lastIndexOf('.');
            String plugin = "";
            String parameter = null;
            if (index == -1) {
                parameter = key;
            } else {
                plugin = key.substring(0, index);
                parameter = key.substring(index + 1);
            }
            builder.add(new Object[]{plugin, parameter, ParameterCache.value(key).get()});
        }

        return new DataSet(new Datum("Parameter Cache", builder.build(), null), this);

    }

    private int countPeriods(String str) {
        int result = 0;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == '.') {
                result++;
            }
        }
        return result;
    }

    @Override
    public ImageIcon getIcon() {
        URL imageURL = TasselLogging.class.getResource("/net/maizegenetics/analysis/images/properties.gif");
        if (imageURL == null) {
            return null;
        } else {
            return new ImageIcon(imageURL);
        }
    }

    @Override
    public String getButtonName() {
        return "Show Parameter Cache";
    }

    @Override
    public String getToolTipText() {
        return "Show Parameter Cache";
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy