Try to use Hibernate events configured through Spring to fire changes to the model.
[cdmlib.git] / cdmlibrary / src / eu / etaxonomy / cdm / api / application / CdmApplicationController.java
1 package eu.etaxonomy.cdm.api.application;
2
3 import java.sql.Connection;
4 import java.util.Properties;
5
6 import org.apache.log4j.Logger;
7 import org.hibernate.SessionFactory;
8 import org.hibernate.cfg.Configuration;
9 import org.hibernate.impl.SessionFactoryImpl;
10 import org.hsqldb.Server;
11 import org.springframework.beans.BeansException;
12 import org.springframework.context.support.AbstractApplicationContext;
13 import org.springframework.context.support.ClassPathXmlApplicationContext;
14 import org.springframework.jdbc.datasource.DriverManagerDataSource;
15 import org.springframework.orm.hibernate3.AbstractSessionFactoryBean;
16 import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;
17 import org.springframework.util.PathMatcher;
18
19 import eu.etaxonomy.cdm.api.service.AgentServiceImpl;
20 import eu.etaxonomy.cdm.api.service.IAgentService;
21 import eu.etaxonomy.cdm.api.service.INameService;
22 import eu.etaxonomy.cdm.api.service.NameServiceImpl;
23
24 /**
25 * @author a.mueller
26 *
27 */
28 public class CdmApplicationController {
29 private static final Logger logger = Logger.getLogger(CdmApplicationController.class);
30
31 private ClassPathXmlApplicationContext applicationContext;
32 private INameService nameService;
33 private IAgentService agentService;
34 private Server hsqldbServer;
35
36
37 /* Constructor */
38 public CdmApplicationController() {
39 //logger.info("Start HSQLDB Server");
40 //startHsqldbServer();
41 logger.warn("Start CdmApplicationController");
42 String fileName = "editCdm.spring.cfg.xml";
43 setApplicationContext(new ClassPathXmlApplicationContext(fileName));
44 Object sf = (Object)applicationContext.containsBean("sessionFactory");
45 SessionFactory sf1 = (SessionFactory)applicationContext.getBean("sessionFactory");
46
47 //TODO find out if DataSource is localHsqldb,
48 //if yes then find out if Server is running
49 //if not running, start server
50 }
51
52 public void finalize(){
53 close();
54 }
55
56 public void close(){
57 if (applicationContext != null)
58 logger.info("Close ApplicationContext");
59 applicationContext.close();
60 }
61
62
63 public void setApplicationContext(ClassPathXmlApplicationContext appCtx){
64 applicationContext = appCtx;
65 applicationContext.registerShutdownHook();
66 setServices();
67 }
68
69 private void setServices(){
70 //TODO ? also possible via SPRING?
71 nameService = (INameService)applicationContext.getBean("nameService");
72 agentService = (IAgentService)applicationContext.getBean("agentService");
73 }
74
75 /* Services */
76 public final INameService getNameService(){
77 return nameService;
78 }
79
80 public final IAgentService getAgentService(){
81 return agentService;
82 }
83
84
85 }