Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/tkhstate/DefaultBedHeights.java @ 9129:28eec75415d8
Handle case where no default bedheights are defined for a given river
author | gernotbelger |
---|---|
date | Wed, 06 Jun 2018 14:15:58 +0200 |
parents | 82917e414d76 |
children | 2f5052835b76 |
comparison
equal
deleted
inserted
replaced
9128:99c6bf20bd92 | 9129:28eec75415d8 |
---|---|
45 | 45 |
46 public List<BedHeight> getBedHeights(final Calculation problems) { | 46 public List<BedHeight> getBedHeights(final Calculation problems) { |
47 final Collection<String> bedHeightNames = loadBedHeightDefaultsForRiver(this.river, problems); | 47 final Collection<String> bedHeightNames = loadBedHeightDefaultsForRiver(this.river, problems); |
48 | 48 |
49 final List<BedHeight> defaultBedHeights = loadBedHeightsByName(this.river, bedHeightNames, problems); | 49 final List<BedHeight> defaultBedHeights = loadBedHeightsByName(this.river, bedHeightNames, problems); |
50 if (defaultBedHeights.isEmpty()) { | |
51 problems.addProblem("sinfo.bedheightsfinder.nobedheightsforriver", this.river.getName()); | |
52 return Collections.emptyList(); | |
53 } | |
54 | |
55 /* check for overlapping ranges, N2-search, but we expect only have small numbers of bed heights */ | |
56 final List<BedHeight> result = new ArrayList<>(defaultBedHeights.size()); | |
57 | |
58 for (int i = 0; i < defaultBedHeights.size(); i++) { | |
59 final BedHeight bedHeight = defaultBedHeights.get(i); | |
60 | |
61 final Range range = bedHeight.getRange(); | |
62 final NumberRange bedRange = new NumberRange(range.getA(), range.getB()); | |
63 | |
64 if (overlapsRange(bedRange, defaultBedHeights, i + 1)) { | |
65 problems.addProblem("sinfo.bedheightsfinder.overlappingrange", bedHeight.getDescription()); | |
66 } else | |
67 result.add(bedHeight); | |
68 } | |
50 | 69 |
51 final List<BedHeight> validBedHeights = new ArrayList<>(defaultBedHeights.size()); | 70 final List<BedHeight> validBedHeights = new ArrayList<>(defaultBedHeights.size()); |
52 | 71 |
53 // REMARK: check for bad ranges because db schema allow for incomplete ranges, and ignore if this is the case | 72 // REMARK: check for bad ranges because db schema allow for incomplete ranges, and ignore if this is the case |
54 for (final BedHeight bedHeight : defaultBedHeights) { | 73 for (final BedHeight bedHeight : defaultBedHeights) { |
57 | 76 |
58 if (range.getA() == null || range.getB() == null) | 77 if (range.getA() == null || range.getB() == null) |
59 problems.addProblem("sinfo.bedheightsfinder.badrange", bedHeight.getDescription()); | 78 problems.addProblem("sinfo.bedheightsfinder.badrange", bedHeight.getDescription()); |
60 else | 79 else |
61 validBedHeights.add(bedHeight); | 80 validBedHeights.add(bedHeight); |
62 } | |
63 | |
64 /* check for overlapping ranges, N2-search, but we expect only have small numbers of bed heights */ | |
65 final List<BedHeight> result = new ArrayList<>(defaultBedHeights.size()); | |
66 | |
67 for (int i = 0; i < defaultBedHeights.size(); i++) { | |
68 final BedHeight bedHeight = validBedHeights.get(i); | |
69 | |
70 final Range range = bedHeight.getRange(); | |
71 final NumberRange bedRange = new NumberRange(range.getA(), range.getB()); | |
72 | |
73 if (overlapsRange(bedRange, validBedHeights, i + 1)) { | |
74 problems.addProblem("sinfo.bedheightsfinder.overlappingrange", bedHeight.getDescription()); | |
75 } else | |
76 result.add(bedHeight); | |
77 } | 81 } |
78 | 82 |
79 return result; | 83 return result; |
80 } | 84 } |
81 | 85 |