diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java @ 3401:086326be721c

FixA: Overview: classify Q ranges by intersecting gauges. flys-artifacts/trunk@5042 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Wed, 18 Jul 2012 14:44:29 +0000
parents 29022c93027d
children c44ff50f4970
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java	Wed Jul 18 13:11:41 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsOverview.java	Wed Jul 18 14:44:29 2012 +0000
@@ -105,6 +105,10 @@
             sector = other.sector;
         }
 
+        public SectorRange(Range range) {
+            super(range);
+        }
+
         public SectorRange(double start, double end, int sector) {
             super(start, end);
             this.sector = sector;
@@ -114,6 +118,10 @@
             return sector;
         }
 
+        public void setSector(int sector) {
+            this.sector = sector;
+        }
+
         public boolean enlarge(SectorRange other) {
             if (sector == other.sector
             && Math.abs(end-other.start) < EPSILON) {
@@ -207,17 +215,24 @@
                 return -1;
             }
 
-            public void buildSectors(GaugeRange gauge, List<QRange> qRanges) {
-
+            public void buildSectors(
+                GaugeFinder  gaugeFinder,
+                List<QRange> qRanges
+            ) {
                 for (QRange qRange: qRanges) {
-                    SectorRange sector = new SectorRange(
-                        qRange.start, qRange.end,
-                        gauge.classify(qRange.q));
-                    if (sectors.isEmpty()
-                    || !sectors.get(sectors.size()-1).enlarge(sector)) {
-                        sectors.add(sector);
-                    }
-                }
+                    for (GaugeRange gRange: gaugeFinder.getGauges()) {
+                        SectorRange sector = new SectorRange(qRange);
+                        if (!sector.clip(gRange)) {
+                            continue;
+                        }
+                        sector.setSector(gRange.classify(qRange.q));
+
+                        if (sectors.isEmpty()
+                        || !sectors.get(sectors.size()-1).enlarge(sector)) {
+                            sectors.add(sector);
+                        }
+                    } // for all gauges
+                } // for all Q ranges
             }
 
             public void loadKmRange(SQLQuery query) {
@@ -254,14 +269,7 @@
                     }
                 }
 
-                GaugeRange gauge = gaugeFinder.find(this);
-
-                if (gauge != null) {
-                    buildSectors(gauge, qRanges);
-                }
-                else {
-                    log.warn("No gauge found for column " + columnId + ".");
-                }
+                buildSectors(gaugeFinder, qRanges);
             }
         } // class Column
 

http://dive4elements.wald.intevation.org