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. | ||||
| */ | */ | ||||