Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / preset / TypedKey.java
1 package net.sf.openrocket.preset;
2
3 import net.sf.openrocket.unit.UnitGroup;
4
5 public class TypedKey<T> {
6
7         private final String name;
8         private final Class<T> type;
9         private final UnitGroup unitGroup;
10         
11         public TypedKey(String name, Class<T> type) {
12                 this(name, type, null);
13         }
14         
15         public TypedKey(String name, Class<T> type, UnitGroup unitGroup) {
16                 this.name = name;
17                 this.type = type;
18                 this.unitGroup = unitGroup;
19         }
20
21         @Override
22         public String toString() {
23                 return "TypedKey [name=" + name + "]";
24         }
25
26         public String getName() {
27                 return name;
28         }
29
30         public Class<T> getType() {
31                 return type;
32         }
33
34         public UnitGroup getUnitGroup() {
35                 return unitGroup;
36         }
37
38         @Override
39         public int hashCode() {
40                 final int prime = 31;
41                 int result = 1;
42                 result = prime * result + ((name == null) ? 0 : name.hashCode());
43                 result = prime * result + ((type == null) ? 0 : type.hashCode());
44                 return result;
45         }
46
47         @Override
48         public boolean equals(Object obj) {
49                 if (this == obj)
50                         return true;
51                 if (obj == null)
52                         return false;
53                 if (getClass() != obj.getClass())
54                         return false;
55                 TypedKey other = (TypedKey) obj;
56                 if (name == null) {
57                         if (other.name != null)
58                                 return false;
59                 } else if (!name.equals(other.name))
60                         return false;
61                 if (type == null) {
62                         if (other.type != null)
63                                 return false;
64                 } else if (!type.equals(other.type))
65                         return false;
66                 return true;
67         }
68         
69 }