Reporting.java

// =================== DO NOT EDIT THIS FILE ====================
// Generated by Modello 1.9.1,
// any modifications will be overwritten.
// ==============================================================

package org.apache.maven.model;

/**
 * Section for management of reports and their configuration.
 * 
 * @version $Revision$ $Date$
 */
@SuppressWarnings( "all" )
public class Reporting
    implements java.io.Serializable, java.lang.Cloneable, org.apache.maven.model.InputLocationTracker
{

      //--------------------------/
     //- Class/Member Variables -/
    //--------------------------/

    /**
     * 
     *             
     *             If true, then the default reports are not
     * included in the site generation.
     *             This includes the reports in the "Project Info"
     * menu. Note: While the type
     *             of this field is <code>String</code> for
     * technical reasons, the semantic type is actually
     *             <code>Boolean</code>. Default value is
     * <code>false</code>.
     *             
     *           
     */
    private String excludeDefaults;

    /**
     * 
     *             
     *             Where to store all of the generated reports. The
     * default is
     *             <code>${project.build.directory}/site</code>.
     *             
     *           
     */
    private String outputDirectory;

    /**
     * Field plugins.
     */
    private java.util.List<ReportPlugin> plugins;

    /**
     * Field locations.
     */
    private java.util.Map<Object, InputLocation> locations;


      //-----------/
     //- Methods -/
    //-----------/

    /**
     * Method addPlugin.
     * 
     * @param reportPlugin
     */
    public void addPlugin( ReportPlugin reportPlugin )
    {
        getPlugins().add( reportPlugin );
    } //-- void addPlugin( ReportPlugin )

    /**
     * Method clone.
     * 
     * @return Reporting
     */
    public Reporting clone()
    {
        try
        {
            Reporting copy = (Reporting) super.clone();

            if ( this.plugins != null )
            {
                copy.plugins = new java.util.ArrayList<ReportPlugin>();
                for ( ReportPlugin item : this.plugins )
                {
                    copy.plugins.add( ( (ReportPlugin) item).clone() );
                }
            }

            if ( copy.locations != null )
            {
                copy.locations = new java.util.LinkedHashMap( copy.locations );
            }

            return copy;
        }
        catch ( java.lang.Exception ex )
        {
            throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
                + " does not support clone()" ).initCause( ex );
        }
    } //-- Reporting clone()

    /**
     * Get if true, then the default reports are not included in
     * the site generation.
     *             This includes the reports in the "Project Info"
     * menu. Note: While the type
     *             of this field is <code>String</code> for
     * technical reasons, the semantic type is actually
     *             <code>Boolean</code>. Default value is
     * <code>false</code>.
     * 
     * @return String
     */
    public String getExcludeDefaults()
    {
        return this.excludeDefaults;
    } //-- String getExcludeDefaults()

    /**
     * 
     * 
     * @param key
     * @return InputLocation
     */
    public InputLocation getLocation( Object key )
    {
        return ( locations != null ) ? locations.get( key ) : null;
    } //-- InputLocation getLocation( Object )

    /**
     * Get where to store all of the generated reports. The default
     * is
     *             <code>${project.build.directory}/site</code>.
     * 
     * @return String
     */
    public String getOutputDirectory()
    {
        return this.outputDirectory;
    } //-- String getOutputDirectory()

    /**
     * Method getPlugins.
     * 
     * @return List
     */
    public java.util.List<ReportPlugin> getPlugins()
    {
        if ( this.plugins == null )
        {
            this.plugins = new java.util.ArrayList<ReportPlugin>();
        }

        return this.plugins;
    } //-- java.util.List<ReportPlugin> getPlugins()

    /**
     * Method removePlugin.
     * 
     * @param reportPlugin
     */
    public void removePlugin( ReportPlugin reportPlugin )
    {
        getPlugins().remove( reportPlugin );
    } //-- void removePlugin( ReportPlugin )

    /**
     * Set if true, then the default reports are not included in
     * the site generation.
     *             This includes the reports in the "Project Info"
     * menu. Note: While the type
     *             of this field is <code>String</code> for
     * technical reasons, the semantic type is actually
     *             <code>Boolean</code>. Default value is
     * <code>false</code>.
     * 
     * @param excludeDefaults
     */
    public void setExcludeDefaults( String excludeDefaults )
    {
        this.excludeDefaults = excludeDefaults;
    } //-- void setExcludeDefaults( String )

    /**
     * 
     * 
     * @param key
     * @param location
     */
    public void setLocation( Object key, InputLocation location )
    {
        if ( location != null )
        {
            if ( this.locations == null )
            {
                this.locations = new java.util.LinkedHashMap<Object, InputLocation>();
            }
            this.locations.put( key, location );
        }
    } //-- void setLocation( Object, InputLocation )

    /**
     * Set where to store all of the generated reports. The default
     * is
     *             <code>${project.build.directory}/site</code>.
     * 
     * @param outputDirectory
     */
    public void setOutputDirectory( String outputDirectory )
    {
        this.outputDirectory = outputDirectory;
    } //-- void setOutputDirectory( String )

    /**
     * Set the reporting plugins to use and their configuration.
     * 
     * @param plugins
     */
    public void setPlugins( java.util.List<ReportPlugin> plugins )
    {
        this.plugins = plugins;
    } //-- void setPlugins( java.util.List )

    
            
    public boolean isExcludeDefaults()
    {
        return ( excludeDefaults != null ) ? Boolean.parseBoolean( excludeDefaults ) : false;
    }

    public void setExcludeDefaults( boolean excludeDefaults )
    {
        this.excludeDefaults = String.valueOf( excludeDefaults );
    }

    java.util.Map<String, ReportPlugin> reportPluginMap;

    /**
     * Reset the <code>reportPluginMap</code> field to <code>null</code>
     */
    public synchronized void flushReportPluginMap()
    {
        this.reportPluginMap = null;
    }

    /**
     * @return a Map of plugins field with <code>ReportPlugin#getKey()</code> as key
     * @see org.apache.maven.model.ReportPlugin#getKey()
     */
    public synchronized java.util.Map<String, ReportPlugin> getReportPluginsAsMap()
    {
        if ( reportPluginMap == null )
        {
            reportPluginMap = new java.util.LinkedHashMap<String, ReportPlugin>();
            if ( getPlugins() != null )
            {
                for ( java.util.Iterator<ReportPlugin> it = getPlugins().iterator(); it.hasNext(); )
                {
                    ReportPlugin reportPlugin = (ReportPlugin) it.next();
                    reportPluginMap.put( reportPlugin.getKey(), reportPlugin );
                }
            }
        }

        return reportPluginMap;
    }
            
          
}