/* * This file is part of Alida, a Java library for * Advanced Library for Integrated Development of Data Analysis Applications. * * Copyright (C) 2010 - @YEAR@ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Fore more information on Alida, visit * * http://www.informatik.uni-halle.de/alida/ * */ /* * Most recent change(s): * * $Rev$ * $Date$ * $Author$ * */ package de.unihalle.informatik.Alida.annotations; import de.unihalle.informatik.Alida.operator.*; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.lang.annotation.Documented; import net.java.sezpoz.Indexable; /** * ALDOperators may be annotated with this annotation in order to enable * generic execution or documentation facilities for the operator. * This annotation is used by indexing processes during compile time to * facilitate fast lookup of all classes which extend the abstract class ALDOperators. * During runtime the annotation may serve to modify behaviour of e.g. generic execution. * * @author Stefan Posch */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Indexable(type=ALDOperator.class) @Documented public @interface ALDAOperator { /** Enumerates the different levels of this operator. */ enum Level { /** Used for operators implementing algorithms likely to be invoked via * a user interface by life scientists */ APPLICATION, /** Used for operators like filters, essentially everything else than <code>APPLICATION</code> * for the time being. */STANDARD}; /** Enumerates the different types of user interfaces to * be automatically generated for this operator. */ enum ExecutionMode { /** no user interface */ NONE, /** only GUI */ SWING, /** only command line */ CMDLINE, /** all available interfaces */ ALL }; /** Defines the types of user interfaces to be automatically generated for this operator. * be automatically generated. */ ExecutionMode genericExecutionMode() default de.unihalle.informatik.Alida.annotations.ALDAOperator.ExecutionMode.NONE; /** Defines the level of this operator. */ Level level() default de.unihalle.informatik.Alida.annotations.ALDAOperator.Level.STANDARD; /** * If true this operator may me invoked in batch mode within the gui oprunner */ boolean allowBatchMode() default true; }