comparison flys-backend/src/main/java/de/intevation/flys/importer/Importer.java @ 497:67fd63e4ef66

Importer: centralized caching flys-backend/trunk@1851 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 08 May 2011 15:29:45 +0000
parents ed38839a6b08
children 763c4137d6e1
comparison
equal deleted inserted replaced
496:4f2d8980415f 497:67fd63e4ef66
7 7
8 import java.sql.SQLException; 8 import java.sql.SQLException;
9 9
10 import org.apache.log4j.Logger; 10 import org.apache.log4j.Logger;
11 11
12 import org.hibernate.SessionFactory;
13 import org.hibernate.Session;
14 import org.hibernate.Transaction; 12 import org.hibernate.Transaction;
15 import org.hibernate.HibernateException; 13 import org.hibernate.HibernateException;
16
17 import de.intevation.flys.backend.SessionFactoryProvider;
18 14
19 public class Importer 15 public class Importer
20 { 16 {
21 private static Logger log = Logger.getLogger(Importer.class); 17 private static Logger log = Logger.getLogger(Importer.class);
22 18
23 public static final boolean DRY_RUN = 19 public static final boolean DRY_RUN =
24 Boolean.getBoolean("flys.backend.importer.dry.run"); 20 Boolean.getBoolean("flys.backend.importer.dry.run");
25
26 public static final ThreadLocal<Session> sessionHolder =
27 new ThreadLocal<Session>();
28 21
29 protected List<ImportRiver> rivers; 22 protected List<ImportRiver> rivers;
30 23
31 public Importer() { 24 public Importer() {
32 } 25 }
44 } 37 }
45 38
46 public void writeRivers() { 39 public void writeRivers() {
47 log.debug("write rivers started"); 40 log.debug("write rivers started");
48 41
49 Session session = sessionHolder.get();
50
51 for (ImportRiver river: rivers) { 42 for (ImportRiver river: rivers) {
52 log.debug("writing river '" + river.getName() + "'"); 43 log.debug("writing river '" + river.getName() + "'");
53 river.storeDependencies(); 44 river.storeDependencies();
54 session.flush(); 45 ImporterSession.getInstance().getDatabaseSession().flush();
55 } 46 }
56 47
57 log.debug("write rivers finished"); 48 log.debug("write rivers finished");
58 } 49 }
59 50
60 public void writeToDatabase() { 51 public void writeToDatabase() {
61 SessionFactory sessionFactory =
62 SessionFactoryProvider.createSessionFactory();
63
64 Session session = sessionFactory.openSession();
65
66 sessionHolder.set(session);
67 52
68 Transaction tx = null; 53 Transaction tx = null;
69 54
70 try { 55 try {
71 tx = session.beginTransaction(); 56 tx = ImporterSession.getInstance()
57 .getDatabaseSession().beginTransaction();
72 58
73 try { 59 try {
74 writeRivers(); 60 writeRivers();
75 } 61 }
76 catch (HibernateException he) { 62 catch (HibernateException he) {
88 catch (RuntimeException re) { 74 catch (RuntimeException re) {
89 if (tx != null) { 75 if (tx != null) {
90 tx.rollback(); 76 tx.rollback();
91 } 77 }
92 throw re; 78 throw re;
93 }
94 finally {
95 session.close();
96 sessionHolder.remove();
97 } 79 }
98 } 80 }
99 81
100 public static void main(String [] args) { 82 public static void main(String [] args) {
101 83

http://dive4elements.wald.intevation.org