annotate flys-backend/src/main/java/de/intevation/flys/importer/ImportWstColumnValue.java @ 478:db430bd9e0e0

Implemented a WstColumnValue cache to speed up inserting WST files into database. flys-backend/trunk@1734 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 20 Apr 2011 07:21:03 +0000
parents 29a408f80a89
children 67fd63e4ef66
rev   line source
196
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.importer;
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 import de.intevation.flys.model.WstColumnValue;
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
4 import de.intevation.flys.model.WstColumn;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
5 import de.intevation.flys.model.River;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
6
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
7 import java.math.BigDecimal;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
8
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
9 import org.apache.log4j.Logger;
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
10
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
11 import org.hibernate.Session;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
12
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
13 import java.util.Map;
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
14
196
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 public class ImportWstColumnValue
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
17 {
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
18 protected Logger logger = Logger.getLogger(ImportWstColumnValue.class);
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
19
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
20 protected BigDecimal position;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
21 protected BigDecimal w;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
22 protected ImportWstColumn wstColumn;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
23
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
24 protected Map<WstColumnValueKey, WstColumnValue> cache;
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
25
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
26 protected WstColumnValue peer;
196
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
27
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 public ImportWstColumnValue() {
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29 }
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
30
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
31 public ImportWstColumnValue(
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
32 ImportWstColumn wstColumn,
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
33 BigDecimal position,
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
34 BigDecimal w,
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
35 Map<WstColumnValueKey, WstColumnValue> cache
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
36 ) {
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
37 this.wstColumn = wstColumn;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
38 this.position = position;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
39 this.w = w;
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
40 this.cache = cache;
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
41 }
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
42
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
43 public BigDecimal getPosition() {
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
44 return position;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
45 }
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
46
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
47 public void setPosition(BigDecimal position) {
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
48 this.position = position;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
49 }
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
50
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
51 public BigDecimal getW() {
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
52 return w;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
53 }
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
54
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
55 public void setW(BigDecimal w) {
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
56 this.w = w;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
57 }
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
58
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
59 public ImportWstColumn getWstColumn() {
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
60 return wstColumn;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
61 }
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
62
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
63 public void setWstColumn(ImportWstColumn wstColumn) {
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
64 this.wstColumn = wstColumn;
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
65 }
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
66
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
67 public WstColumnValue getPeer(River river) {
196
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68 if (peer == null) {
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
69 WstColumn c = wstColumn.getPeer(river);
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
70
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
71 // check the cache before we fire a db query
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
72 WstColumnValue value = cache.get(new WstColumnValueKey(
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
73 c.getId(),
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
74 position.doubleValue(),
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
75 w.doubleValue()));
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
76
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
77 if (value != null) {
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
78 peer = value;
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
79 return peer;
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
80 }
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
81
202
29a408f80a89 Finished import of WSTs.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 196
diff changeset
82 Session session = Importer.sessionHolder.get();
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
83 peer = new WstColumnValue(c, position, w);
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
84 session.save(peer);
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
85
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
86 cache.put(new WstColumnValueKey(peer), peer);
196
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
87 }
478
db430bd9e0e0 Implemented a WstColumnValue cache to speed up inserting WST files into database.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 202
diff changeset
88
196
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
89 return peer;
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90 }
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
91 }
a33c065b95eb Added importer helper model stubs for WST imports.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org