/*
 * Copyright (c) 2005 Your Corporation. All Rights Reserved.
 */
package org.apache.maven.plugin.coreit;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @goal setter-touch
 *
 * @description Goal which cleans the build
 */
public class CoreItMojoWithSetters
    extends AbstractMojo
{
    /**
     * @parameter
     *   property="outputDirectory"
     *   expression="${project.build.directory}"
     * @required
     */
    private String outputDirectoryValue;

    /**
     * @parameter property="foo"
     */
    private String fooValue;

    /**
     * @parameter property="bar"
     */
    private String barValue;

    // ----------------------------------------------------------------------
    // Setters
    // ----------------------------------------------------------------------

    public void setOutputDirectory( String outputDirectory )
    {
        this.outputDirectoryValue = outputDirectory;
    }

    boolean setFooSetterExecuted;

    public void setFoo( String fooValue )
    {
        this.fooValue = fooValue;

        setFooSetterExecuted = true;
    }

    boolean setBarSetterExecuted;

    public void setBar( String barValue )
    {
        this.barValue = barValue;

        setBarSetterExecuted = true;
    }

    // ----------------------------------------------------------------------
    //
    // ----------------------------------------------------------------------


    public void execute()
        throws MojoExecutionException
    {
        touch( new File( outputDirectoryValue ), "touch.txt" );

        File outDir = new File( outputDirectoryValue );

        // Test parameter setting
        if ( fooValue != null && setFooSetterExecuted )
        {
            touch( outDir, fooValue );
        }

        if ( barValue != null && setBarSetterExecuted )
        {
            touch( outDir, barValue );
        }
    }

    private static void touch( File dir, String file )
        throws MojoExecutionException
    {
        try
        {
             if ( !dir.exists() )
             {
                 dir.mkdirs();
             }

             File touch = new File( dir, file );

             FileWriter w = new FileWriter( touch );

             w.write( file );

             w.close();
        }
        catch ( IOException e )
        {
            throw new MojoExecutionException( "Error touching file", e );
        }
    }
}

@@ -705,23 +705,8 @@
 eter
- property=%22bar%22
 %0A   
@@ -728,29 +728,24 @@
 e String bar
-Value
 ;%0A%0A    // --
@@ -1295,21 +1295,16 @@
 this.bar
-Value
  = barVa
@@ -1302,24 +1302,33 @@
 r = barValue
+ + %22.baz%22
 ;%0A%0A        s
@@ -1885,21 +1885,16 @@
 if ( bar
-Value
  != null
@@ -1960,21 +1960,16 @@
 Dir, bar
-Value
  );%0A    

test that property's work with default setter