package ch.retorte.intervalmusiccompositor.playlist;
import ch.retorte.intervalmusiccompositor.audiofile.IAudioFile;
/**
* @author nw
*/
public class PlaylistItem {
private final IAudioFile audioFile;
private final long extractStartInMilliseconds;
private final long extractEndInMilliseconds;
public PlaylistItem(IAudioFile audioFile, long extractStartInMilliseconds, long extractEndInMilliseconds) {
this.audioFile = audioFile;
this.extractStartInMilliseconds = extractStartInMilliseconds;
this.extractEndInMilliseconds = extractEndInMilliseconds;
if (audioFile != null && audioFile.getDuration() < extractEndInMilliseconds) {
throw new IllegalStateException("Extract exceeds track length.");
}
}
public boolean isSilentBreak() {
return audioFile == null;
}
public long getExtractDurationInMilliseconds() {
return extractEndInMilliseconds - extractStartInMilliseconds;
}
public double getExtractDurationInSeconds() {
return getExtractDurationInMilliseconds() / 1000;
}
public IAudioFile getAudioFile() {
return audioFile;
}
public long getExtractStartInMilliseconds() {
return extractStartInMilliseconds;
}
public double getExtractStartInSeconds() {
return getExtractStartInMilliseconds() / 1000;
}
public long getExtractEndInMilliseconds() {
return extractEndInMilliseconds;
}
public double getExtractEndInSeconds() {
return getExtractEndInMilliseconds() / 1000;
}
@Override
public String toString() {
String fileName = "Break";
if (!isSilentBreak()) {
fileName = getAudioFile().getDisplayName();
}
return fileName + " [" + extractStartInMilliseconds + " - " + extractEndInMilliseconds + "]";
}
}