Skip to content

Commit 2dbde83

Browse files
committed
Refactoring DaoConfig
1 parent ae9ecd6 commit 2dbde83

3 files changed

Lines changed: 307 additions & 13 deletions

File tree

knowage/src/main/webapp/WEB-INF/conf/master.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@
237237
<CONFIGURATOR path="/WEB-INF/conf/config/security_liferay_config.xml" />
238238
<CONFIGURATOR path="/WEB-INF/conf/config/internal_profiling.xml" />
239239
<CONFIGURATOR path="/WEB-INF/conf/config/tree_initialization.xml" />
240-
<CONFIGURATOR path="/WEB-INF/conf/config/spagobi_dao.xml" />
240+
<!--<CONFIGURATOR path="/WEB-INF/conf/config/spagobi_dao.xml" />-->
241241
<CONFIGURATOR path="/WEB-INF/conf/config/tenants.xml" />
242242

243243

knowagedao/src/main/java/it/eng/spagobi/commons/dao/DAOConfig.java

Lines changed: 49 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,19 @@
1818
package it.eng.spagobi.commons.dao;
1919

2020
import java.io.File;
21+
import java.io.InputStream;
2122
import java.util.HashMap;
22-
import java.util.List;
2323
import java.util.Map;
2424

25+
import javax.xml.parsers.DocumentBuilder;
26+
import javax.xml.parsers.DocumentBuilderFactory;
27+
import javax.xml.xpath.XPath;
28+
2529
import org.apache.log4j.Logger;
30+
import org.w3c.dom.Document;
31+
import org.w3c.dom.Element;
32+
import org.w3c.dom.NodeList;
2633

27-
import it.eng.spago.base.SourceBean;
28-
import it.eng.spago.configuration.ConfigSingleton;
2934
import it.eng.spagobi.commons.utilities.SpagoBIUtilities;
3035
import it.eng.spagobi.services.common.EnginConf;
3136

@@ -59,20 +64,52 @@ public static void setMappings(Map<String, String> mappings) {
5964
DAOConfig.mappings = mappings;
6065
}
6166

