Mercurial > dive4elements > river
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 |