Mercurial > dive4elements > river
comparison backend/src/main/java/org/dive4elements/river/importer/ImportHYK.java @ 8986:392bbcd8a88b
Database inserts accelerated by suppressing unnecessary database queries for new data series
author | mschaefer |
---|---|
date | Sun, 08 Apr 2018 18:07:06 +0200 |
parents | 4c3ccf2b0304 |
children |
comparison
equal
deleted
inserted
replaced
8985:27851cfda84a | 8986:392bbcd8a88b |
---|---|
6 * documentation coming with Dive4Elements River for details. | 6 * documentation coming with Dive4Elements River for details. |
7 */ | 7 */ |
8 | 8 |
9 package org.dive4elements.river.importer; | 9 package org.dive4elements.river.importer; |
10 | 10 |
11 import java.util.ArrayList; | |
12 import java.util.List; | |
13 | |
14 import org.apache.log4j.Logger; | |
15 import org.dive4elements.river.importer.common.StoreMode; | |
11 import org.dive4elements.river.model.HYK; | 16 import org.dive4elements.river.model.HYK; |
12 import org.dive4elements.river.model.River; | 17 import org.dive4elements.river.model.River; |
13 | 18 import org.hibernate.Query; |
14 import java.util.List; | |
15 import java.util.ArrayList; | |
16 | |
17 import org.hibernate.Session; | 19 import org.hibernate.Session; |
18 import org.hibernate.Query; | |
19 | |
20 import org.apache.log4j.Logger; | |
21 | 20 |
22 public class ImportHYK | 21 public class ImportHYK |
23 { | 22 { |
24 private static Logger log = Logger.getLogger(ImportHYK.class); | 23 private static Logger log = Logger.getLogger(ImportHYK.class); |
25 | 24 |
26 protected ImportRiver river; | 25 protected ImportRiver river; |
27 protected String description; | 26 protected String description; |
28 | 27 |
29 protected List<ImportHYKEntry> entries; | 28 protected List<ImportHYKEntry> entries; |
30 | 29 |
30 protected StoreMode storeMode; | |
31 | |
31 protected HYK peer; | 32 protected HYK peer; |
32 | 33 |
33 public ImportHYK() { | 34 public ImportHYK() { |
34 entries = new ArrayList<ImportHYKEntry>(); | 35 this.entries = new ArrayList<>(); |
36 this.storeMode = StoreMode.NONE; | |
35 } | 37 } |
36 | 38 |
37 public ImportHYK(ImportRiver river, String description) { | 39 public ImportHYK(final ImportRiver river, final String description) { |
38 this(); | 40 this(); |
39 this.river = river; | 41 this.river = river; |
40 this.description = description; | 42 this.description = description; |
41 } | 43 } |
42 | 44 |
43 public ImportRiver getRiver() { | 45 public ImportRiver getRiver() { |
44 return river; | 46 return this.river; |
45 } | 47 } |
46 | 48 |
47 public void setRiver(ImportRiver river) { | 49 public void setRiver(final ImportRiver river) { |
48 this.river = river; | 50 this.river = river; |
49 } | 51 } |
50 | 52 |
51 public void addEntry(ImportHYKEntry entry) { | 53 public void addEntry(final ImportHYKEntry entry) { |
52 entries.add(entry); | 54 this.entries.add(entry); |
53 entry.setHYK(this); | 55 entry.setHYK(this); |
54 } | 56 } |
55 | 57 |
56 public void storeDependencies() { | 58 public void storeDependencies() { |
57 log.info("store HYK '" + description + "'"); | 59 log.info("store HYK '" + this.description + "'"); |
58 getPeer(); | 60 getPeer(); |
59 for (int i = 0, N = entries.size(); i < N; ++i) { | 61 for (int i = 0, N = this.entries.size(); i < N; ++i) { |
60 ImportHYKEntry entry = entries.get(i); | 62 final ImportHYKEntry entry = this.entries.get(i); |
61 log.info(" store km " + entry.getKm() + | 63 log.info(" store km " + entry.getKm() + |
62 " (" + (i+1) + " of " + N + ")"); | 64 " (" + (i+1) + " of " + N + ")"); |
63 entry.storeDependencies(); | 65 entry.storeDependencies(); |
64 } | 66 } |
65 } | 67 } |
66 | 68 |
67 public HYK getPeer() { | 69 public HYK getPeer() { |
68 if (peer == null) { | 70 if (this.peer == null) { |
69 River r = river.getPeer(); | 71 final River r = this.river.getPeer(); |
70 Session session = ImporterSession.getInstance() | 72 final Session session = ImporterSession.getInstance() |
71 .getDatabaseSession(); | 73 .getDatabaseSession(); |
72 Query query = session.createQuery( | 74 final Query query = session.createQuery( |
73 "from HYK where river=:river and description=:description"); | 75 "from HYK where river=:river and description=:description"); |
74 query.setParameter("river", r); | 76 query.setParameter("river", r); |
75 query.setParameter("description", description); | 77 query.setParameter("description", this.description); |
76 List<HYK> hyks = query.list(); | 78 final List<HYK> hyks = query.list(); |
77 if (hyks.isEmpty()) { | 79 if (hyks.isEmpty()) { |
78 peer = new HYK(r, description); | 80 this.peer = new HYK(r, this.description); |
79 session.save(peer); | 81 session.save(this.peer); |
82 this.storeMode = StoreMode.INSERT; | |
80 } | 83 } |
81 else { | 84 else { |
82 peer = hyks.get(0); | 85 this.peer = hyks.get(0); |
86 this.storeMode = StoreMode.UPDATE; | |
83 } | 87 } |
84 } | 88 } |
85 return peer; | 89 return this.peer; |
86 } | 90 } |
87 } | 91 } |
88 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 92 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |