/*
* Created on 23-nov-2005
*
* TODO To change the template for this generated file go to Window -
* Preferences - Java - Code Style - Code Templates
*/
package org.herac.tuxguitar.song.models;
import java.util.ArrayList;
import java.util.List;
import joptsimple.internal.Strings;
/**
* @author julian
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class TGSong {
private String album = Strings.EMPTY;
private String artist = Strings.EMPTY;
private String author = Strings.EMPTY;
private String comments = Strings.EMPTY;
private String copyright = Strings.EMPTY;
private String date = Strings.EMPTY;
private List<TGMeasureHeader> measureHeaders = new ArrayList<TGMeasureHeader>();
private String name = Strings.EMPTY;
private List<TGTrack> tracks = new ArrayList<TGTrack>();
private String transcriber = Strings.EMPTY;
private String writer = Strings.EMPTY;
public void addMeasureHeader(int index, TGMeasureHeader measureHeader) {
measureHeader.setSong(this);
this.measureHeaders.add(index, measureHeader);
}
public void addMeasureHeader(TGMeasureHeader measureHeader) {
this.addMeasureHeader(countMeasureHeaders(), measureHeader);
}
public void addTrack(int index, TGTrack track) {
track.setSong(this);
this.tracks.add(index, track);
}
public void addTrack(TGTrack track) {
this.tracks.add(track);
}
public void clear() {
for (final TGTrack track : this.tracks) {
track.clear();
}
this.tracks.clear();
this.measureHeaders.clear();
}
@Override
public TGSong clone() {
TGSong song = new TGSong();
song.clear();
song.setName(getName());
song.setArtist(getArtist());
song.setAlbum(getAlbum());
song.setAuthor(getAuthor());
song.setDate(getDate());
song.setCopyright(getCopyright());
song.setWriter(getWriter());
song.setTranscriber(getTranscriber());
song.setComments(getComments());
for (final TGMeasureHeader header : this.measureHeaders) {
song.addMeasureHeader(header.clone());
}
for (final TGTrack track : this.tracks) {
song.addTrack(track.clone(song));
}
return song;
}
public int countMeasureHeaders() {
return this.measureHeaders.size();
}
public int countTracks() {
return this.tracks.size();
}
public String getAlbum() {
return this.album;
}
public String getArtist() {
return this.artist;
}
public String getAuthor() {
return this.author;
}
public String getComments() {
return this.comments;
}
public String getCopyright() {
return this.copyright;
}
public String getDate() {
return this.date;
}
public TGMeasureHeader getMeasureHeader(int index) {
return (TGMeasureHeader) this.measureHeaders.get(index);
}
public List<TGMeasureHeader> getMeasureHeaders() {
return this.measureHeaders;
}
public String getName() {
return this.name;
}
public TGTrack getTrack(int index) {
return this.tracks.get(index);
}
public List<TGTrack> getTracks() {
return this.tracks;
}
public String getTranscriber() {
return this.transcriber;
}
public String getWriter() {
return this.writer;
}
public boolean isEmpty() {
return this.measureHeaders.isEmpty() || this.tracks.isEmpty();
}
public void moveTrack(int index, TGTrack track) {
this.tracks.remove(track);
this.tracks.add(index, track);
}
public void removeMeasureHeader(int index) {
this.measureHeaders.remove(index);
}
public void removeMeasureHeader(TGMeasureHeader measureHeader) {
this.measureHeaders.remove(measureHeader);
}
public void removeTrack(TGTrack track) {
this.tracks.remove(track);
track.clear();
}
public void setAlbum(String album) {
this.album = album;
}
public void setArtist(String artist) {
this.artist = artist;
}
public void setAuthor(String author) {
this.author = author;
}
public void setComments(String comments) {
this.comments = comments;
}
public void setCopyright(String copyright) {
this.copyright = copyright;
}
public void setDate(String date) {
this.date = date;
}
public void setName(String name) {
this.name = name;
}
public void setTranscriber(String transcriber) {
this.transcriber = transcriber;
}
public void setWriter(String writer) {
this.writer = writer;
}
}