1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.chukwa.extraction.engine.datasource;
20
21
22 import java.util.HashMap;
23 import org.apache.hadoop.chukwa.extraction.engine.datasource.database.DatabaseDS;
24 import org.apache.hadoop.chukwa.extraction.engine.datasource.record.ChukwaRecordDataSource;
25
26 public class DataSourceFactory {
27 private static Object lock = new Object();
28 private static DataSourceFactory factory = null;
29 private HashMap<String, DataSource> dataSources = new HashMap<String, DataSource>();
30
31 private DataSourceFactory() {
32
33
34 DataSource databaseDS = new DatabaseDS();
35 dataSources.put("MRJob", databaseDS);
36 dataSources.put("HodJob", databaseDS);
37 dataSources.put("QueueInfo", databaseDS);
38
39 }
40
41 public static DataSourceFactory getInstance() {
42 synchronized (lock) {
43 if (factory == null) {
44 factory = new DataSourceFactory();
45 }
46 }
47 return factory;
48 }
49
50 public DataSource getDataSource(String datasourceName)
51 throws DataSourceException {
52 if (dataSources.containsKey(datasourceName)) {
53 return dataSources.get(datasourceName);
54 } else {
55 DataSource hsdfsDS = new ChukwaRecordDataSource();
56 dataSources.put(datasourceName, hsdfsDS);
57 return hsdfsDS;
58
59
60 }
61 }
62 }