Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/importer/ImporterSession.java @ 1227:cdb35d96ca09
Importer session: Make use of the LRU cache from artifacts common.
flys-backend/trunk@2415 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 28 Jul 2011 14:12:33 +0000 |
parents | bcc18293a547 |
children |
comparison
equal
deleted
inserted
replaced
1226:1dbafbba50ea | 1227:cdb35d96ca09 |
---|---|
1 package de.intevation.flys.importer; | 1 package de.intevation.flys.importer; |
2 | 2 |
3 import java.util.Iterator; | 3 import java.util.Iterator; |
4 import java.util.Map; | 4 import java.util.Map; |
5 import java.util.TreeMap; | 5 import java.util.TreeMap; |
6 import java.util.LinkedHashMap; | |
7 | 6 |
8 import java.math.BigDecimal; | 7 import java.math.BigDecimal; |
9 | 8 |
10 import org.hibernate.SessionFactory; | 9 import org.hibernate.SessionFactory; |
11 import org.hibernate.Session; | 10 import org.hibernate.Session; |
21 import de.intevation.flys.model.Range; | 20 import de.intevation.flys.model.Range; |
22 import de.intevation.flys.model.River; | 21 import de.intevation.flys.model.River; |
23 | 22 |
24 import org.apache.log4j.Logger; | 23 import org.apache.log4j.Logger; |
25 | 24 |
25 import de.intevation.artifacts.common.utils.LRUCache; | |
26 | |
26 public class ImporterSession | 27 public class ImporterSession |
27 { | 28 { |
28 private static Logger log = Logger.getLogger(ImporterSession.class); | 29 private static Logger log = Logger.getLogger(ImporterSession.class); |
29 | |
30 public static final int CACHE_SIZE = 25; | |
31 | |
32 public static class Cache<K, V> extends LinkedHashMap<K, V> { | |
33 @Override | |
34 protected boolean removeEldestEntry(Map.Entry<K, V> eldest) { | |
35 return size() > CACHE_SIZE; | |
36 } | |
37 }; | |
38 | 30 |
39 private static final ThreadLocal<ImporterSession> SESSION = | 31 private static final ThreadLocal<ImporterSession> SESSION = |
40 new ThreadLocal<ImporterSession>() { | 32 new ThreadLocal<ImporterSession>() { |
41 @Override | 33 @Override |
42 protected ImporterSession initialValue() { | 34 protected ImporterSession initialValue() { |
44 } | 36 } |
45 }; | 37 }; |
46 | 38 |
47 protected Session databaseSession; | 39 protected Session databaseSession; |
48 | 40 |
49 protected Cache<Integer, Map<ValueKey, WstColumnValue>> | 41 protected LRUCache<Integer, Map<ValueKey, WstColumnValue>> |
50 wstColumnValues; | 42 wstColumnValues; |
51 | 43 |
52 protected Cache<Integer, Map<ValueKey, DischargeTableValue>> | 44 protected LRUCache<Integer, Map<ValueKey, DischargeTableValue>> |
53 dischargeTableValues; | 45 dischargeTableValues; |
54 | 46 |
55 protected Cache<Integer, Map<ValueKey, Range>> | 47 protected LRUCache<Integer, Map<ValueKey, Range>> |
56 ranges; | 48 ranges; |
57 | 49 |
58 public static ImporterSession getInstance() { | 50 public static ImporterSession getInstance() { |
59 return SESSION.get(); | 51 return SESSION.get(); |
60 } | 52 } |
64 SessionFactoryProvider.createSessionFactory(); | 56 SessionFactoryProvider.createSessionFactory(); |
65 databaseSession = sessionFactory.openSession(); | 57 databaseSession = sessionFactory.openSession(); |
66 //databaseSession.setFlushMode(FlushMode.MANUAL); | 58 //databaseSession.setFlushMode(FlushMode.MANUAL); |
67 | 59 |
68 wstColumnValues = | 60 wstColumnValues = |
69 new Cache<Integer, Map<ValueKey, WstColumnValue>>(); | 61 new LRUCache<Integer, Map<ValueKey, WstColumnValue>>(); |
70 | 62 |
71 dischargeTableValues = | 63 dischargeTableValues = |
72 new Cache<Integer, Map<ValueKey, DischargeTableValue>>(); | 64 new LRUCache<Integer, Map<ValueKey, DischargeTableValue>>(); |
73 | 65 |
74 ranges = new Cache<Integer, Map<ValueKey, Range>>(); | 66 ranges = new LRUCache<Integer, Map<ValueKey, Range>>(); |
75 } | 67 } |
76 | 68 |
77 public Session getDatabaseSession() { | 69 public Session getDatabaseSession() { |
78 return databaseSession; | 70 return databaseSession; |
79 } | 71 } |