diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java deleted file mode 100644 index 7988bc60..00000000 --- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/optional/sound/AntSoundPlayer.java +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.tools.ant.taskdefs.optional.sound; - -// ant includes -import java.io.File; -import java.io.IOException; - -import javax.sound.sampled.AudioFormat; -import javax.sound.sampled.AudioInputStream; -import javax.sound.sampled.AudioSystem; -import javax.sound.sampled.Clip; -import javax.sound.sampled.DataLine; -import javax.sound.sampled.Line; -import javax.sound.sampled.LineEvent; -import javax.sound.sampled.LineListener; -import javax.sound.sampled.LineUnavailableException; -import javax.sound.sampled.UnsupportedAudioFileException; - -import org.apache.tools.ant.BuildEvent; -import org.apache.tools.ant.BuildListener; -import org.apache.tools.ant.Project; - - - -/** - * This class is designed to be used by any AntTask that requires audio output. - * - * It implements the BuildListener interface to listen for BuildEvents - * and could be easily extended to provide audio output upon any - * specific build events occurring. - * - * I have only tested this with .WAV and .AIFF sound file formats. Both seem to work fine. - * - */ - -public class AntSoundPlayer implements LineListener, BuildListener { - - private File fileSuccess = null; - private int loopsSuccess = 0; - private Long durationSuccess = null; - - private File fileFail = null; - private int loopsFail = 0; - private Long durationFail = null; - - /** Constructor for AntSoundPlayer. */ - public AntSoundPlayer() { - } - - /** - * @param file the location of the audio file to be played when the - * build is successful - * @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 - */ - public void addBuildSuccessfulSound(File file, int loops, Long duration) { - this.fileSuccess = file; - this.loopsSuccess = loops; - this.durationSuccess = duration; - } - - - /** - * @param fileFail the location of the audio file to be played - * when the build fails - * @param loopsFail the number of times the file should be played - * when the build is fails - * @param durationFail the number of milliseconds the file should be - * played when the build fails - */ - public void addBuildFailedSound(File fileFail, int loopsFail, Long durationFail) { - this.fileFail = fileFail; - this.loopsFail = loopsFail; - this.durationFail = durationFail; - } - - /** - * Plays the file for duration milliseconds or loops. - */ - private void play(Project project, File file, int loops, Long duration) { - - Clip audioClip = null; - - AudioInputStream audioInputStream = null; - - - try { - audioInputStream = AudioSystem.getAudioInputStream(file); - } catch (UnsupportedAudioFileException uafe) { - project.log("Audio format is not yet supported: " - + uafe.getMessage()); - } catch (IOException ioe) { - ioe.printStackTrace(); - } - - if (audioInputStream != null) { - AudioFormat format = audioInputStream.getFormat(); - DataLine.Info info = new DataLine.Info(Clip.class, format, - AudioSystem.NOT_SPECIFIED); - try { - audioClip = (Clip) AudioSystem.getLine(info); - audioClip.addLineListener(this); - audioClip.open(audioInputStream); - } catch (LineUnavailableException e) { - project.log("The sound device is currently unavailable"); - return; - } catch (IOException e) { - e.printStackTrace(); - } - - if (duration != null) { - playClip(audioClip, duration.longValue()); - } else { - playClip(audioClip, loops); - } - audioClip.drain(); - audioClip.close(); - } else { - project.log("Can't get data from file " + file.getName()); - } - } - - private void playClip(Clip clip, int loops) { - - clip.loop(loops); - do { - try { - long timeLeft = - (clip.getMicrosecondLength() - clip.getMicrosecondPosition()) - / 1000; - if (timeLeft > 0) { - Thread.sleep(timeLeft); - } - } catch (InterruptedException e) { - break; - } - } while (clip.isRunning()); - - if (clip.isRunning()) { - clip.stop(); - } - } - - private void playClip(Clip clip, long duration) { - clip.loop(Clip.LOOP_CONTINUOUSLY); - try { - Thread.sleep(duration); - } catch (InterruptedException e) { - // Ignore Exception - } - clip.stop(); - } - - /** - * This is implemented to listen for any line events and closes the - * clip if required. - * @param event the line event to follow - */ - public void update(LineEvent event) { - if (event.getType().equals(LineEvent.Type.STOP)) { - Line line = event.getLine(); - line.close(); - } - } - - - /** - * Fired before any targets are started. - * @param event ignored - */ - public void buildStarted(BuildEvent event) { - } - - /** - * Fired after the last target has finished. This event - * will still be thrown if an error occurred during the build. - * @param event the build finished event. - * @see BuildEvent#getException() - */ - public void buildFinished(BuildEvent event) { - if (event.getException() == null && fileSuccess != null) { - // build successful! - play(event.getProject(), fileSuccess, loopsSuccess, durationSuccess); - } else if (event.getException() != null && fileFail != null) { - play(event.getProject(), fileFail, loopsFail, durationFail); - } - } - - /** - * Fired when a target is started. - * @param event ignored. - * @see BuildEvent#getTarget() - */ - public void targetStarted(BuildEvent event) { - } - - /** - * Fired when a target has finished. This event will - * still be thrown if an error occurred during the build. - * @param event ignored. - * @see BuildEvent#getException() - */ - public void targetFinished(BuildEvent event) { - } - - /** - * Fired when a task is started. - * @param event ignored. - * @see BuildEvent#getTask() - */ - public void taskStarted(BuildEvent event) { - } - - /** - * Fired when a task has finished. This event will still - * be throw if an error occurred during the build. - * @param event ignored. - * @see BuildEvent#getException() - */ - public void taskFinished(BuildEvent event) { - } - - /** - * Fired whenever a message is logged. - * @param event the build event - * @see BuildEvent#getMessage() - * @see BuildEvent#getPriority() - */ - public void messageLogged(BuildEvent event) { - } -} - |