Project

General

Profile

« Previous | Next » 

Revision 9b853065

Added by Niels Hoffmann almost 14 years ago

Integrated progress monitor into application controller and started integrating it to some imports.

View differences:

cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/application/CdmApplicationController.java
19 19
import org.springframework.beans.MutablePropertyValues;
20 20
import org.springframework.beans.factory.config.BeanDefinition;
21 21
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
22
import org.springframework.context.ApplicationEvent;
23
import org.springframework.context.ApplicationListener;
22 24
import org.springframework.context.support.AbstractApplicationContext;
23 25
import org.springframework.context.support.GenericApplicationContext;
24 26
import org.springframework.core.io.ClassPathResource;
......
50 52
import eu.etaxonomy.cdm.api.service.ITermService;
51 53
import eu.etaxonomy.cdm.api.service.IUserService;
52 54
import eu.etaxonomy.cdm.api.service.IVocabularyService;
55
import eu.etaxonomy.cdm.common.IProgressMonitor;
56
import eu.etaxonomy.cdm.common.ProgressMonitorBase;
53 57
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
54 58
import eu.etaxonomy.cdm.database.DataSourceNotFoundException;
55 59
import eu.etaxonomy.cdm.database.DbSchemaValidation;
......
73 77
	public AbstractApplicationContext applicationContext;
74 78
	private ICdmApplicationConfiguration configuration; 
75 79
	private Resource applicationContextResource;
80

  
81
	private IProgressMonitor progressMonitor;
76 82
	
77 83
	final static DbSchemaValidation defaultDbSchemaValidation = DbSchemaValidation.VALIDATE;
78 84
	
......
85 91
		logger.info("Start CdmApplicationController with default data source");
86 92
		CdmPersistentDataSource dataSource = CdmPersistentDataSource.NewDefaultInstance();
87 93
		DbSchemaValidation dbSchemaValidation = defaultDbSchemaValidation;
88
		return new CdmApplicationController(null, dataSource, dbSchemaValidation, false);
94
		return CdmApplicationController.NewInstance(null, dataSource, dbSchemaValidation, false);
89 95
	}
90 96
	
91 97
	/**
......
95 101
	public static CdmApplicationController NewInstance(DbSchemaValidation dbSchemaValidation)  throws DataSourceNotFoundException, TermNotFoundException {
96 102
		logger.info("Start CdmApplicationController with default data source");
97 103
		CdmPersistentDataSource dataSource = CdmPersistentDataSource.NewDefaultInstance();
98
		if (dbSchemaValidation == null){
99
			dbSchemaValidation = defaultDbSchemaValidation;
100
		}
101
		return new CdmApplicationController(null, dataSource, dbSchemaValidation, false);
104
		return CdmApplicationController.NewInstance(null, dataSource, dbSchemaValidation, false);
102 105
	}
103 106

  
104 107
	
......
109 112
	 */
110 113
	public static CdmApplicationController NewInstance(ICdmDataSource dataSource) 
111 114
	throws DataSourceNotFoundException, TermNotFoundException{
112
		return new CdmApplicationController(null, dataSource, defaultDbSchemaValidation, false);
115
		return CdmApplicationController.NewInstance(null, dataSource, defaultDbSchemaValidation, false);
113 116
	}
114 117
	
115 118
	public static CdmApplicationController NewInstance(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation) 
116 119
	throws DataSourceNotFoundException, TermNotFoundException{
117
		return new CdmApplicationController(null, dataSource, dbSchemaValidation, false);
120
		return CdmApplicationController.NewInstance(null, dataSource, dbSchemaValidation, false);
118 121
	}
119 122

  
120 123
	public static CdmApplicationController NewInstance(ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading) 
121 124
	throws DataSourceNotFoundException, TermNotFoundException{
122
		return new CdmApplicationController(null, dataSource, dbSchemaValidation, omitTermLoading);
125
		return CdmApplicationController.NewInstance(null, dataSource, dbSchemaValidation, omitTermLoading);
123 126
	}
124 127
	
125 128
	public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading) 
126 129
	throws DataSourceNotFoundException, TermNotFoundException{
127
		return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading);
130
		return CdmApplicationController.NewInstance(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading);
131
	}
132
	
133
	public static CdmApplicationController NewInstance(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor) 
134
	throws DataSourceNotFoundException, TermNotFoundException{
135

  
136
		
137
		return new CdmApplicationController(applicationContextResource, dataSource, dbSchemaValidation, omitTermLoading, progressMonitor);
128 138
	}
129 139

  
130 140
	/**
......
133 143
	 * @param dbSchemaValidation
134 144
	 * @param omitTermLoading
135 145
	 */
