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

io.github.mianalysis.mia.moduledependencies.Dependency Maven / Gradle / Ivy

Go to download

ModularImageAnalysis (MIA) is an ImageJ plugin which provides a modular framework for assembling image and object analysis workflows. Detected objects can be transformed, filtered, measured and related. Analysis workflows are batch-enabled by default, allowing easy processing of high-content datasets.

There is a newer version: 1.7.0
Show newest version
package io.github.mianalysis.mia.moduledependencies;

import org.scijava.plugin.SciJavaPlugin;
import org.scijava.util.VersionUtils;

public abstract class Dependency implements SciJavaPlugin {
    public enum Relationship {
        LESS_THAN, LESS_THAN_OR_EQUAL_TO, EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, GREATER_THAN, NOT_EQUAL_TO;
    }

    public abstract String getModuleName();
    public abstract String getMessage();
    public abstract String getClassName();
    public abstract String getVersionThreshold();
    public abstract Relationship getRelationship();

    public boolean test() {
        Class dependencyClass = null;
        try {
            dependencyClass = Class.forName(getClassName());
        } catch (ClassNotFoundException e) {
            return false;
        }
        
        int comparison = VersionUtils.compare(dependencyClass.getPackage().getImplementationVersion(),
                this.getVersionThreshold());

        switch (getRelationship()) {
            case LESS_THAN:
                return comparison < 0;

            case LESS_THAN_OR_EQUAL_TO:
                return comparison <= 0;

            case EQUAL_TO:
                return comparison == 0;

            case GREATER_THAN_OR_EQUAL_TO:
                return comparison >= 0;

            case GREATER_THAN:
                return comparison > 0;

            case NOT_EQUAL_TO:
                return comparison != 0;

        }

        return false;

    }

    static String getSymbol(Relationship relationship) {
        switch (relationship) {
            default:
                return "";

            case LESS_THAN:
                return "<";

            case LESS_THAN_OR_EQUAL_TO:
                return "<=";

            case EQUAL_TO:
                return "==";

            case GREATER_THAN_OR_EQUAL_TO:
                return ">=";

            case GREATER_THAN:
                return ">";

            case NOT_EQUAL_TO:
                return "!=";

        }
    }

    @Override
    public String toString() {
        String shortName = getClassName().substring(getClassName().lastIndexOf(".")+1);
        return shortName + " " + getSymbol(getRelationship()) + " " + getVersionThreshold();

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy