View Javadoc

1   package org.musicontroller.core;
2   
3   import java.util.HashSet;
4   import java.util.Set;
5   
6   public class Band extends LinkableAbs {
7   	private String sortname;
8   	private Link link;
9   	private Set<Contract_BA> artists;
10  	
11  	public Band() {
12  		sortname="";
13  		link=null;
14  		artists=new HashSet<Contract_BA>();
15  	}
16  	
17  	public Link getLink() {
18  		return link;
19  	}
20  	
21  	public void setLink(Link link) {
22  		this.link = link;
23  	}
24  	
25  	/**
26  	 * Setter for the Band name. If the input is longer that the maximum length,
27  	 * only the first characters are accepted.
28  	 * @param name The Band name.
29  	 */
30  	public void setName(String name) {
31  		super.setName(name);
32  		sortname = generateSortname(getName());
33  	}
34  
35  	public String getSortname() {
36  		return sortname;
37  	}
38  	
39  	public void setSortname(String sortname) {
40  		//Do nothing, sortname depends on setName()!
41  	}
42  	
43  	public Set<Contract_BA> getArtists() {
44  		return artists;
45  	}
46  
47  	public void setArtists(Set<Contract_BA> artists) {
48  		if (artists!=null) this.artists = artists;
49  	}
50  	
51  	/**
52  	 * Returns a string of at most 16 characters, based on the input.
53  	 * Prefixes 'the ' and 'de ' are disregarded.
54  	 * @param name The String to base the output on.
55  	 * @return
56  	 */
57  	private String generateSortname(String name) {
58  		String result = "";
59  		if (name!=null) {
60  			result += name.toLowerCase();
61  			result = result.replaceFirst("the |de ",""); //remove 'the ' (not 'theatre' and alike!!)
62  			//TODO are there more filters to apply?
63  			
64  			result = result.trim();
65  			if (result.length()>16) {
66  				result = result.substring(0,16);
67  			}
68  		}
69  		return result;
70  	}
71  	
72  	/*
73  	 * (non-Javadoc)
74  	 * @see java.lang.Object#equals(java.lang.Object)
75  	 */
76  	@Override
77  	public boolean equals(Object o) {
78  		boolean result = false;
79  		if (this==o) {
80  			result = true;
81  		} else {
82  			if (o instanceof Band) {
83  				Band other = (Band) o;
84  				if(this.getName()==null) {
85  					result = other.getName()==null;
86  				} else {
87  					result = this.getName().equalsIgnoreCase(other.getName());
88  				}
89  			}
90  		}
91  		return result;
92  	}
93  	
94  	/*
95  	 * (non-Javadoc)
96  	 * @see java.lang.Object#hashCode()
97  	 */
98  	@Override
99  	public int hashCode() {
100 		return Long.valueOf(getId()).hashCode();
101 	}
102 	
103 	/*
104 	 * (non-Javadoc)
105 	 * @see java.lang.Object#toString()
106 	 */
107 	@Override
108 	public String toString() {
109 		StringBuilder sb = new StringBuilder();
110 		sb.append("[");
111 		sb.append(getId());
112 		sb.append("] ");
113 		sb.append(getName());
114 		return sb.toString();
115 	}
116 
117 	public String getType() {
118 		return "B";
119 	}
120 }