summaryrefslogtreecommitdiff
path: root/songdbj/AlbumEntry.java
diff options
context:
space:
mode:
Diffstat (limited to 'songdbj/AlbumEntry.java')
-rw-r--r--songdbj/AlbumEntry.java76
1 files changed, 76 insertions, 0 deletions
diff --git a/songdbj/AlbumEntry.java b/songdbj/AlbumEntry.java
new file mode 100644
index 0000000000..14c209547b
--- /dev/null
+++ b/songdbj/AlbumEntry.java
@@ -0,0 +1,76 @@
1import java.util.*;
2import java.io.*;
3
4public class AlbumEntry extends Entry implements Comparable {
5 protected String name;
6 protected ArtistEntry artist;
7 protected Vector songs;
8 protected int songcount;
9
10 public AlbumEntry(String n) {
11 name=n;
12 songs=new Vector();
13 artist=null;
14 songcount=0;
15 }
16
17 protected class SongSorter implements Comparator {
18 public int compare(Object o1, Object o2) {
19 SongEntry s1=(SongEntry)o1;
20 SongEntry s2=(SongEntry)o2;
21 int track1=s1.getTrack(),track2=s2.getTrack();
22 if(track1>track2)
23 return 1;
24 else if(track1<track2)
25 return -1;
26 return s1.getFile().getFile().getName().compareTo(s2.getFile().getFile().getName());
27 }
28 }
29
30 public void addSong(SongEntry e) {
31 songs.add(e);
32 e.setAlbum(this);
33 e.setArtist(artist);
34 songcount++;
35 Collections.sort(songs,new SongSorter());
36 }
37
38 public int size() { return songcount; }
39 public void setArtist(ArtistEntry a) {
40 a.addAlbum(this);
41 if(artist!=null&&artist!=a&&!artist.getName().equals("<various artists>")) {
42 artist.removeAlbum(this);
43 artist=TagDatabase.getInstance().getArtistEntry("<various artists>");
44 }
45 else
46 artist=a;
47 }
48 public ArtistEntry getArtist() { return artist; }
49
50 public int compareTo(Object o) {
51 return String.CASE_INSENSITIVE_ORDER.compare(name,((AlbumEntry)o).getName());
52 }
53
54 public String getName() { return name; }
55 public Collection getSongs() { return songs; }
56 public void write(DataOutputStream w) throws IOException {
57 int x;
58 w.writeBytes(name);
59 for(x=TagDatabase.getInstance().albumlen-name.length();x>0;x--)
60 w.write(0);
61 w.writeInt(artist.getOffset());
62 Iterator i2 = songs.iterator();
63 x=0;
64 while(i2.hasNext()) {
65 Entry e = (Entry) i2.next();
66 w.writeInt(e.getOffset());
67 x++;
68 }
69 for(;x<TagDatabase.getInstance().songarraylen;x++)
70 w.writeInt(0);
71 }
72 public static int entrySize() {
73 TagDatabase td=TagDatabase.getInstance();
74 return td.albumlen+4+td.songarraylen*4;
75 }
76} \ No newline at end of file