Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java @ 2565:72f77b2210c2
FixingsOverview: Added XSL transformation which directly converts the output of the fixings overview service into an HTML representation.
flys-artifacts/trunk@4091 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 21 Feb 2012 18:22:06 +0000 |
parents | 3f038d54bc87 |
children | 938e2f6c0c9a |
comparison
equal
deleted
inserted
replaced
2564:3f038d54bc87 | 2565:72f77b2210c2 |
---|---|
37 " id AS river_id," + | 37 " id AS river_id," + |
38 " km_up " + | 38 " km_up " + |
39 "FROM rivers " + | 39 "FROM rivers " + |
40 "WHERE" + | 40 "WHERE" + |
41 " name = :name"; | 41 " name = :name"; |
42 | |
43 public static final String SQL_RIVER_EXTENT = | |
44 "SELECT" + | |
45 " MIN(wcv.position) AS start_km," + | |
46 " MAX(wcv.position) AS end_km " + | |
47 "FROM wst_column_values wcv" + | |
48 " JOIN wst_columns wc ON wcv.wst_column_id = wc.id " + | |
49 " JOIN wsts w ON wc.wst_id = w.id " + | |
50 "WHERE" + | |
51 " w.kind = 0 AND w.river_id = :river_id"; | |
52 | 42 |
53 public static final String SQL_GAUGES = | 43 public static final String SQL_GAUGES = |
54 "SELECT" + | 44 "SELECT" + |
55 " g.id AS gauge_id," + | 45 " g.id AS gauge_id," + |
56 " r.a AS a," + | 46 " r.a AS a," + |
151 | 141 |
152 public boolean intersects(Range other) { | 142 public boolean intersects(Range other) { |
153 return !disjoint(other); | 143 return !disjoint(other); |
154 } | 144 } |
155 | 145 |
146 public void extend(Range other) { | |
147 if (other.start < start) start = other.start; | |
148 if (other.end > end ) end = other.end; | |
149 } | |
150 | |
156 public boolean clip(Range other) { | 151 public boolean clip(Range other) { |
157 if (disjoint(other)) return false; | 152 if (disjoint(other)) return false; |
158 | 153 |
159 if (other.start > start) start = other.start; | 154 if (other.start > start) start = other.start; |
160 if (other.end < end ) end = other.end; | 155 if (other.end < end ) end = other.end; |
537 for (Column column: columns) { | 532 for (Column column: columns) { |
538 column.loadKmRange(query); | 533 column.loadKmRange(query); |
539 } | 534 } |
540 } | 535 } |
541 | 536 |
537 public void adjustExtent(Range extent) { | |
538 for (Column column: columns) { | |
539 extent.extend(column); | |
540 } | |
541 } | |
542 | |
542 public void loadColumnsQRanges( | 543 public void loadColumnsQRanges( |
543 SQLQuery query, | 544 SQLQuery query, |
544 GaugeFinder gaugeFinder | 545 GaugeFinder gaugeFinder |
545 ) { | 546 ) { |
546 for (Column column: columns) { | 547 for (Column column: columns) { |
568 protected List<Fixing> fixings; | 569 protected List<Fixing> fixings; |
569 protected Range extent; | 570 protected Range extent; |
570 | 571 |
571 public FixingsOverview() { | 572 public FixingsOverview() { |
572 fixings = new ArrayList<Fixing>(); | 573 fixings = new ArrayList<Fixing>(); |
574 extent = new Range(Double.MAX_VALUE, -Double.MAX_VALUE); | |
573 } | 575 } |
574 | 576 |
575 public FixingsOverview(String riverName) { | 577 public FixingsOverview(String riverName) { |
576 this(); | 578 this(); |
577 this.riverName = riverName; | 579 this.riverName = riverName; |
593 | 595 |
594 Object [] row = list.get(0); | 596 Object [] row = list.get(0); |
595 | 597 |
596 riverId = (Integer)row[0]; | 598 riverId = (Integer)row[0]; |
597 isKmUp = (Boolean)row[1]; | 599 isKmUp = (Boolean)row[1]; |
598 | |
599 return true; | |
600 } | |
601 | |
602 protected boolean loadRiverExtent(Session session) { | |
603 SQLQuery query = session.createSQLQuery(SQL_RIVER_EXTENT) | |
604 .addScalar("start_km", StandardBasicTypes.DOUBLE) | |
605 .addScalar("end_km", StandardBasicTypes.DOUBLE); | |
606 | |
607 query.setInteger("river_id", riverId); | |
608 | |
609 List<Object []> list = query.list(); | |
610 | |
611 if (list.isEmpty()) { | |
612 log.warn("River " + riverId + " has no extent."); | |
613 return false; | |
614 } | |
615 | |
616 Object [] row = list.get(0); | |
617 extent = new Range((Double)row[0], (Double)row[1]); | |
618 | 600 |
619 return true; | 601 return true; |
620 } | 602 } |
621 | 603 |
622 protected GaugeFinder loadGauges(Session session) { | 604 protected GaugeFinder loadGauges(Session session) { |
703 for (Fixing fixing: fixings) { | 685 for (Fixing fixing: fixings) { |
704 fixing.loadColumnsQRanges(query, gaugeFinder); | 686 fixing.loadColumnsQRanges(query, gaugeFinder); |
705 } | 687 } |
706 } | 688 } |
707 | 689 |
690 protected void adjustExtent() { | |
691 for (Fixing fixing: fixings) { | |
692 fixing.adjustExtent(extent); | |
693 } | |
694 } | |
695 | |
708 public boolean load(Session session) { | 696 public boolean load(Session session) { |
709 | 697 |
710 if (!loadRiver(session) | 698 if (!loadRiver(session)) { |
711 || !loadRiverExtent(session)) { | |
712 return false; | 699 return false; |
713 } | 700 } |
714 | 701 |
715 GaugeFinder gaugeFinder = loadGauges(session); | 702 GaugeFinder gaugeFinder = loadGauges(session); |
716 | 703 |
720 } | 707 } |
721 | 708 |
722 loadFixings(session); | 709 loadFixings(session); |
723 loadFixingsColumns(session); | 710 loadFixingsColumns(session); |
724 loadFixingsColumnsKmRange(session); | 711 loadFixingsColumnsKmRange(session); |
712 | |
713 adjustExtent(); | |
714 | |
725 loadFixingsColumnsQRanges(session, gaugeFinder); | 715 loadFixingsColumnsQRanges(session, gaugeFinder); |
726 | 716 |
727 return true; | 717 return true; |
728 } | 718 } |
729 | 719 |
881 Element riverElement = document.createElement("river"); | 871 Element riverElement = document.createElement("river"); |
882 | 872 |
883 riverElement.setAttribute("from", String.valueOf(extent.start)); | 873 riverElement.setAttribute("from", String.valueOf(extent.start)); |
884 riverElement.setAttribute("to", String.valueOf(extent.end)); | 874 riverElement.setAttribute("to", String.valueOf(extent.end)); |
885 riverElement.setAttribute("rid", String.valueOf(riverId)); | 875 riverElement.setAttribute("rid", String.valueOf(riverId)); |
876 riverElement.setAttribute("name", riverName); | |
886 | 877 |
887 fixingsElement.appendChild(riverElement); | 878 fixingsElement.appendChild(riverElement); |
888 | 879 |
889 SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT); | 880 SimpleDateFormat df = new SimpleDateFormat(DATE_FORMAT); |
890 | 881 |