Mercurial > dive4elements > river
comparison flys-backend/src/main/java/de/intevation/flys/importer/ImporterSession.java @ 498:8ab04de0b879
Importer: Cache the discharge table values, too.
flys-backend/trunk@1852 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 08 May 2011 17:55:49 +0000 |
parents | 67fd63e4ef66 |
children | cce054f27dac |
comparison
equal
deleted
inserted
replaced
497:67fd63e4ef66 | 498:8ab04de0b879 |
---|---|
12 | 12 |
13 import de.intevation.flys.backend.SessionFactoryProvider; | 13 import de.intevation.flys.backend.SessionFactoryProvider; |
14 | 14 |
15 import de.intevation.flys.model.WstColumnValue; | 15 import de.intevation.flys.model.WstColumnValue; |
16 import de.intevation.flys.model.WstColumn; | 16 import de.intevation.flys.model.WstColumn; |
17 import de.intevation.flys.model.DischargeTableValue; | |
18 import de.intevation.flys.model.DischargeTable; | |
17 | 19 |
18 public class ImporterSession | 20 public class ImporterSession |
19 { | 21 { |
20 private static final ThreadLocal<ImporterSession> SESSION = | 22 private static final ThreadLocal<ImporterSession> SESSION = |
21 new ThreadLocal<ImporterSession>() { | 23 new ThreadLocal<ImporterSession>() { |
25 } | 27 } |
26 }; | 28 }; |
27 | 29 |
28 protected Session databaseSession; | 30 protected Session databaseSession; |
29 | 31 |
30 protected Map<WstColumnValueKey, WstColumnValue> wstColumnValues; | 32 protected Map<IdValueKey, WstColumnValue> wstColumnValues; |
33 | |
34 protected Map<IdValueKey, DischargeTableValue> dischargeTableValues; | |
31 | 35 |
32 public static ImporterSession getInstance() { | 36 public static ImporterSession getInstance() { |
33 return SESSION.get(); | 37 return SESSION.get(); |
34 } | 38 } |
35 | 39 |
50 ) { | 54 ) { |
51 if (wstColumnValues == null) { | 55 if (wstColumnValues == null) { |
52 loadWstColumnValues(); | 56 loadWstColumnValues(); |
53 } | 57 } |
54 | 58 |
55 WstColumnValueKey key = new WstColumnValueKey( | 59 IdValueKey key = new IdValueKey( |
56 column.getId(), | 60 column.getId(), |
57 position.doubleValue(), | 61 position.doubleValue(), |
58 w.doubleValue()); | 62 w.doubleValue()); |
59 | 63 |
60 WstColumnValue wcv = wstColumnValues.get(key); | 64 WstColumnValue wcv = wstColumnValues.get(key); |
71 | 75 |
72 return wcv; | 76 return wcv; |
73 } | 77 } |
74 | 78 |
75 protected void loadWstColumnValues() { | 79 protected void loadWstColumnValues() { |
76 wstColumnValues = new HashMap<WstColumnValueKey, WstColumnValue>(); | 80 wstColumnValues = new HashMap<IdValueKey, WstColumnValue>(); |
77 | 81 |
78 Query query = databaseSession.createQuery("from WstColumnValue"); | 82 Query query = databaseSession.createQuery("from WstColumnValue"); |
79 | 83 |
80 for (Iterator iter = query.iterate(); iter.hasNext();) { | 84 for (Iterator iter = query.iterate(); iter.hasNext();) { |
81 WstColumnValue wcv = (WstColumnValue)iter.next(); | 85 WstColumnValue wcv = (WstColumnValue)iter.next(); |
82 wstColumnValues.put(new WstColumnValueKey(wcv), wcv); | 86 wstColumnValues.put(new IdValueKey(wcv), wcv); |
87 } | |
88 } | |
89 | |
90 public DischargeTableValue getDischargeTableValue( | |
91 DischargeTable table, | |
92 BigDecimal q, | |
93 BigDecimal w | |
94 ) { | |
95 if (dischargeTableValues == null) { | |
96 loadDischargeTableValues(); | |
97 } | |
98 | |
99 IdValueKey key = new IdValueKey( | |
100 table.getId(), | |
101 q.doubleValue(), | |
102 w.doubleValue()); | |
103 | |
104 DischargeTableValue dtv = dischargeTableValues.get(key); | |
105 | |
106 if (dtv != null) { | |
107 return dtv; | |
108 } | |
109 | |
110 dtv = new DischargeTableValue(table, q, w); | |
111 | |
112 databaseSession.save(dtv); | |
113 | |
114 dischargeTableValues.put(key, dtv); | |
115 | |
116 return dtv; | |
117 } | |
118 | |
119 protected void loadDischargeTableValues() { | |
120 dischargeTableValues = new HashMap<IdValueKey, DischargeTableValue>(); | |
121 | |
122 Query query = databaseSession.createQuery("from DischargeTableValue"); | |
123 | |
124 for (Iterator iter = query.iterate(); iter.hasNext();) { | |
125 DischargeTableValue dtv = (DischargeTableValue)iter.next(); | |
126 dischargeTableValues.put(new IdValueKey(dtv), dtv); | |
83 } | 127 } |
84 } | 128 } |
85 } | 129 } |
86 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 130 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |