1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.sonar.commons;
21
22 import ch.hortis.sonar.service.MeasuresDao;
23 import ch.hortis.sonar.service.PropertiesDao;
24 import org.sonar.commons.database.BatchDatabaseManager;
25 import org.sonar.commons.database.DatabaseConnector;
26 import org.sonar.commons.database.DatabaseManager;
27 import org.sonar.commons.rules.RulesDao;
28
29 public class DaoFacade {
30
31 private DatabaseManager databaseManager = null;
32 private RulesDao rulesDao = null;
33 private MeasuresDao measuresDao = null;
34 private PropertiesDao propertiesDao = null;
35
36
37 public DaoFacade(DatabaseConnector databaseConnector) {
38 databaseManager = new BatchDatabaseManager(databaseConnector);
39 databaseManager.start();
40 }
41
42 public void start() {
43 }
44
45 public void stop() {
46 if (databaseManager != null) {
47 databaseManager.stop();
48 rulesDao = null;
49 measuresDao = null;
50 }
51 }
52
53 public RulesDao getRulesDao() {
54 if (rulesDao == null) {
55 rulesDao = new RulesDao(databaseManager);
56 }
57 return rulesDao;
58 }
59
60 public MeasuresDao getMeasuresDao() {
61 if (measuresDao == null) {
62 measuresDao = new MeasuresDao(getDatabaseManager());
63 }
64 return measuresDao;
65 }
66
67 public PropertiesDao getPropertiesDao() {
68 if (propertiesDao == null) {
69 propertiesDao = new PropertiesDao(getDatabaseManager().getEntityManager());
70 }
71 return propertiesDao;
72 }
73
74 public DatabaseManager getDatabaseManager() {
75 return databaseManager;
76 }
77
78 protected void finalize() throws Throwable {
79 stop();
80 super.finalize();
81 }
82 }