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

gov.sandia.cognition.annotation.SoftwareReference Maven / Gradle / Ivy

/*
 * File:                SoftwareReference.java
 * Authors:             Justin Basilico
 * Company:             Sandia National Laboratories
 * Project:             Cognitive Foundry
 * 
 * Copyright October 23, 2008, Sandia Corporation.
 * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive 
 * license for use of this work by or on behalf of the U.S. Government. Export 
 * of this program may require a license from the United States Government. 
 * See CopyrightHistory.txt for complete details.
 * 
 */

package gov.sandia.cognition.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * Describes a reference to software. The purpose of this annotation is to 
 * provide a reference to a piece of software so that someone would be able
 * to find it on the Internet using a search engine. This is typically used 
 * when a class wraps or uses some third-party library.
 * 
 * @author  Justin Basilico
 * @since   3.0
 */
@CodeReview(
    reviewer="Kevin R. Dixon",
    date="2008-12-02",
    changesNeeded=false,
    comments="Looks good."
)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface SoftwareReference
{

    /**
     * The full name of the software.
     * 
     * @return
     *      The full name of the software.
     */
    String name();

    /**
     * The specific version of the software that is used. For example,
     * {@code "1.6.0"}.
     * 
     * @return
     *      The specific version of the software.
     */
    String version();

    /**
     * An optional date on which the reference was made. Useful for projects 
     * whose versions do not make much sense, or to locate the exact version 
     * used. Defaults to {@code ""}.
     * 
     * @return
     *      The date on which the software reference was made.
     */
    String date() default "";

    /**
     * An optional URL reference to where the software can be found. Typically,
     * the home-page for the software. Defaults to {@code ""}.
     * 
     * @return
     *      A URL where the software can be found.
     */
    String url() default "";

    /**
     * The type of license for the software. If the selection is {@code Other},
     * please specify in the {@code notes} section.
     * 
     * @return
     *      The type of license for the software.
     */
    SoftwareLicenseType license();

    /**
     * An optional version for the license. Defaults to {@code ""}.
     * 
     * @return
     *      The version for the license.
     */
    String licenseVersion() default "";

    /**
     * An optional URL for the software license. Defaults to {@code ""}.
     * 
     * @return
     *      A URL where the software license can be found.
     */
    String licenseURL() default "";

    /**
     * Optional notes regarding this reference.
     * 
     * @return
     *      Optional notes regarding this reference.
     */
    String[] notes() default "";

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy