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 package org.utgenome.gwt.utgb.client.track;
26
27 import java.util.HashMap;
28
29 import org.utgenome.gwt.utgb.client.UTGBClientErrorCode;
30 import org.utgenome.gwt.utgb.client.UTGBClientException;
31 import org.utgenome.gwt.utgb.client.track.HasFactory.TrackGroupFactory;
32 import org.utgenome.gwt.utgb.client.track.Track.TrackFactory;
33 import org.utgenome.gwt.utgb.client.util.CanonicalProperties;
34
35
36
37
38
39 public class TrackFactoryHolder {
40
41
42
43
44 private TrackFactoryHolder() {
45 }
46
47 private static HashMap<String, TrackFactory> trackFactoryTable = new HashMap<String, TrackFactory>();
48 private static HashMap<String, TrackGroupFactory> trackGroupFactoryTable = new HashMap<String, TrackGroupFactory>();
49
50 static {
51 TrackFactorySetup.initialize();
52 }
53
54 public static void addTrackFactory(String absoluteTrackClassName, TrackFactory factory) {
55 trackFactoryTable.put(CanonicalProperties.toCanonicalName(absoluteTrackClassName), factory);
56 }
57
58 public static void addTrackGroupFactory(String absoluteTrackGroupClassName, TrackGroupFactory factory) {
59 trackGroupFactoryTable.put(CanonicalProperties.toCanonicalName(absoluteTrackGroupClassName), factory);
60 }
61
62 public static TrackFactory getTrackFactory(String name) throws UTGBClientException {
63 return trackFactoryTable.get(CanonicalProperties.toCanonicalName(name));
64 }
65
66 public static TrackGroupFactory getTrackGroupFactory(String name) throws UTGBClientException {
67 TrackGroupFactory factory = trackGroupFactoryTable.get(CanonicalProperties.toCanonicalName(name));
68 if (factory == null)
69 throw new UTGBClientException(UTGBClientErrorCode.UNKNOWN_TRACK_GROUP, "unknown track group: " + name);
70 else
71 return factory;
72 }
73
74 }