/**
* Copyright (C) 2013 Johannes Schnatterer
*
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
* This file is part of nusic.
*
* nusic is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* nusic is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with nusic. If not, see <http://www.gnu.org/licenses/>.
*/
package info.schnatterer.nusic.data.model;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
public class Artist implements Entity {
private static final String HTTP = "http://";
private static final String HTTPS = "https://";
private static final String MUSIC_BRAINZ_BASE_URI = "musicbrainz.org/artist/";
private static final String MUSIC_BRAINZ_BASE_URI_HTTP = HTTP
+ MUSIC_BRAINZ_BASE_URI;
private static final String MUSIC_BRAINZ_BASE_URI_HTTPS = HTTPS
+ MUSIC_BRAINZ_BASE_URI;
private Long id;
private Long androidAudioArtistId;
private String musicBrainzId;
/**
* Artist name from android db
*/
private String artistName;
private List<Release> releases = new LinkedList<Release>();
private Date dateCreated;
private Boolean isHidden;
public Artist() {
}
public Artist(Date dateCreated) {
setDateCreated(dateCreated);
}
public List<Release> getReleases() {
return releases;
}
public void setReleases(List<Release> releases) {
this.releases = releases;
}
public String getArtistName() {
return artistName;
}
public void setArtistName(String artistName) {
this.artistName = artistName;
}
public Release getNewestRelease() {
if (releases != null && releases.size() > 0) {
return releases.get(0);
}
return null;
}
public Long getId() {
return id;
}
public void setId(Long l) {
this.id = l;
}
public Date getDateCreated() {
return dateCreated;
}
public void setDateCreated(Date dateCreated) {
this.dateCreated = dateCreated;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (int) (id ^ (id >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Artist other = (Artist) obj;
if (id != other.id)
return false;
return true;
}
public String getMusicBrainzId() {
return musicBrainzId;
}
public void setMusicBrainzId(String musicBrainzId) {
this.musicBrainzId = musicBrainzId;
}
public Long getAndroidAudioArtistId() {
return androidAudioArtistId;
}
public void setAndroidAudioArtistId(Long androidAudioArtistId) {
this.androidAudioArtistId = androidAudioArtistId;
}
public Boolean isHidden() {
return isHidden;
}
public void setHidden(Boolean isHidden) {
this.isHidden = isHidden;
}
public String getMusicBrainzUri() {
return MUSIC_BRAINZ_BASE_URI_HTTP + getMusicBrainzId();
}
public String getMusicBrainzUriHttps() {
return MUSIC_BRAINZ_BASE_URI_HTTPS + getMusicBrainzId();
}
@Override
public void prePersist() {
if (dateCreated == null)
setDateCreated(new Date());
}
@Override
public String toString() {
return "Artist [id=" + id + ", androidAudioArtistId="
+ androidAudioArtistId + ", musicBrainzId=" + musicBrainzId
+ ", artistName=" + artistName + ", releases=" + releases
+ ", dateCreated=" + dateCreated + ", isHidden=" + isHidden
+ "]";
}
}