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 }

http://dive4elements.wald.intevation.org