package NET.worlds.scape; import java.io.IOException; public class CDDiskInfo implements Persister { private String artist; private String title; private String category; private String[] trackNames; private static Object classCookie = new Object(); public CDDiskInfo(String artist, String title, String category, String[] trackNames) { this.artist = artist; this.title = title; this.category = category; this.trackNames = new String[trackNames.length]; System.arraycopy(trackNames, 0, this.trackNames, 0, trackNames.length); } public CDDiskInfo() { } public String getArtist() { return this.artist; } public String getTitle() { return this.title; } public String getCategory() { return this.category; } public int getNumTracks() { return this.trackNames.length; } public String getTrackName(int track) { return this.trackNames[track]; } @Override public String toString() { String ret = "Artist: " + this.artist + "\n" + "Title: " + this.title + "\n" + "Category: " + this.category + "\n"; for (int i = 0; i < this.trackNames.length; i++) { ret = ret + "Track " + (i + 1) + ":"; if (this.trackNames[i] != null) { ret = ret + this.trackNames[i]; } ret = ret + "\n"; } return ret; } @Override public void saveState(Saver s) throws IOException { s.saveVersion(1, classCookie); s.saveString(this.artist); s.saveString(this.title); s.saveString(this.category); s.saveInt(this.trackNames.length); for (int i = 0; i < this.trackNames.length; i++) { s.saveString(this.trackNames[i]); } } @Override public void restoreState(Restorer r) throws IOException, TooNewException { switch (r.restoreVersion(classCookie)) { case 1: this.artist = r.restoreString(); this.title = r.restoreString(); this.category = r.restoreString(); this.trackNames = new String[r.restoreInt()]; for (int i = 0; i < this.trackNames.length; i++) { this.trackNames[i] = r.restoreString(); } return; default: throw new TooNewException(); } } @Override public void postRestore(int version) { } }