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

http://dive4elements.wald.intevation.org