67+
6268
public static Map<String, String> getMappings() {
63-
if (DAOConfig.mappings == null) {
64-
DAOConfig.mappings = new HashMap<>();
65-
ConfigSingleton configSingleton = ConfigSingleton.getInstance();
66-
List<SourceBean> daoConfigSourceBeans = configSingleton.getAttributeAsList("SPAGOBI.DAO-CONF.DAO");
67-
for (SourceBean daoConfigSourceBean : daoConfigSourceBeans) {
68-
String daoName = (String) daoConfigSourceBean.getAttribute("name");
69-
String daoClass = (String) daoConfigSourceBean.getAttribute("implementation");
70-
DAOConfig.mappings.put(daoName, daoClass);
69+
Map<String, String> local = mappings;
70+
if (local == null) {
71+
synchronized (DAOConfig.class) {
72+
local = mappings;
73+
if (local == null) {
74+
local = loadMappings();
75+
local = java.util.Collections.unmodifiableMap(local);
76+
mappings = local;
77+
}
78+
}
79+
}
80+
return local;
81+
}
82+
83+
private static Map<String, String> loadMappings() {
84+
Map<String, String> map = new HashMap<>();
85+
try (InputStream is = DAOConfig.class.getResourceAsStream("/conf/dao_config.xml")) {
86+
if (is == null) {
87+
throw new IllegalStateException("dao_config.xml not found in the classpath");
7188
}
89+
90+
DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
91+
f.setNamespaceAware(false);
92+
f.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
93+
DocumentBuilder b = f.newDocumentBuilder();
94+
Document doc = b.parse(is);
95+
96+
XPath x = javax.xml.xpath.XPathFactory.newInstance().newXPath();
97+
NodeList nodes = (NodeList) x.evaluate("/DAO-CONF/DAO", doc, javax.xml.xpath.XPathConstants.NODESET);
98+
99+
for (int i = 0; i < nodes.getLength(); i++) {
100+
Element el = (Element) nodes.item(i);
101+
String name = el.getAttribute("name");
102+
String impl = el.getAttribute("implementation");
103+
map.put(name, impl);
104+
}
105+
return map;
106+
107+
} catch (Exception ex) {
108+
throw new IllegalStateException("Errore nel parsing di dao_config.xml", ex);
72109
}
73-
return DAOConfig.mappings;
74110
}
75111

112+
76113
public static String getHibernateConfigurationFile() {
77114
if (DAOConfig.hibernateConfigurationFile == null) {
78115
DAOConfig.hibernateConfigurationFile = "hibernate.cfg.xml";
Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<DAO-CONF>
3+
<!-- HIBERNATE DAO (DEFAULT) IMPLEMENTATION -->
4+
<DAO name="TenantsDAO"
5+
implementation="it.eng.spagobi.commons.dao.TenantsDAOHibImpl" />
6+
<DAO name="BIObjectDAO"
7+
implementation="it.eng.spagobi.analiticalmodel.document.dao.BIObjectDAOHibImpl" />
8+
<DAO name="ChecksDAO"
9+
implementation="it.eng.spagobi.behaviouralmodel.check.dao.CheckDAOHibImpl" />
10+
<DAO name="EngineDAO"
11+
implementation="it.eng.spagobi.engines.config.dao.EngineDAOHibImpl" />
12+
<DAO name="ParameterDAO"
13+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.ParameterDAOHibImpl" />
14+
<DAO name="DomainDAO"
15+
implementation="it.eng.spagobi.commons.dao.DomainDAOHibImpl" />
16+
<DAO name="CategoryDAO"
17+
implementation="it.eng.spagobi.commons.dao.CategoryDAOHibImpl" />
18+
<DAO name="BIObjectParameterDAO"
19+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.BIObjectParameterDAOHibImpl" />
20+
<DAO name="RoleDAO"
21+
implementation="it.eng.spagobi.commons.dao.RoleDAOHibImpl" />
22+
<DAO name="ModalitiesValueDAO"
23+
implementation="it.eng.spagobi.behaviouralmodel.lov.dao.LovDAOHibImpl" />
24+
<DAO name="ParameterUseDAO"
25+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.ParameterUseDAOHibImpl" />
26+
<DAO name="LowFunctionalityDAO"
27+
implementation="it.eng.spagobi.analiticalmodel.functionalitytree.dao.LowFunctionalityDAOHibImpl" />
28+
<DAO name="ObjParuseDAO"
29+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.ObjParuseDAOHibImpl" />
30+
<DAO name="ObjParviewDAO"
31+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.ObjParviewDAOHibImpl" />
32+
<DAO name="SubreportDAO"
33+
implementation="it.eng.spagobi.analiticalmodel.document.dao.SubreportDAOHibImpl" />
34+
<DAO name="ViewpointDAO"
35+
implementation="it.eng.spagobi.analiticalmodel.document.dao.ViewpointDAOHimpl" />
36+
<DAO name="MetaModelViewpointDAO"
37+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.MetaModelViewpointDAOHibImpl" />
38+
<DAO name="DataSourceDAO"
39+
implementation="it.eng.spagobi.tools.datasource.dao.DataSourceDAOHibImpl" />
40+
<DAO name="DataSetDAO"
41+
implementation="it.eng.spagobi.tools.dataset.dao.DataSetDAOImpl" />
42+
<DAO name="SbiDataSetDAO"
43+
implementation="it.eng.spagobi.tools.dataset.dao.SbiDataSetDAOImpl" />
44+
45+
<DAO name="SbiNewsDAO"
46+
implementation="it.eng.spagobi.tools.news.dao.SbiNewsDAOImpl"></DAO>
47+
48+
<DAO name="SbiNewsReadDAO"
49+
implementation="it.eng.spagobi.tools.news.dao.SbiNewsReadDAOImpl"></DAO>
50+
51+
<DAO name="BinContentDAO"
52+
implementation="it.eng.spagobi.commons.dao.BinContentDAOHibImpl" />
53+
<DAO name="ObjTemplateDAO"
54+
implementation="it.eng.spagobi.analiticalmodel.document.dao.ObjTemplateDAOHibImpl" />
55+
<DAO name="ObjNoteDAO"
56+
implementation="it.eng.spagobi.analiticalmodel.document.dao.ObjNoteDAOHibImpl" />
57+
<DAO name="SubObjectDAO"
58+
implementation="it.eng.spagobi.analiticalmodel.document.dao.SubObjectDAOHibImpl" />
59+
<DAO name="SnapshotDAO"
60+
implementation="it.eng.spagobi.analiticalmodel.document.dao.SnapshotDAOHibImpl" />
61+
<DAO name="UserFunctionalityDAO"
62+
implementation="it.eng.spagobi.commons.dao.UserFunctionalityDAO" />
63+
<DAO name="DistributionListDAO"
64+
implementation="it.eng.spagobi.tools.distributionlist.dao.DistributionListDaoImpl" />
65+
<DAO name="DossierDAO"
66+
implementation="it.eng.spagobi.engines.dossier.dao.DossierDAOHibImpl" />
67+
<DAO name="DossierPresentationDAO"
68+
implementation="it.eng.spagobi.engines.dossier.dao.DossierPresentationsDAOHibImpl" />
69+
<DAO name="DossierPartsTempDAO"
70+
implementation="it.eng.spagobi.engines.dossier.dao.DossierPartsTempDAOHibImpl" />
71+
<DAO name="RememberMeDAO"
72+
implementation="it.eng.spagobi.hotlink.rememberme.dao.RememberMeDAOHibImpl" />
73+
<DAO name="MenuDAO"
74+
implementation="it.eng.spagobi.wapp.dao.MenuDAOImpl" />
75+
<DAO name="MenuRolesDAO"
76+
implementation="it.eng.spagobi.wapp.dao.MenuRolesDAOImpl" />
77+
<DAO name="BIObjectRatingDAO"
78+
implementation="it.eng.spagobi.analiticalmodel.document.dao.BIObjectRatingDAOHibImpl" />
79+
<DAO name="OldKpiDAO"
80+
implementation="it.eng.spagobi.kpi.config.dao.KpiDAOImpl" />
81+
<DAO name="KpiDAO"
82+
implementation="it.eng.spagobi.kpi.dao.KpiDAOImpl" />
83+
<DAO name="AlarmEventDAO"
84+
implementation="it.eng.spagobi.kpi.alarm.dao.SbiAlarmEventDAOHibImpl" />
85+
<DAO name="AlarmDAO"
86+
implementation="it.eng.spagobi.kpi.alarm.dao.SbiAlarmDAOHibImpl" />
87+
<DAO name="AlarmContactDAO"
88+
implementation="it.eng.spagobi.kpi.alarm.dao.SbiAlarmContactDAOHibImpl" />
89+
90+
<DAO name="ModelDAO"
91+
implementation="it.eng.spagobi.kpi.model.dao.ModelDAOImpl" />
92+
<DAO name="ModelInstanceDAO"
93+
implementation="it.eng.spagobi.kpi.model.dao.ModelInstanceDAOImpl" />
94+
<DAO name="PeriodicityDAO"
95+
implementation="it.eng.spagobi.kpi.config.dao.PeriodicityDAOImpl" />
96+
<DAO name="ThresholdDAO"
97+
implementation="it.eng.spagobi.kpi.threshold.dao.ThresholdDAOImpl" />
98+
<DAO name="ModelResourceDAO"
99+
implementation="it.eng.spagobi.kpi.model.dao.ModelResourceDAOImpl" />
100+
<DAO name="ThresholdValueDAO"
101+
implementation="it.eng.spagobi.kpi.threshold.dao.ThresholdValueDAOImpl" />
102+
<DAO name="MeasureUnitDAO"
103+
implementation="it.eng.spagobi.kpi.config.dao.MeasureUnitDAOImpl" />
104+
<DAO name="KpiInstanceDAO"
105+
implementation="it.eng.spagobi.kpi.config.dao.KpiInstanceDAOImpl" />
106+
<DAO name="ResourceDAO"
107+
implementation="it.eng.spagobi.kpi.model.dao.ResourceDAOImpl" />
108+
<DAO name="KpiInstPeriodDAO"
109+
implementation="it.eng.spagobi.kpi.config.dao.KpiInstPeriodDAOImpl" />
110+
<DAO name="ObjMetadataDAO"
111+
implementation="it.eng.spagobi.tools.objmetadata.dao.ObjMetadataDAOHibImpl" />
112+
<DAO name="ObjMetacontentDAO"
113+
implementation="it.eng.spagobi.tools.objmetadata.dao.ObjMetacontentDAOHibImpl" />
114+
<DAO name="KpiErrorDAO"
115+
implementation="it.eng.spagobi.kpi.config.dao.KpiErrorDAOImpl" />
116+
<DAO name="SbiKpiOUDAO"
117+
implementation="it.eng.spagobi.kpi.ou.dao.OrganizationalUnitDAOImpl" />
118+
<DAO name="GoalDAO"
119+
implementation="it.eng.spagobi.kpi.goal.dao.GoalDAOImpl" />
120+
121+
<DAO name="SbiUserDAO"
122+
implementation="it.eng.spagobi.profiling.dao.SbiUserDAOHibImpl" />
123+
<DAO name="SbiAttributeDAO"
124+
implementation="it.eng.spagobi.profiling.dao.SbiAttributeDAOHibImpl" />
125+
<DAO name="SbiConfigDAO"
126+
implementation="it.eng.spagobi.commons.dao.ConfigDAOHibImpl" />
127+
<DAO name="UdpDAO"
128+
implementation="it.eng.spagobi.tools.udp.dao.UdpDAOHibImpl" />
129+
<DAO name="UdpDAOValue"
130+
implementation="it.eng.spagobi.tools.udp.dao.UdpValueDAOHibImpl" />
131+
<DAO name="ImagesDAO"
132+
implementation="it.eng.spagobi.images.dao.ImagesDAOImpl" />
133+
<DAO name="SbiAccessibilityPreferencesDAO"
134+
implementation="it.eng.spagobi.profiling.dao.SbiAccessibilityPreferencesDAOHibImpl" />
135+
136+
<DAO name="I18NMessagesDAO"
137+
implementation="it.eng.spagobi.i18n.dao.I18NMessagesDAOHibImpl" />
138+
<DAO name="ProgressThreadDAO"
139+
implementation="it.eng.spagobi.tools.massiveExport.dao.ProgressThreadDAOImpl" />
140+
141+
<DAO name="SchedulerDAO"
142+
implementation="it.eng.spagobi.tools.scheduler.dao.quartz.QuarzSchedulerDAOImpl" />
143+
144+
<DAO name="WsEventDAO"
145+
implementation="it.eng.spagobi.tools.scheduler.wsEvents.dao.impl.SbiWsEventsDaoImpl" />
146+
147+
<DAO name="MetaModelsDAO"
148+
implementation="it.eng.spagobi.tools.catalogue.dao.MetaModelsDAOImpl" />
149+
<DAO name="ArtifactsDAO"
150+
implementation="it.eng.spagobi.tools.catalogue.dao.ArtifactsDAOImpl" />
151+
152+
<DAO name="GeoLayersDAO"
153+
implementation="it.eng.spagobi.mapcatalogue.dao.SbiGeoLayersDAOHibImpl" />
154+
155+
<DAO name="ProductTypeDAO"
156+
implementation="it.eng.spagobi.commons.dao.ProductTypeDAOHibImpl" />
157+
158+
<DAO name="GlossaryDAO"
159+
implementation="it.eng.spagobi.tools.glossary.dao.GlossaryDAOImpl" />
160+
161+
<DAO name="TimespanDAO"
162+
implementation="it.eng.spagobi.tools.timespan.dao.TimespanDAOImpl" />
163+
164+
<DAO name="CacheDAO"
165+
implementation="it.eng.spagobi.cache.dao.CacheDAOHibImpl" />
166+
167+
<DAO name="FederationDefinitionDAO"
168+
implementation="it.eng.spagobi.federateddataset.dao.SbiFederationDefinitionDAOHibImpl" />
169+
170+
<DAO name="BIObjDataSetDAO"
171+
implementation="it.eng.spagobi.tools.dataset.dao.BIObjDataSetDAOHibImpl" />
172+
173+
<DAO name="IFeaturesProviderWFSDAO"
174+
implementation="it.eng.spagobi.georeport.dao.FeaturesProviderDAOWFSImpll" />
175+
176+
<DAO name="IFeaturesProviderFileDAO"
177+
implementation="it.eng.spagobi.georeport.dao.FeaturesProviderDAOFileImpl" />
178+
179+
<DAO name="CrossNavigationDAO"
180+
implementation="it.eng.spagobi.tools.crossnavigation.dao.CrossNavigationDAOImpl" />
181+
182+
<DAO name="OutputParameterDAO"
183+
implementation="it.eng.spagobi.analiticalmodel.document.dao.OutputParameterDAOImpl" />
184+
185+
<DAO name="ISbiMetaSourceDAO"
186+
implementation="it.eng.spagobi.metadata.dao.SbiMetaSourceDAOHibImpl" />
187+
<DAO name="ISbiMetaTableDAO"
188+
implementation="it.eng.spagobi.metadata.dao.SbiMetaTableDAOHibImpl" />
189+
<DAO name="ISbiMetaTableColumnDAO"
190+
implementation="it.eng.spagobi.metadata.dao.SbiMetaTableColumnDAOHibImpl" />
191+
<DAO name="ISbiMetaBCDAO"
192+
implementation="it.eng.spagobi.metadata.dao.SbiMetaBcDAOHibImpl" />
193+
<DAO name="ISbiMetaBCAttributeDAO"
194+
implementation="it.eng.spagobi.metadata.dao.SbiMetaBcAttributeDAOHibImpl" />
195+
<DAO name="ISbiMetaJobDAO"
196+
implementation="it.eng.spagobi.metadata.dao.SbiMetaJobDAOHibImpl" />
197+
<DAO name="ISbiDsBcDAO"
198+
implementation="it.eng.spagobi.metadata.dao.SbiDsBcDAOHibImpl" />
199+
<DAO name="ISbiJobSourceDAO"
200+
implementation="it.eng.spagobi.metadata.dao.SbiJobSourceDAOHibImpl" />
201+
<DAO name="ISbiJobTableDAO"
202+
implementation="it.eng.spagobi.metadata.dao.SbiJobTableDAOHibImpl" />
203+
<DAO name="ISbiObjDsDAO"
204+
implementation="it.eng.spagobi.metadata.dao.SbiObjDsDAOHibImpl" />
205+
<DAO name="ISbiTableBcDAO"
206+
implementation="it.eng.spagobi.metadata.dao.SbiTableBcDAOHibImpl" />
207+
<DAO name="ISbiMetaDsTabRel"
208+
implementation="it.eng.spagobi.metadata.dao.SbiMetaDsTabRelDAOHibImpl" />
209+
<DAO name="ISbiMetaDocTabRelDAO"
210+
implementation="it.eng.spagobi.metadata.dao.SbiMetaDocTabRelDAOHibImpl" />
211+
<DAO name="AlertDAO"
212+
implementation="it.eng.spagobi.tools.alert.dao.AlertDAOImpl" />
213+
<DAO name="IFunctionsOrganizerDAO"
214+
implementation="it.eng.spagobi.workspace.dao.FunctionsOrganizerDAOHibImpl" />
215+
<DAO name="IWhatifWorkflowDAO"
216+
implementation="it.eng.spagobi.whatif.dao.WhatifWorkflowDAOHibImpl" />
217+
218+
<DAO name="ICatalogFunctionDAO"
219+
implementation="it.eng.spagobi.functions.dao.CatalogFunctionDAOImpl" />
220+
<DAO name="BIObjFunctionDAO"
221+
implementation="it.eng.spagobi.functions.dao.BIObjFunctionDAOHibImpl" />
222+
<DAO name="IObjFuncOrganizerDAO"
223+
implementation="it.eng.spagobi.workspace.dao.ObjFuncOrganizerHIBDAOImpl" />
224+
<DAO name="CalendarDAO"
225+
implementation="it.eng.spagobi.tools.calendar.dao.CalendarDAOImpl" />
226+
<DAO name="DossierActivityDAO"
227+
implementation="it.eng.spagobi.dossier.dao.SbiDossierActivityDAOHibImpl" />
228+
<DAO name="BIMetaModelParameterDAO"
229+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.BIMetaModelParameterDAOHibImpl" />
230+
<DAO name="MetaModelParuseDAO"
231+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.MetaModelParuseDAOHibImpl" />
232+
<DAO name="MetaModelParviewDAO"
233+
implementation="it.eng.spagobi.behaviouralmodel.analyticaldriver.dao.MetaModelParviewDAOHibImpl" />
234+
235+
<DAO name="ISbiTagDAO"
236+
implementation="it.eng.spagobi.tools.tag.dao.SbiTagDAOImpl" />
237+
238+
<DAO name="FunctionInputVariableDAO"
239+
implementation="it.eng.spagobi.functions.dao.FunctionInputVariableDAOImpl"></DAO>
240+
<DAO name="FunctionOutputColumnDAO"
241+
implementation="it.eng.spagobi.functions.dao.FunctionOutputColumnDAOImpl"></DAO>
242+
<DAO name="FunctionInputColumnDAO"
243+
implementation="it.eng.spagobi.functions.dao.FunctionInputColumnDAOImpl"></DAO>
244+
245+
<DAO name="ISbiViewHierarchyDAO"
246+
implementation="it.eng.spagobi.view.dao.SbiViewHierarchyHIBDAOImpl"></DAO>
247+
<DAO name="ISbiViewDAO"
248+
implementation="it.eng.spagobi.view.dao.SbiViewHIBDAOImpl"></DAO>
249+
<DAO name="ISbiViewForDocDAO"
250+
implementation="it.eng.spagobi.view.dao.SbiViewForDocHIBDAOImpl"></DAO>
251+
252+
<DAO name="DashboardThemeDAO"
253+
implementation="it.eng.spagobi.commons.dao.DashboardThemeDAOHibImpl"></DAO>
254+
255+
</DAO-CONF>
256+
257+
<!-- ********************* END DAO CONFIGURATION ************************ -->

0 commit comments

Comments
 (0)