comparison artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadFactory.java @ 6964:5a348e3df0f8

SedimentLoadFactory: Extracted method to find range of matching measurement station.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Thu, 05 Sep 2013 15:23:54 +0200
parents d4108d6c4000
children 69bf96202df4
comparison
equal deleted inserted replaced
6963:aa1d681ee6eb 6964:5a348e3df0f8
484 return load; 484 return load;
485 } 485 }
486 return new SedimentLoad(); 486 return new SedimentLoad();
487 } 487 }
488 488
489 protected static Range findMeasurementStationRange(
490 TreeMap<Double, MeasurementStation> stations,
491 double km
492 ) {
493 MeasurementStation station = stations.get(km);
494 MeasurementStation nextStation = null;
495 if (stations.ceilingEntry(km + 0.1d) != null) {
496 nextStation = stations.ceilingEntry(km + 0.1d).getValue();
497 }
498 Range range = null;
499 if (station == null) {
500 return null;
501 }
502 else {
503 if (nextStation != null)
504 range = new Range(station.getRange().getA().doubleValue(),
505 nextStation.getRange().getA().doubleValue());
506 else {
507 // TODO end-of-river instead of B.
508 range = new Range(station.getRange().getA().doubleValue(),
509 station.getRange().getB().doubleValue());
510 }
511 }
512 return range;
513 }
489 514
490 /** 515 /**
491 * Run query with grain parameter set to fraction, feed result into 516 * Run query with grain parameter set to fraction, feed result into
492 * load. Create load if null. 517 * load. Create load if null.
493 * 518 *
518 } 543 }
519 544
520 for (int i = 0; i < results.size(); i++) { 545 for (int i = 0; i < results.size(); i++) {
521 Object[] row = results.get(i); 546 Object[] row = results.get(i);
522 double km = (Double)row[3]; 547 double km = (Double)row[3];
523 MeasurementStation station = stations.get(km); 548 Range range = findMeasurementStationRange(stations, km);
524 MeasurementStation nextStation = null; 549 if (range == null) {
525 if (stations.ceilingEntry(km + 0.1d) != null) {
526 nextStation = stations.ceilingEntry(km + 0.1d).getValue();
527 }
528 Range range = null;
529 if (station == null) {
530 log.warn("No measurement station for " + fraction + " km " + km); 550 log.warn("No measurement station for " + fraction + " km " + km);
531 continue; 551 continue;
532 }
533 else {
534 if (nextStation != null)
535 range = new Range(station.getRange().getA().doubleValue(),
536 nextStation.getRange().getA().doubleValue());
537 else {
538 // TODO end-of-river instead of B.
539 range = new Range(station.getRange().getA().doubleValue(),
540 station.getRange().getB().doubleValue());
541 }
542 } 552 }
543 double v = -1; 553 double v = -1;
544 if (row[2] != null) { 554 if (row[2] != null) {
545 v = ((Double)row[2]).doubleValue(); 555 v = ((Double)row[2]).doubleValue();
546 } 556 }

http://dive4elements.wald.intevation.org