View Javadoc

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   * Wrapper class for FreeDB search results
15   * <p>
16   * Copyright (c) 1999-2007 Melloware, Inc. <http://www.melloware.com>
17   * @author Emil A. Lefkof III <info@melloware.com>
18   * @version 4.0
19   * AZ Development 2010
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      * Default constructor based on FreeDB search result. 
35      */
36     public FreeDBItem(FreedbReadResult freedbResult) {
37        super();
38        FreeDBinitialize(freedbResult);
39     }
40  
41     /**
42      * Initialize all the fields of this object from the FreeDB search result.
43      *
44      * @param FreedbReadResult aFreedbResult
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){ //loop for tracks
59  	  setTrack(freedbResult.getTrackTitle(ij));
60        }
61     }
62     
63     /**
64      * Gets the disc.
65      * <p>
66      * @return Returns the disc.
67      */
68     public String getDisc() {
69        return this.disc;
70     }
71  
72     /**
73      * Gets the artist.
74      * <p>
75      * @return Returns the artist.
76      */
77     public String getArtist() {
78        return this.artist;
79     }
80  
81     /**
82      * Gets the itemId.
83      * <p>
84      * @return Returns the itemId.
85      */
86     public String getItemId() {
87        return this.itemId;
88     }
89  
90     /**
91      * Gets the releaseDate.
92      * <p>
93      * @return Returns the releaseDate.
94      */
95     public String getReleaseDate() {
96        return this.releaseDate;
97     }
98  
99     /**
100     * Gets the releaseYear.
101     * <p>
102     * @return Returns the releaseYear.
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     * Gets the genre.
113     * <p>
114     * @return Returns the genre.
115     */
116    public String getGenre() {
117       return this.genre;
118    }
119 
120    /**
121     * Gets the tracks.
122     * <p>
123     * @return Returns the tracks.
124     */
125    public Collection getTracks() {
126       return this.tracks;
127    }
128 
129    /**
130     * Default Equals method.
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     * Default hashcode method.
150     */
151    public int hashCode() {
152       return new HashCodeBuilder(17, 37).append(artist).append(disc).append(releaseDate).toHashCode();
153    }
154 
155    /**
156     * Default toString() method.
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     * Set Item Id
170     */
171    private void setItemId(String aItemId){
172 	  if (aItemId != null) {
173 		  this.itemId = aItemId;
174 	  }
175    }
176   
177   
178    /**
179     * Set Artist Name
180     */
181    private void setArtist(String aArtistName){
182 		  if (aArtistName != null) {
183 			  this.artist = aArtistName;
184 		  }
185    }
186    
187    /**
188     * Set Disc Title
189     */
190    private void setTitle(String aDiscTitle){
191 		  if (aDiscTitle != null) {
192 			  this.disc = aDiscTitle;
193 		  }
194    }
195      
196    /**
197     * Set Disc Release Date
198     */
199    private void setReleaseYear(String aYear){
200 		  if (aYear != null) {
201 			  this.releaseYear = aYear;
202 		  }
203    }
204      
205    /**
206     * Set Disc Genre
207     */
208    private void setGenre(String aGenre){
209 		  if (aGenre != null) {
210 			  this.genre = aGenre;
211 		  }
212    }
213    
214    /**
215     * Set Track Titles
216     */
217    private void setTrack(String aTrackTitle){
218 		  if (aTrackTitle != null) {
219 			  this.tracks.add(aTrackTitle);
220 		  }
221    }
222 }