Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/WINFOArtifact.java @ 2194:05984871520f
Call the "Bezugslinienverfahren" from the WINFOArtifact.
flys-artifacts/trunk@3809 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 27 Jan 2012 15:43:04 +0000 |
parents | 2898b1ff6013 |
children | ebbb18ed78c4 |
comparison
equal
deleted
inserted
replaced
2193:73490b828a90 | 2194:05984871520f |
---|---|
1 package de.intevation.flys.artifacts; | 1 package de.intevation.flys.artifacts; |
2 | |
3 import java.awt.geom.Point2D; | |
4 | 2 |
5 import de.intevation.artifactdatabase.ProtocolUtils; | 3 import de.intevation.artifactdatabase.ProtocolUtils; |
6 | 4 |
7 import de.intevation.artifactdatabase.data.StateData; | 5 import de.intevation.artifactdatabase.data.StateData; |
8 | 6 |
16 import de.intevation.artifacts.CallContext; | 14 import de.intevation.artifacts.CallContext; |
17 import de.intevation.artifacts.Message; | 15 import de.intevation.artifacts.Message; |
18 | 16 |
19 import de.intevation.artifacts.common.ArtifactNamespaceContext; | 17 import de.intevation.artifacts.common.ArtifactNamespaceContext; |
20 | 18 |
19 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; | |
20 | |
21 import de.intevation.artifacts.common.utils.XMLUtils; | 21 import de.intevation.artifacts.common.utils.XMLUtils; |
22 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; | |
23 | 22 |
24 import de.intevation.flys.artifacts.context.FLYSContext; | 23 import de.intevation.flys.artifacts.context.FLYSContext; |
25 | 24 |
26 import de.intevation.flys.artifacts.model.Calculation1; | 25 import de.intevation.flys.artifacts.model.Calculation1; |
27 import de.intevation.flys.artifacts.model.Calculation2; | 26 import de.intevation.flys.artifacts.model.Calculation2; |
28 import de.intevation.flys.artifacts.model.Calculation3; | 27 import de.intevation.flys.artifacts.model.Calculation3; |
29 import de.intevation.flys.artifacts.model.Calculation4; | 28 import de.intevation.flys.artifacts.model.Calculation4; |
29 import de.intevation.flys.artifacts.model.Calculation5; | |
30 import de.intevation.flys.artifacts.model.Calculation; | 30 import de.intevation.flys.artifacts.model.Calculation; |
31 import de.intevation.flys.artifacts.model.CalculationMessage; | |
31 import de.intevation.flys.artifacts.model.CalculationResult; | 32 import de.intevation.flys.artifacts.model.CalculationResult; |
32 import de.intevation.flys.artifacts.model.DischargeTables; | 33 import de.intevation.flys.artifacts.model.DischargeTables; |
33 import de.intevation.flys.artifacts.model.FacetTypes; | 34 import de.intevation.flys.artifacts.model.FacetTypes; |
34 import de.intevation.flys.artifacts.model.MainValuesFactory; | 35 import de.intevation.flys.artifacts.model.MainValuesFactory; |
35 import de.intevation.flys.artifacts.model.Segment; | 36 import de.intevation.flys.artifacts.model.Segment; |
36 import de.intevation.flys.artifacts.model.WQKms; | 37 import de.intevation.flys.artifacts.model.WQKms; |
38 import de.intevation.flys.artifacts.model.WW; | |
37 import de.intevation.flys.artifacts.model.WstValueTable; | 39 import de.intevation.flys.artifacts.model.WstValueTable; |
38 import de.intevation.flys.artifacts.model.WstValueTableFactory; | 40 import de.intevation.flys.artifacts.model.WstValueTableFactory; |
39 | 41 |
40 import de.intevation.flys.model.FastCrossSectionLine; | |
41 | |
42 import de.intevation.flys.artifacts.states.DefaultState; | 42 import de.intevation.flys.artifacts.states.DefaultState; |
43 import de.intevation.flys.artifacts.states.LocationDistanceSelect; | 43 import de.intevation.flys.artifacts.states.LocationDistanceSelect; |
44 | 44 |
45 import de.intevation.flys.geom.Lines; | 45 import de.intevation.flys.geom.Lines; |
46 | 46 |
47 import de.intevation.flys.model.FastCrossSectionLine; | |
47 import de.intevation.flys.model.Gauge; | 48 import de.intevation.flys.model.Gauge; |
48 import de.intevation.flys.model.River; | 49 import de.intevation.flys.model.River; |
49 | 50 |
50 import de.intevation.flys.utils.DoubleUtil; | 51 import de.intevation.flys.utils.DoubleUtil; |
51 import de.intevation.flys.utils.FLYSUtils; | 52 import de.intevation.flys.utils.FLYSUtils; |
52 | 53 |
53 import gnu.trove.TDoubleArrayList; | 54 import gnu.trove.TDoubleArrayList; |
55 | |
56 import java.awt.geom.Point2D; | |
54 | 57 |
55 import java.util.ArrayList; | 58 import java.util.ArrayList; |
56 import java.util.Arrays; | 59 import java.util.Arrays; |
57 import java.util.Collections; | 60 import java.util.Collections; |
58 import java.util.LinkedList; | 61 import java.util.LinkedList; |
62 import org.apache.log4j.Logger; | 65 import org.apache.log4j.Logger; |
63 | 66 |
64 import org.w3c.dom.Document; | 67 import org.w3c.dom.Document; |
65 import org.w3c.dom.Element; | 68 import org.w3c.dom.Element; |
66 import org.w3c.dom.Node; | 69 import org.w3c.dom.Node; |
67 | |
68 import de.intevation.flys.artifacts.model.CalculationMessage; | |
69 | 70 |
70 /** | 71 /** |
71 * The default WINFO artifact. | 72 * The default WINFO artifact. |
72 * | 73 * |
73 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> | 74 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
643 Calculation4 calc4 = new Calculation4(segments, river, isQ()); | 644 Calculation4 calc4 = new Calculation4(segments, river, isQ()); |
644 | 645 |
645 return calc4.calculate(table, range[0], range[1], range[2]); | 646 return calc4.calculate(table, range[0], range[1], range[2]); |
646 } | 647 } |
647 | 648 |
649 /** | |
650 * Returns the data that is computed by a reference curve computation. | |
651 * | |
652 * @return the data computed by a reference curve computation. | |
653 */ | |
654 public CalculationResult getReferenceCurveData() { | |
655 | |
656 Double startKm = getReferenceStartKm(); | |
657 | |
658 if (startKm == null) { | |
659 return error(new WW[0], "no.reference.start.km"); | |
660 } | |
661 | |
662 double [] endKms = getReferenceEndKms(); | |
663 | |
664 if (endKms == null || endKms.length == 0) { | |
665 return error(new WW[0], "no.reference.end.kms"); | |
666 } | |
667 | |
668 Calculation5 calc5 = new Calculation5(startKm, endKms); | |
669 | |
670 River r = FLYSUtils.getRiver(this); | |
671 if (r == null) { | |
672 return error(new WW[0], "no.river.found"); | |
673 } | |
674 | |
675 WstValueTable wst = WstValueTableFactory.getTable(r); | |
676 if (wst == null) { | |
677 return error(new WW[0], "no.wst.for.river"); | |
678 } | |
679 | |
680 return calc5.calculate(wst); | |
681 } | |
682 | |
683 protected Double getReferenceStartKm() { | |
684 StateData sd = getData("reference_start"); | |
685 | |
686 if (sd == null) { | |
687 logger.warn("no reference start given."); | |
688 return null; | |
689 } | |
690 | |
691 String input = (String)sd.getValue(); | |
692 | |
693 if (input == null | (input = input.trim()).length() == 0) { | |
694 logger.warn("reference start string is empty."); | |
695 return null; | |
696 } | |
697 | |
698 try { | |
699 return Double.valueOf(input); | |
700 } | |
701 catch (NumberFormatException nfe) { | |
702 logger.warn("reference start string is not numeric."); | |
703 } | |
704 | |
705 return null; | |
706 } | |
707 | |
708 protected double [] getReferenceEndKms() { | |
709 | |
710 StateData sd = getData("reference_end"); | |
711 | |
712 if (sd == null) { | |
713 logger.warn("no reference end given."); | |
714 return null; | |
715 } | |
716 | |
717 String input = (String)sd.getValue(); | |
718 | |
719 if (input == null | (input = input.trim()).length() == 0) { | |
720 logger.warn("reference end string is empty."); | |
721 return null; | |
722 } | |
723 | |
724 TDoubleArrayList endKms = new TDoubleArrayList(); | |
725 | |
726 for (String part: input.split("\\s+")) { | |
727 try { | |
728 endKms.add(Double.parseDouble(part)); | |
729 } | |
730 catch (NumberFormatException nfe) { | |
731 logger.warn("reference end string is not numeric."); | |
732 } | |
733 } | |
734 | |
735 return endKms.toNativeArray(); | |
736 } | |
648 | 737 |
649 public List<Segment> getSegments() { | 738 public List<Segment> getSegments() { |
650 StateData wqValues = getData("wq_values"); | 739 StateData wqValues = getData("wq_values"); |
651 if (wqValues == null) { | 740 if (wqValues == null) { |
652 logger.warn("no wq_values given"); | 741 logger.warn("no wq_values given"); |