comparison flys-backend/src/main/java/de/intevation/flys/importer/ImportWaterlevelDifference.java @ 3943:a5b003595d6c

Store minfo values into database only if their peer has been successfully stored. flys-backend/trunk@5520 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Wed, 19 Sep 2012 10:05:36 +0000
parents 0d27d02b1208
children 8320427ecd5c
comparison
equal deleted inserted replaced
3942:43aa1ac8614b 3943:a5b003595d6c
15 import de.intevation.flys.model.WaterlevelDifference; 15 import de.intevation.flys.model.WaterlevelDifference;
16 16
17 17
18 public class ImportWaterlevelDifference { 18 public class ImportWaterlevelDifference {
19 19
20 private static final Logger log = 20 private static final Logger log = Logger
21 Logger.getLogger(ImportWaterlevelDifference.class); 21 .getLogger(ImportWaterlevelDifference.class);
22
23 22
24 private ImportUnit unit; 23 private ImportUnit unit;
25 24
26 private String description; 25 private String description;
27 26
28 private List<ImportWaterlevelDifferenceColumn> columns; 27 private List<ImportWaterlevelDifferenceColumn> columns;
29 28
30 private WaterlevelDifference peer; 29 private WaterlevelDifference peer;
31 30
32
33 public ImportWaterlevelDifference(String description) { 31 public ImportWaterlevelDifference(String description) {
34 this.columns = new ArrayList<ImportWaterlevelDifferenceColumn>(); 32 this.columns = new ArrayList<ImportWaterlevelDifferenceColumn>();
35 33
36 this.description = description; 34 this.description = description;
37 } 35 }
38 36
39
40 public void setUnit(ImportUnit unit) { 37 public void setUnit(ImportUnit unit) {
41 this.unit = unit; 38 this.unit = unit;
42 } 39 }
43
44 40
45 public void addValue(ImportWaterlevelDifferenceColumn column) { 41 public void addValue(ImportWaterlevelDifferenceColumn column) {
46 this.columns.add(column); 42 this.columns.add(column);
47 } 43 }
48 44
49 45 public void storeDependencies(River river) throws SQLException,
50 public void storeDependencies(River river) 46 ConstraintViolationException {
51 throws SQLException, ConstraintViolationException
52 {
53 log.info("store dependencies"); 47 log.info("store dependencies");
54 48
55 WaterlevelDifference peer = getPeer(river); 49 WaterlevelDifference peer = getPeer(river);
56 50
57 int i = 0; 51 if (peer != null) {
52 int i = 0;
58 53
59 for (ImportWaterlevelDifferenceColumn column: columns) { 54 for (ImportWaterlevelDifferenceColumn column : columns) {
60 column.storeDependencies(peer); 55 column.storeDependencies(peer);
61 i++; 56 i++;
57 }
58
59 log.info("stored " + i + " waterlevel difference columns");
62 } 60 }
63
64 log.info("stored " + i + " waterlevel difference columns");
65 } 61 }
66
67 62
68 public WaterlevelDifference getPeer(River river) { 63 public WaterlevelDifference getPeer(River river) {
69 Unit u = unit != null ? unit.getPeer() : null; 64 Unit u = unit != null ? unit.getPeer() : null;
70 if (u == null) { 65 if (u == null) {
71 log.warn("IWD: skip invalid waterlevel difference - no unit set!"); 66 log.warn("IWD: skip invalid waterlevel difference - no unit set!");
72 return null; 67 return null;
73 } 68 }
74 69
75 if (peer == null) { 70 if (peer == null) {
76 Session session = ImporterSession.getInstance().getDatabaseSession(); 71 Session session = ImporterSession.getInstance()
77 Query query = session.createQuery( 72 .getDatabaseSession();
78 "from WaterlevelDifference where " + 73 Query query = session
79 " river=:river and " + 74 .createQuery("from WaterlevelDifference where "
80 " unit=:unit and " + 75 + " river=:river and " + " unit=:unit and "
81 " description=:description" 76 + " description=:description");
82 );
83 77
84 query.setParameter("river", river); 78 query.setParameter("river", river);
85 query.setParameter("unit", u); 79 query.setParameter("unit", u);
86 query.setParameter("description", description); 80 query.setParameter("description", description);
87 81

http://dive4elements.wald.intevation.org