git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@270469 13f79535-47bb-0310-9956-ffa450edef68master
@@ -19,10 +19,9 @@ import javax.sound.sampled.LineEvent; | |||||
import javax.sound.sampled.LineListener; | import javax.sound.sampled.LineListener; | ||||
import javax.sound.sampled.LineUnavailableException; | import javax.sound.sampled.LineUnavailableException; | ||||
import javax.sound.sampled.UnsupportedAudioFileException; | import javax.sound.sampled.UnsupportedAudioFileException; | ||||
import org.apache.tools.ant.BuildEvent; | |||||
import org.apache.tools.ant.BuildListener; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.avalon.framework.logger.AbstractLogEnabled; | |||||
import org.apache.avalon.framework.logger.LogEnabled; | |||||
import org.apache.avalon.framework.logger.Logger; | |||||
import org.apache.myrmidon.listeners.AbstractProjectListener; | |||||
/** | /** | ||||
* This class is designed to be used by any AntTask that requires audio output. | * This class is designed to be used by any AntTask that requires audio output. | ||||
@@ -35,8 +34,8 @@ import org.apache.avalon.framework.logger.AbstractLogEnabled; | |||||
* @version $Revision$, $Date$ | * @version $Revision$, $Date$ | ||||
*/ | */ | ||||
public class AntSoundPlayer | public class AntSoundPlayer | ||||
extends AbstractLogEnabled | |||||
implements LineListener, BuildListener | |||||
extends AbstractProjectListener | |||||
implements LineListener, LogEnabled | |||||
{ | { | ||||
private File m_fileSuccess; | private File m_fileSuccess; | ||||
private int m_loopsSuccess; | private int m_loopsSuccess; | ||||
@@ -46,110 +45,68 @@ public class AntSoundPlayer | |||||
private int m_loopsFail; | private int m_loopsFail; | ||||
private Long m_durationFail; | private Long m_durationFail; | ||||
public AntSoundPlayer() | |||||
{ | |||||
} | |||||
/** | |||||
* @param fileFail The feature to be added to the BuildFailedSound attribute | |||||
* @param loopsFail The feature to be added to the BuildFailedSound | |||||
* attribute | |||||
* @param durationFail The feature to be added to the BuildFailedSound | |||||
* attribute | |||||
*/ | |||||
public void addBuildFailedSound( File fileFail, int loopsFail, Long durationFail ) | |||||
{ | |||||
m_fileFail = fileFail; | |||||
m_loopsFail = loopsFail; | |||||
m_durationFail = durationFail; | |||||
} | |||||
/** | |||||
* @param loops the number of times the file should be played when the build | |||||
* is successful | |||||
* @param duration the number of milliseconds the file should be played when | |||||
* the build is successful | |||||
* @param file The feature to be added to the BuildSuccessfulSound attribute | |||||
*/ | |||||
public void addBuildSuccessfulSound( File file, int loops, Long duration ) | |||||
{ | |||||
m_fileSuccess = file; | |||||
m_loopsSuccess = loops; | |||||
m_durationSuccess = duration; | |||||
} | |||||
private Logger m_logger; | |||||
/** | /** | ||||
* Fired after the last target has finished. This event will still be thrown | |||||
* if an error occured during the build. | |||||
* Provide component with a logger. | |||||
* | * | ||||
* @see BuildEvent#getException() | |||||
* @param logger the logger | |||||
*/ | */ | ||||
public void buildFinished( BuildEvent event ) | |||||
public void enableLogging( final Logger logger ) | |||||
{ | { | ||||
if( event.getException() == null && m_fileSuccess != null ) | |||||
{ | |||||
// build successfull! | |||||
play( m_fileSuccess, m_loopsSuccess, m_durationSuccess ); | |||||
} | |||||
else if( event.getException() != null && m_fileFail != null ) | |||||
{ | |||||
play( m_fileFail, m_loopsFail, m_durationFail ); | |||||
} | |||||
m_logger = logger; | |||||
} | } | ||||
/** | |||||
* Fired before any targets are started. | |||||
*/ | |||||
public void buildStarted( BuildEvent event ) | |||||
protected final Logger getLogger() | |||||
{ | { | ||||
return m_logger; | |||||
} | } | ||||
/** | /** | ||||
* Fired whenever a message is logged. | |||||
* | |||||
* @see BuildEvent#getMessage() | |||||
* @see BuildEvent#getPriority() | |||||
* Notify listener of projectFinished event. | |||||
*/ | */ | ||||
public void messageLogged( BuildEvent event ) | |||||
public void projectFinished() | |||||
{ | { | ||||
success(); | |||||
} | } | ||||
/** | /** | ||||
* Fired when a target has finished. This event will still be thrown if an | |||||
* error occured during the build. | |||||
* Notify listener of log message event. | |||||
* | * | ||||
* @see BuildEvent#getException() | |||||
* @param message the message | |||||
* @param throwable the throwable | |||||
*/ | */ | ||||
public void targetFinished( BuildEvent event ) | |||||
public void log( final String message, final Throwable throwable ) | |||||
{ | { | ||||
failure(); | |||||
} | } | ||||
/** | /** | ||||
* Fired when a target is started. | |||||
* | |||||
* @see BuildEvent#getTarget() | |||||
*/ | |||||
public void targetStarted( BuildEvent event ) | |||||
{ | |||||
} | |||||
/** | |||||
* Fired when a task has finished. This event will still be throw if an | |||||
* error occured during the build. | |||||
* | |||||
* @see BuildEvent#getException() | |||||
* @param fileFail The feature to be added to the BuildFailedSound attribute | |||||
* @param loopsFail The feature to be added to the BuildFailedSound | |||||
* attribute | |||||
* @param durationFail The feature to be added to the BuildFailedSound | |||||
* attribute | |||||
*/ | */ | ||||
public void taskFinished( BuildEvent event ) | |||||
public void addBuildFailedSound( File fileFail, int loopsFail, Long durationFail ) | |||||
{ | { | ||||
m_fileFail = fileFail; | |||||
m_loopsFail = loopsFail; | |||||
m_durationFail = durationFail; | |||||
} | } | ||||
/** | /** | ||||
* Fired when a task is started. | |||||
* | |||||
* @see BuildEvent#getTask() | |||||
* @param loops the number of times the file should be played when the build | |||||
* is successful | |||||
* @param duration the number of milliseconds the file should be played when | |||||
* the build is successful | |||||
* @param file The feature to be added to the BuildSuccessfulSound attribute | |||||
*/ | */ | ||||
public void taskStarted( BuildEvent event ) | |||||
public void addBuildSuccessfulSound( File file, int loops, Long duration ) | |||||
{ | { | ||||
m_fileSuccess = file; | |||||
m_loopsSuccess = loops; | |||||
m_durationSuccess = duration; | |||||
} | } | ||||
/** | /** | ||||
@@ -174,6 +131,23 @@ public class AntSoundPlayer | |||||
} | } | ||||
} | } | ||||
protected void success() | |||||
{ | |||||
if( null != m_fileSuccess ) | |||||
{ | |||||
// build successfull! | |||||
play( m_fileSuccess, m_loopsSuccess, m_durationSuccess ); | |||||
} | |||||
} | |||||
protected void failure() | |||||
{ | |||||
if( null != m_fileFail ) | |||||
{ | |||||
play( m_fileFail, m_loopsFail, m_durationFail ); | |||||
} | |||||
} | |||||
/** | /** | ||||
* Plays the file for duration milliseconds or loops. | * Plays the file for duration milliseconds or loops. | ||||
*/ | */ | ||||
@@ -19,10 +19,9 @@ import javax.sound.sampled.LineEvent; | |||||
import javax.sound.sampled.LineListener; | import javax.sound.sampled.LineListener; | ||||
import javax.sound.sampled.LineUnavailableException; | import javax.sound.sampled.LineUnavailableException; | ||||
import javax.sound.sampled.UnsupportedAudioFileException; | import javax.sound.sampled.UnsupportedAudioFileException; | ||||
import org.apache.tools.ant.BuildEvent; | |||||
import org.apache.tools.ant.BuildListener; | |||||
import org.apache.tools.ant.Project; | |||||
import org.apache.avalon.framework.logger.AbstractLogEnabled; | |||||
import org.apache.avalon.framework.logger.LogEnabled; | |||||
import org.apache.avalon.framework.logger.Logger; | |||||
import org.apache.myrmidon.listeners.AbstractProjectListener; | |||||
/** | /** | ||||
* This class is designed to be used by any AntTask that requires audio output. | * This class is designed to be used by any AntTask that requires audio output. | ||||
@@ -35,8 +34,8 @@ import org.apache.avalon.framework.logger.AbstractLogEnabled; | |||||
* @version $Revision$, $Date$ | * @version $Revision$, $Date$ | ||||
*/ | */ | ||||
public class AntSoundPlayer | public class AntSoundPlayer | ||||
extends AbstractLogEnabled | |||||
implements LineListener, BuildListener | |||||
extends AbstractProjectListener | |||||
implements LineListener, LogEnabled | |||||
{ | { | ||||
private File m_fileSuccess; | private File m_fileSuccess; | ||||
private int m_loopsSuccess; | private int m_loopsSuccess; | ||||
@@ -46,110 +45,68 @@ public class AntSoundPlayer | |||||
private int m_loopsFail; | private int m_loopsFail; | ||||
private Long m_durationFail; | private Long m_durationFail; | ||||
public AntSoundPlayer() | |||||
{ | |||||
} | |||||
/** | |||||
* @param fileFail The feature to be added to the BuildFailedSound attribute | |||||
* @param loopsFail The feature to be added to the BuildFailedSound | |||||
* attribute | |||||
* @param durationFail The feature to be added to the BuildFailedSound | |||||
* attribute | |||||
*/ | |||||
public void addBuildFailedSound( File fileFail, int loopsFail, Long durationFail ) | |||||
{ | |||||
m_fileFail = fileFail; | |||||
m_loopsFail = loopsFail; | |||||
m_durationFail = durationFail; | |||||
} | |||||
/** | |||||
* @param loops the number of times the file should be played when the build | |||||
* is successful | |||||
* @param duration the number of milliseconds the file should be played when | |||||
* the build is successful | |||||
* @param file The feature to be added to the BuildSuccessfulSound attribute | |||||
*/ | |||||
public void addBuildSuccessfulSound( File file, int loops, Long duration ) | |||||
{ | |||||
m_fileSuccess = file; | |||||
m_loopsSuccess = loops; | |||||
m_durationSuccess = duration; | |||||
} | |||||
private Logger m_logger; | |||||
/** | /** | ||||
* Fired after the last target has finished. This event will still be thrown | |||||
* if an error occured during the build. | |||||
* Provide component with a logger. | |||||
* | * | ||||
* @see BuildEvent#getException() | |||||
* @param logger the logger | |||||
*/ | */ | ||||
public void buildFinished( BuildEvent event ) | |||||
public void enableLogging( final Logger logger ) | |||||
{ | { | ||||
if( event.getException() == null && m_fileSuccess != null ) | |||||
{ | |||||
// build successfull! | |||||
play( m_fileSuccess, m_loopsSuccess, m_durationSuccess ); | |||||
} | |||||
else if( event.getException() != null && m_fileFail != null ) | |||||
{ | |||||
play( m_fileFail, m_loopsFail, m_durationFail ); | |||||
} | |||||
m_logger = logger; | |||||
} | } | ||||
/** | |||||
* Fired before any targets are started. | |||||
*/ | |||||
public void buildStarted( BuildEvent event ) | |||||
protected final Logger getLogger() | |||||
{ | { | ||||
return m_logger; | |||||
} | } | ||||
/** | /** | ||||
* Fired whenever a message is logged. | |||||
* | |||||
* @see BuildEvent#getMessage() | |||||
* @see BuildEvent#getPriority() | |||||
* Notify listener of projectFinished event. | |||||
*/ | */ | ||||
public void messageLogged( BuildEvent event ) | |||||
public void projectFinished() | |||||
{ | { | ||||
success(); | |||||
} | } | ||||
/** | /** | ||||
* Fired when a target has finished. This event will still be thrown if an | |||||
* error occured during the build. | |||||
* Notify listener of log message event. | |||||
* | * | ||||
* @see BuildEvent#getException() | |||||
* @param message the message | |||||
* @param throwable the throwable | |||||
*/ | */ | ||||
public void targetFinished( BuildEvent event ) | |||||
public void log( final String message, final Throwable throwable ) | |||||
{ | { | ||||
failure(); | |||||
} | } | ||||
/** | /** | ||||
* Fired when a target is started. | |||||
* | |||||
* @see BuildEvent#getTarget() | |||||
*/ | |||||
public void targetStarted( BuildEvent event ) | |||||
{ | |||||
} | |||||
/** | |||||
* Fired when a task has finished. This event will still be throw if an | |||||
* error occured during the build. | |||||
* | |||||
* @see BuildEvent#getException() | |||||
* @param fileFail The feature to be added to the BuildFailedSound attribute | |||||
* @param loopsFail The feature to be added to the BuildFailedSound | |||||
* attribute | |||||
* @param durationFail The feature to be added to the BuildFailedSound | |||||
* attribute | |||||
*/ | */ | ||||
public void taskFinished( BuildEvent event ) | |||||
public void addBuildFailedSound( File fileFail, int loopsFail, Long durationFail ) | |||||
{ | { | ||||
m_fileFail = fileFail; | |||||
m_loopsFail = loopsFail; | |||||
m_durationFail = durationFail; | |||||
} | } | ||||
/** | /** | ||||
* Fired when a task is started. | |||||
* | |||||
* @see BuildEvent#getTask() | |||||
* @param loops the number of times the file should be played when the build | |||||
* is successful | |||||
* @param duration the number of milliseconds the file should be played when | |||||
* the build is successful | |||||
* @param file The feature to be added to the BuildSuccessfulSound attribute | |||||
*/ | */ | ||||
public void taskStarted( BuildEvent event ) | |||||
public void addBuildSuccessfulSound( File file, int loops, Long duration ) | |||||
{ | { | ||||
m_fileSuccess = file; | |||||
m_loopsSuccess = loops; | |||||
m_durationSuccess = duration; | |||||
} | } | ||||
/** | /** | ||||
@@ -174,6 +131,23 @@ public class AntSoundPlayer | |||||
} | } | ||||
} | } | ||||
protected void success() | |||||
{ | |||||
if( null != m_fileSuccess ) | |||||
{ | |||||
// build successfull! | |||||
play( m_fileSuccess, m_loopsSuccess, m_durationSuccess ); | |||||
} | |||||
} | |||||
protected void failure() | |||||
{ | |||||
if( null != m_fileFail ) | |||||
{ | |||||
play( m_fileFail, m_loopsFail, m_durationFail ); | |||||
} | |||||
} | |||||
/** | /** | ||||
* Plays the file for duration milliseconds or loops. | * Plays the file for duration milliseconds or loops. | ||||
*/ | */ | ||||