1 package com.melloware.jukes.ws;
2
3 import java.util.ArrayList;
4 import java.util.Collection;
5
6 import org.apache.commons.lang.builder.EqualsBuilder;
7 import org.apache.commons.lang.builder.HashCodeBuilder;
8 import org.apache.commons.lang.builder.ToStringBuilder;
9 import org.apache.commons.lang.builder.ToStringStyle;
10
11 import entagged.freedb.FreedbReadResult;
12
13
14
15
16
17
18
19
20
21 @SuppressWarnings("unchecked")
22 public final class FreeDBItem {
23
24 private final Collection tracks = new ArrayList();
25 private String disc = null;
26 private String artist = null;
27 private String itemId = null;
28 private String releaseDate = null;
29 private String releaseYear = null;
30 private String genre = null;
31
32
33
34
35
36 public FreeDBItem(FreedbReadResult freedbResult) {
37 super();
38 FreeDBinitialize(freedbResult);
39 }
40
41
42
43
44
45
46 private void FreeDBinitialize(FreedbReadResult aFreedbResult) {
47 final FreedbReadResult freedbResult = aFreedbResult;
48 if (freedbResult == null) {
49 throw new IllegalArgumentException("FreeDB search result is null.");
50 }
51 setItemId(freedbResult.getDiscId());
52 setArtist(freedbResult.getArtist());
53 setTitle(freedbResult.getAlbum());
54 setReleaseYear(freedbResult.getYear());
55 setGenre(freedbResult.getGenre());
56
57 final int tracksNumber = freedbResult.getTracksNumber();
58 for (int ij=0; ij<tracksNumber; ij=ij+1){
59 setTrack(freedbResult.getTrackTitle(ij));
60 }
61 }
62
63
64
65
66
67
68 public String getDisc() {
69 return this.disc;
70 }
71
72
73
74
75
76
77 public String getArtist() {
78 return this.artist;
79 }
80
81
82
83
84
85
86 public String getItemId() {
87 return this.itemId;
88 }
89
90
91
92
93
94
95 public String getReleaseDate() {
96 return this.releaseDate;
97 }
98
99
100
101
102
103
104 public String getReleaseYear() {
105 if ((this.releaseYear == null) && (this.releaseDate != null) && (this.releaseDate.length() > 4)) {
106 this.releaseYear = this.releaseDate.substring(0, 4);
107 }
108 return this.releaseYear;
109 }
110
111
112
113
114
115
116 public String getGenre() {
117 return this.genre;
118 }
119
120
121
122
123
124
125 public Collection getTracks() {
126 return this.tracks;
127 }
128
129
130
131
132 public boolean equals(Object obj) {
133 if (!(obj instanceof FreeDBItem)) {
134 return false;
135 }
136 if (this == obj) {
137 return true;
138 }
139 FreeDBItem rhs = (FreeDBItem) obj;
140 EqualsBuilder builder = new EqualsBuilder();
141 builder.append(artist, rhs.artist);
142 builder.append(disc, rhs.disc);
143 builder.append(itemId, rhs.itemId);
144
145 return builder.isEquals();
146 }
147
148
149
150
151 public int hashCode() {
152 return new HashCodeBuilder(17, 37).append(artist).append(disc).append(releaseDate).toHashCode();
153 }
154
155
156
157
158 public String toString() {
159 ToStringBuilder builder = new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE);
160 builder.append("artist", artist);
161 builder.append("disc", disc);
162 builder.append("itemId", itemId);
163 builder.append("releaseDate", releaseDate);
164 builder.append("genre", genre);
165 return builder.toString();
166 }
167
168
169
170
171 private void setItemId(String aItemId){
172 if (aItemId != null) {
173 this.itemId = aItemId;
174 }
175 }
176
177
178
179
180
181 private void setArtist(String aArtistName){
182 if (aArtistName != null) {
183 this.artist = aArtistName;
184 }
185 }
186
187
188
189
190 private void setTitle(String aDiscTitle){
191 if (aDiscTitle != null) {
192 this.disc = aDiscTitle;
193 }
194 }
195
196
197
198
199 private void setReleaseYear(String aYear){
200 if (aYear != null) {
201 this.releaseYear = aYear;
202 }
203 }
204
205
206
207
208 private void setGenre(String aGenre){
209 if (aGenre != null) {
210 this.genre = aGenre;
211 }
212 }
213
214
215
216
217 private void setTrack(String aTrackTitle){
218 if (aTrackTitle != null) {
219 this.tracks.add(aTrackTitle);
220 }
221 }
222 }