Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/services/DischargeInfoService.java @ 6839:fe03337c8011
(issue1353) Add river name handling
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Thu, 15 Aug 2013 16:05:17 +0200 |
parents | af13ceeba52a |
children | e4606eae8ea5 |
comparison
equal
deleted
inserted
replaced
6838:a895eb07a7dc | 6839:fe03337c8011 |
---|---|
38 /** The logger used in this service. */ | 38 /** The logger used in this service. */ |
39 private static Logger logger = Logger.getLogger(DischargeInfoService.class); | 39 private static Logger logger = Logger.getLogger(DischargeInfoService.class); |
40 | 40 |
41 public static final String GAUGE_XPATH = "/art:gauge/text()"; | 41 public static final String GAUGE_XPATH = "/art:gauge/text()"; |
42 | 42 |
43 public static final String RIVER_NAME_XPATH = "/art:gauge/art:river/text()"; | |
44 | |
43 public DischargeInfoService() { | 45 public DischargeInfoService() { |
44 } | 46 } |
45 | 47 |
46 | 48 |
47 @Override | 49 @Override |
56 } | 58 } |
57 | 59 |
58 String gaugeNumber = XMLUtils.xpathString( | 60 String gaugeNumber = XMLUtils.xpathString( |
59 data, GAUGE_XPATH, ArtifactNamespaceContext.INSTANCE); | 61 data, GAUGE_XPATH, ArtifactNamespaceContext.INSTANCE); |
60 | 62 |
63 String river = XMLUtils.xpathString( | |
64 data, RIVER_NAME_XPATH, ArtifactNamespaceContext.INSTANCE); | |
65 | |
61 if (gaugeNumber == null || | 66 if (gaugeNumber == null || |
62 (gaugeNumber = gaugeNumber.trim()).length() == 0) { | 67 (gaugeNumber = gaugeNumber.trim()).length() == 0) { |
63 logger.warn("No gauge specified. Cannot return discharge info."); | 68 logger.warn("No gauge specified. Cannot return discharge info."); |
64 return XMLUtils.newDocument(); | 69 return XMLUtils.newDocument(); |
65 } | 70 } |
66 | 71 |
67 logger.debug("Getting discharge for gauge: " + gaugeNumber); | 72 logger.debug("Getting discharge for gauge: " + gaugeNumber + " at river: " + river); |
68 | 73 |
69 long gn; | 74 long gn; |
70 try { | 75 try { |
71 gn = Long.parseLong(gaugeNumber); | 76 gn = Long.parseLong(gaugeNumber); |
72 } | 77 } |
73 catch (NumberFormatException nfe) { | 78 catch (NumberFormatException nfe) { |
74 logger.warn("Invalid gauge number. Cannot return discharg info."); | 79 logger.warn("Invalid gauge number. Cannot return discharge info."); |
75 return XMLUtils.newDocument(); | 80 return XMLUtils.newDocument(); |
76 } | 81 } |
77 | 82 |
78 Gauge gauge = Gauge.getGaugeByOfficialNumber(gn); | 83 Gauge gauge; |
84 if (river == null || river.isEmpty()) { | |
85 gauge = Gauge.getGaugeByOfficialNumber(gn); | |
86 } else { | |
87 gauge = Gauge.getGaugeByOfficialNumber(gn, river); | |
88 } | |
89 | |
79 if (gauge == null) { | 90 if (gauge == null) { |
80 logger.warn("No such gauge found."); | 91 logger.warn("No such gauge found."); |
81 return XMLUtils.newDocument(); | 92 return XMLUtils.newDocument(); |
82 } | 93 } |
83 | 94 |
84 logger.debug("Found gauge: " + gauge.getName()); | 95 logger.debug("Found gauge: " + gauge.getName() + " id: " + gauge.getId()); |
85 | 96 |
86 return buildDocument(gauge); | 97 return buildDocument(gauge); |
87 } | 98 } |
88 | 99 |
89 | 100 |