blob: b750848acc8d50ebab687b5c0013d65f9952699d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
package bjc.utils.components;
/**
* Generic implementation of a description for a component
*
* @author ben
*
*/
public class ComponentDescription implements IDescribedComponent {
private static void sanityCheckArgs(String name, String author, String description, int version) {
if(name == null)
throw new NullPointerException("Component name can't be null");
else if(version <= 0) throw new IllegalArgumentException("Component version must be greater than 0");
}
/**
* The author of the component
*/
private String author;
/**
* The description of the component
*/
private String description;
/**
* The name of the component
*/
private String name;
/**
* The version of the component
*/
private int version;
/**
* Create a new component description
*
* @param name
* The name of the component
* @param author
* The author of the component
* @param description
* The description of the component
* @param version
* The version of the component
* @throws IllegalArgumentException
* thrown if version is less than 1
*/
public ComponentDescription(String name, String author, String description, int version) {
sanityCheckArgs(name, author, description, version);
this.name = name;
this.author = author;
this.description = description;
this.version = version;
}
@Override
public String getAuthor() {
if(author == null) return IDescribedComponent.super.getAuthor();
return author;
}
@Override
public String getDescription() {
if(description == null) return IDescribedComponent.super.getDescription();
return description;
}
@Override
public String getName() {
return name;
}
@Override
public int getVersion() {
return version;
}
@Override
public String toString() {
return name + " component v" + version + ", written by " + author;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((author == null) ? 0 : author.hashCode());
result = prime * result + ((description == null) ? 0 : description.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + version;
return result;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if(this == obj) return true;
if(obj == null) return false;
if(getClass() != obj.getClass()) return false;
ComponentDescription other = (ComponentDescription) obj;
if(author == null) {
if(other.author != null) return false;
} else if(!author.equals(other.author)) return false;
if(description == null) {
if(other.description != null) return false;
} else if(!description.equals(other.description)) return false;
if(name == null) {
if(other.name != null) return false;
} else if(!name.equals(other.name)) return false;
if(version != other.version) return false;
return true;
}
}
|