0
|
1 package nabble.model;
|
|
2
|
|
3 import org.slf4j.Logger;
|
|
4 import org.slf4j.LoggerFactory;
|
|
5
|
|
6 import java.util.Map;
|
|
7
|
|
8
|
|
9 abstract class AbstractType<T extends AbstractType> {
|
|
10
|
|
11 private static final Logger logger = LoggerFactory.getLogger(AbstractType.class);
|
|
12
|
|
13 private final char code;
|
|
14 private final String name;
|
|
15
|
|
16 @SuppressWarnings("unchecked")
|
|
17 AbstractType( Map<Character,T> map, char code, String name ) {
|
|
18 this.code = code;
|
|
19 this.name = name;
|
|
20 if( map.put(code,(T)this) != null )
|
|
21 throw new RuntimeException("duplicate code: "+code);
|
|
22 }
|
|
23
|
|
24 public final char getCode() {
|
|
25 return code;
|
|
26 }
|
|
27
|
|
28 public final String getName() {
|
|
29 return name;
|
|
30 }
|
|
31
|
|
32 public String toString() {
|
|
33 return getClass().getSimpleName()+"-"+getName();
|
|
34 }
|
|
35
|
|
36 static <T> T getType( Map<Character,T> map, char code ) {
|
|
37 T t = map.get(code);
|
|
38 if( t==null ) {
|
|
39 //throw new RuntimeException("code="+code);
|
|
40 logger.warn("Invalid code="+code);
|
|
41 }
|
|
42 return t;
|
|
43 }
|
|
44 }
|