136
	private CdmApplicationController(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading){
146
	private CdmApplicationController(Resource applicationContextResource, ICdmDataSource dataSource, DbSchemaValidation dbSchemaValidation, boolean omitTermLoading, IProgressMonitor progressMonitor){
137 147
		logger.info("Start CdmApplicationController with datasource: " + dataSource.getName());
138
		if (applicationContextResource != null){
139
			this.applicationContextResource = applicationContextResource;
140
		}else{
141
			this.applicationContextResource = new ClassPathResource(DEFAULT_APPLICATION_CONTEXT_RESOURCE);
148
		
149
		if (dbSchemaValidation == null){
150
			dbSchemaValidation = defaultDbSchemaValidation;
142 151
		}
143 152
		
144
		setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading);
153
		this.applicationContextResource = applicationContextResource != null ? applicationContextResource : new ClassPathResource(DEFAULT_APPLICATION_CONTEXT_RESOURCE);
154
		this.progressMonitor = progressMonitor != null ? progressMonitor : new ProgressMonitorBase();
145 155
		
146
//		if (setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading) == false){
147
//			throw new DataSourceNotFoundException("Wrong datasource: " + dataSource );
148
//		}
156
		setNewDataSource(dataSource, dbSchemaValidation, omitTermLoading);
149 157
	}
150 158
		
151 159
	
......
158 166
			dbSchemaValidation = defaultDbSchemaValidation;
159 167
		}
160 168
		logger.info("Connecting to '" + dataSource.getName() + "'");
161

  
169
		progressMonitor.subTask("Connecting to '" + dataSource.getName() + "'");
170
		progressMonitor.worked(1);
162 171

  
163 172
		GenericApplicationContext appContext;
164
//		try {
165
			appContext = new EclipseRcpSaveGenericApplicationContext();
166
			
167
			BeanDefinition datasourceBean = dataSource.getDatasourceBean();
168
			datasourceBean.setAttribute("isLazy", false);
169
			appContext.registerBeanDefinition("dataSource", datasourceBean);
170
			
171
			BeanDefinition hibernatePropBean= dataSource.getHibernatePropertiesBean(dbSchemaValidation);
172
			appContext.registerBeanDefinition("hibernateProperties", hibernatePropBean);
173
			
174
			XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appContext);
175
			xmlReader.loadBeanDefinitions(this.applicationContextResource);		 
176
			
177
			//omitTerms
178
			String initializerName = "persistentTermInitializer";
179
			BeanDefinition beanDef = appContext.getBeanDefinition(initializerName);
180
			MutablePropertyValues values = beanDef.getPropertyValues();
181
			values.addPropertyValue("omit", omitTermLoading);
182
			
183
			appContext.refresh();
184
			appContext.start();
185
			
173
		appContext = new EclipseRcpSaveGenericApplicationContext();
174
		
175
		BeanDefinition datasourceBean = dataSource.getDatasourceBean();
176
		datasourceBean.setAttribute("isLazy", false);
177
		progressMonitor.subTask("Registering datasource.");
178
		progressMonitor.worked(1);
179
		appContext.registerBeanDefinition("dataSource", datasourceBean);
180
		
181
		BeanDefinition hibernatePropBean= dataSource.getHibernatePropertiesBean(dbSchemaValidation);
182
		appContext.registerBeanDefinition("hibernateProperties", hibernatePropBean);
183
		
184
		XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(appContext);
185
		progressMonitor.subTask("Registering context resources.");
186
		progressMonitor.worked(1);
187
		xmlReader.loadBeanDefinitions(this.applicationContextResource);		 
188
		
189
		//omitTerms
190
		String initializerName = "persistentTermInitializer";
191
		BeanDefinition beanDef = appContext.getBeanDefinition(initializerName);
192
		MutablePropertyValues values = beanDef.getPropertyValues();
193
		values.addPropertyValue("omit", omitTermLoading);
194
		
195
		progressMonitor.subTask("Starting context. This might take a while...");
196
		progressMonitor.worked(1);
197
		appContext.refresh();
198
		appContext.start();
199
		
200
		progressMonitor.subTask("Setting application context.");
201
		progressMonitor.worked(1);
186 202
		setApplicationContext(appContext);
187 203
		
188 204
		//initialize user and metaData for new databases
189 205
		int userCount = getUserService().count(User.class);
190 206
		if (userCount == 0 ){
207
			progressMonitor.subTask("Creating Admin User");
208
			progressMonitor.worked(1);
191 209
			createAdminUser();
192 210
		}
193 211
		int metaDataCount = getCommonService().getCdmMetaData().size();
194 212
		if (metaDataCount == 0){
213
			progressMonitor.subTask("Creating Meta Data");
214
			progressMonitor.worked(1);
195 215
			createMetadata();
196 216
		}
197 217
		
......
297 317
		//TODO delete next row (was just for testing)
298 318
		if (logger.isInfoEnabled()){
299 319
			logger.info("Registered Beans: ");
300
			String[] beans = applicationContext.getBeanDefinitionNames();
301
			for (String bean:beans){
302
				logger.info(bean);
320
			progressMonitor.subTask("Registered Beans: ");
321
			String[] beanNames = applicationContext.getBeanDefinitionNames();
322
			for (String beanName : beanNames){
323
				logger.info(beanName);
324
				progressMonitor.subTask(beanName);
303 325
			}
304 326
		}
305 327
		configuration = (ICdmApplicationConfiguration)applicationContext.getBean("cdmApplicationDefaultConfiguration");

Also available in: Unified diff