2
* Created on 23-nov-2005
4
* TODO To change the template for this generated file go to
5
* Window - Preferences - Java - Code Style - Code Templates
7
package org.herac.tuxguitar.song.models;
9
import java.util.ArrayList;
10
import java.util.Iterator;
11
import java.util.List;
13
import org.herac.tuxguitar.song.factory.TGFactory;
18
* TODO To change the template for this generated type comment go to
19
* Window - Preferences - Java - Code Style - Code Templates
21
public abstract class TGSong {
24
private String artist;
26
private String author;
28
private List measureHeaders;
31
this.name = new String();
32
this.artist = new String();
33
this.album = new String();
34
this.author = new String();
35
this.tracks = new ArrayList();
36
this.measureHeaders = new ArrayList();
39
public String getName() {
43
public void setName(String name) {
47
public String getAlbum() {
51
public void setAlbum(String album) {
55
public String getAuthor() {
59
public void setAuthor(String author) {
63
public String getArtist() {
67
public void setArtist(String artist) {
71
public int countMeasureHeaders(){
72
return this.measureHeaders.size();
75
public void addMeasureHeader(TGMeasureHeader measureHeader){
76
this.addMeasureHeader(countMeasureHeaders(),measureHeader);
79
public void addMeasureHeader(int index,TGMeasureHeader measureHeader){
80
measureHeader.setSong(this);
81
this.measureHeaders.add(index,measureHeader);
84
public void removeMeasureHeader(int index){
85
this.measureHeaders.remove(index);
88
public void removeMeasureHeader(TGMeasureHeader measureHeader){
89
this.measureHeaders.remove(measureHeader);
92
public TGMeasureHeader getMeasureHeader(int index){
93
return (TGMeasureHeader)this.measureHeaders.get(index);
96
public Iterator getMeasureHeaders() {
97
return this.measureHeaders.iterator();
100
public int countTracks(){
101
return this.tracks.size();
104
public void addTrack(TGTrack track){
105
this.addTrack(countTracks(),track);
108
public void addTrack(int index,TGTrack track){
110
this.tracks.add(index,track);
113
public void moveTrack(int index,TGTrack track){
114
this.tracks.remove(track);
115
this.tracks.add(index,track);
118
public void removeTrack(TGTrack track){
119
this.tracks.remove(track);
123
public TGTrack getTrack(int index){
124
return (TGTrack)this.tracks.get(index);
127
public Iterator getTracks() {
128
return this.tracks.iterator();
131
public boolean isEmpty(){
132
return (countMeasureHeaders() == 0 || countTracks() == 0);
136
Iterator tracks = getTracks();
137
while(tracks.hasNext()){
138
TGTrack track = (TGTrack)tracks.next();
143
public TGSong clone(TGFactory factory){
144
TGSong song = factory.newSong();
149
public void copy(TGFactory factory,TGSong song){
150
song.setName(getName());
151
song.setArtist(getArtist());
152
song.setAlbum(getAlbum());
153
song.setAuthor(getAuthor());
154
Iterator headers = getMeasureHeaders();
155
while(headers.hasNext()){
156
TGMeasureHeader header = (TGMeasureHeader)headers.next();
157
song.addMeasureHeader(header.clone(factory));
159
Iterator tracks = getTracks();
160
while(tracks.hasNext()){
161
TGTrack track = (TGTrack)tracks.next();
162
song.addTrack(track.clone(factory, song));