Mercurial > dive4elements > gnv-client
changeset 127:f6f0e4ce4a35
merged gnv-artifacts/0.1
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:13:41 +0200 |
parents | 94a07d1d9316 (current diff) cfaaa215d8ff (diff) |
children | 92faade399e4 |
files | |
diffstat | 174 files changed, 9467 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/ChangeLog Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,858 @@ +2009-10-07 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + RELEASE 0.1 + + * Changes, NEWS: Summarized changes. + +2009-10-06 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java (HorizontalProfileOutputTransition) Edited : + Switch Lable-Value for Domain-Axis. + * src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java (getRessource) Edited: + Added missing Import + * src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java (advance) Edited: + Added i18n Support + * src/main/resources/lang/artifactMessages*.properties Edited: + Added some missing RessourceValues + +2009-10-06 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + * src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_out_csv.xml, + src/test/ressources/conf.xml, + src/test/ressources/timeseries_mesh/timeseries_step_07_out_csv.xml, + src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_out_csv.xml, + src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_out_csv.xml, + src/test/ressources/verticalprofile/verticalprofile_step_04_out_csv.xml: + s@test/plain@text/plain@g to correct MIME type of CSV export + +2009-10-06 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + * src/main/java/de/intevation/gnv/artifacts/ressource/*.properties: + Deleted. + + * src/main/resources/lang/*.properties: Re-inserted here. Maven now + includes them in the jar package. + + * src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java: + Make code more robust. TODO: We need a better implementation here. + + * Changelog -> ChangeLog: To make eclipse happy. Unified changelog style. + + * pom.xml: xmllint-ed and set encoding of filtered resources to UTF-8 + +2009-10-06 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/queries.properties Edited: + Bugfix in Query for getting Data for the Output. + Now the Values will be sorted Correcly. Timevalue + has been removed from the Query because it is not a + Parameter which could be choosen from the User. + Also dummies for XCOORD-Value and YCOORD-Value integrated so + that is now Possible to visualize the Profile + gnv/issue21 + +2009-10-05 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/artifacts/ressource/artifactMessages*.properties Edited: + Added further Ressourec Values. + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalProfileInstantaneousPointArtifact) Edited: + Changed ArtifactName to real FIS. + * src/test/ressources/timeseries_mesh/timeseries_step_01_feed.xml Edited: + Changed Product-Name from timeSeriesMesh to timeSeries to provide a General-Naming-Structure + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (setup) Edited, + src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java Edited, + src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java Edited: + Added Configurationsupport for the Labeling Data. Now it is possible do define the + value-names in the Configurationfile. + * src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_feed.xml Edited, + src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_feed.xml Edited, + src/test/ressources/queries.properties Edited: + Changed the Queries for the VerticalProfileInstantaneusPoint to the FIS-Query Mode. + This Mode was send by Mr. Schulz-Ohlberg. + * src/test/ressources/conf.xml: + Changed the Workflow for the VerticalProfileInstantaneusPoint to the FIS-Query Mode. + This Mode was send by Mr. Schulz-Ohlberg. + Also Added the support for value-names to the Configuration of VerticalProfileInstantaneusPoint. + +2009-10-05 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/artifacts/ressource/artifactMessages_en.properties Renamed: + Renamed from artifactMessages_en_EN.properties to artifactMessages_en.properties to get a + propper support for PreferedLocale + * src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java (getRessource) Edited, + * src/test/java/de/intevation/gnv/artifacts/ressource/RessourceFactoryTestCase.java (setUp) Edited, + * src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Edited, + * src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (createSelectBox) Edited: + Changed Method Signature from Locale to PreferedLocale[] to put all Useable Languages to + the RessourceFactory + +2009-10-02 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/ressource/RessourceFactoryTestCase.java Added: + TestCase for Testing the RessourceFactory + + * src/main/java/de/intevation/gnv/artifacts/ressource/artifactMessages*.properties Added, + src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java Added: + Added Factory and Propertiesfiles for getting the localized Values + + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Edited, + src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java Edited, + src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, + src/main/java/de/intevation/gnv/transition/Transition.java Edited, + src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Edited, + src/main/java/de/intevation/gnv/transition/OutputTransition.java Edited, + src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited, + src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java Edited, + src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java Edited, + src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + LanguageSupport Integrated + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (createCallContext) Edited: + Extracted Method and Put CallMeta with Language German to the CallContext. Otherwise + TestCase will produce NPEs. + * src/test/java/de/intevation/gnv/artifacts/TestCallContext.java Edited: + Added Real CallMeta to the Method for usage in Artifacts. Otherwise + TestCase will produce NPEs. + * src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_feed.xml Edited, + src/test/ressources/timeseries_mesh/timeseries_step_02_feed.xml Edited, + src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_feed.xml Edited, + src/test/ressources/conf.xml Edited: + Changed som Identifiers for Localisation. + +2009-10-02 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/conf.xml Edited: + Added the Configuration of the Horizontal-Profile.Mesh. + Also Edited the Workflowq for HorizontalProfile-Instantaneouspoint and + Put three n ew FIS into the Configuration which represents HorizontalProfile-Instantaneouspoint. + * src/test/ressources/horizontalProfile_instantaneouspoint/*.xml Edited, + src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileInstantaneousPointArtifact) Edited: + Edited the Workflowlogic given by new Specification of the BSH. + * src/test/ressources/horizontalProfile_mesh/*.xml Added: + The Request for do an Workflow for an HorizontalProfile-Mesh + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileMeshPointArtifact) Edited: + Added TestCase for HorizontalProfiles of Type Mesh. + * src/test/java/de/intevation/gnv/artifacts/TestCallContext.java (getMeta) Edited: + Added new Method which is defined in the implemented Interface. + * src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid) Edited: + Added the Validation of InputValues from Type AttributeName which should represent + an QueryValue of Type String which must not put into "'". + * src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java Added: + Transition to provide the possibility of choosing the axis of an Grid that should be used. + * src/main/java/de/intevation/gnv/transition/TransitionBase.java (dataMultiSelect) Edited: + Changed from private to protected so that this mMeber could be accessed by within extending Classes. + * src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileMeshArtifact.java Added: + Class for the Representation of Horizontal Profiles for the Type Mesh. + * src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java (HorizontalProfileChartFactory) Edited: + Changed PlotOrientation so that the Profile is displayed correctly. + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (advance) Edited: + Added Log-Message for better Workflowanalyzis. + +2009-10-01 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + * src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java, + src/main/java/de/intevation/gnv/utils/ArtifactFactoryUtilities.java, + src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java, + src/main/java/de/intevation/gnv/transition/MinMaxTransition.java, + src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java, + src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java: + Removed needless imports. + + * src/main/java/de/intevation/gnv/utils/InputValidator.java: + Import org.apache.commons.validator.GenericValidator instead of + absolute usage in methods. + +2009-09-30 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/queries.properties Edited: + Added the Queries for HorizontalProfiles of InstantaneousPoints. + * src/test/ressources/conf.xml Edited: + Added the Configuration for HorizontalProfilArtifact for InstantaneousPoints + * src/test/ressources/horizontalProfile_instantaneouspoint/*.xml Added: + Added XML-Requests for the TestCase of HorizontalProfiles of InstantaneousPoints. + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testHorizontalProfileInstantaneousPointArtifact) Edited: + Added TestCase for HorizontalProfiles of InstantaneousPoints. + +2009-09-30 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid) Edited: + Added the Validation for Double-Values. + * src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java (createChart) Edited: + The Name of the Method for generaing Charts has changed. + * src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java Added: + New outputTransition for HorizontalProfiles + * src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java Added: + Class which calculates the Statistics for Horizontal Profiles. + * src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileInstantaneousPointArtifact.java Added, + * src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java Added: + Classes which represents HorizontalProfileArtifacts + * src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java (plotOrientation) Edited: + Added Member for the representation of the Plotorientation to overwrite it in + extende Classes + Rename Method for generatim the Charts in a common Name. + * src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java Added: + Class for drawing Horzontal Profiles + +2009-09-30 Sascha L. Teichmann <sascha.teichmann@intevation.de> + + * src/test/ressources/conf.xml: s@test/xml@text/xml@g + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (doNextStep) Edited: + Add Responsevalidation for feed-Requests. + * pom.xml Edited: + Add required Library ORO to the Dependencies which is required by Commons-Validator + to do matchRegexp Requests. + * src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid) Edited: + Add a Validator for the type Point + * src/test/ressources/conf.xml Edited: + Changed mesh_coordinate from type Integer to type Point + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java (findValueTitle): + Key of KeyValueDescribeData is a String. So it is not nessessary to parse the + id into an Integer Value. + Also some NP-Access removed. + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited: + Some Coderedundances refactored. + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/queries.properties Edited: + Bug fixed: Mesh TimeSeries will now Handle Charts with multiple Depth-Values properly. + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/timeseries_mesh/*.xml Added : + TestCaseRequests for Timeseries FIS Mesh + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testTimeSeriesMeshArtifact) Edited: + Add Testcase for Timeseries Mesh + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (check4ExceptionReport) edited: + ExceptionTest for Responsdocuments added. + UnitTest will now fail if the Artifact delivers an ExceptionReport using the advance Request. + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalProfileMeshArtifact) Edited: + Added TestCase for Vertical Profiles for Mesh + * src/test/ressources/verticalprofile_mesh/*.xml Added: + TestCaseRequests for VerticalProfile FIS Mesh + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/utils/InputValidator.java (isInputValid) Edited: + Bugfix: Remove leading- and trailingwhitspaces from Date- and Integervalues + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testVerticalProfileArtifact): + (testVerticalProfileInstantaneousPointArtifact) Edited: + Added Testcases for VerticalProfile and VerticalProfile Instantaneouspoint + * src/test/ressources/verticalprofile_instantaneouspoint/*.xml Added: + TestCaseRequests for VerticalProfile Instantaneouspoint + * src/test/ressources/verticalprofile/*.xml Added: + TestCaseRequests for VerticalProfile FIS Marnet + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/queries.properties Edited: + Remove to_date from TimeSeries-Quueries becaus of Changes in the conf.xml-File + * src/test/ressources/conf.xml Edited: + Correct Types for min- and max-Values from Integer to Date + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java (testTimeSeriesArtifact) Edited: + Add CallContext to the Tests. + * src/test/java/de/intevation/gnv/artifacts/TestCallContext.java Add: + A CallContext used only in Junit-Tests + +2009-09-29 Tim Englich <tim.englich@intevation.de> + + * pom.xml Edited: + Added the dependency to Apache-Commons-Validator Version 1.3.1 which is + used for the InputValoue-validation. + * src/main/java/de/intevation/gnv/utils/InputValidator.java Added : + An InputValidator for Validating InputValues. + At this Moment only Integer, String and Date is supported. + * src/main/java/de/intevation/gnv/transition/TransitionBase.java (putInputData) Edited: + Add the InputValidator to validate the incomming Values from the Clients. + +2009-09-28 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/chart/ChartFactory.java (createTimeSeries) Edited: + Performanceimprovement: The Loop will be interrupted if the Pointer is bigger than the + last Pointer of the Value that must be visualised. + +2009-09-28 Tim Englich <tim.englich@intevation.de> + + * pom.xml Edited: + Added the Dependeny to the ehcache-Library + * src/test/ressources/ehcache.xml Added: + The ehcache-Configuration. + * src/test/ressources/conf.xml Edited: + Added the Link to the ehcache-Configuration. + * src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java (createArtifactContext) Edited: + Added the Initialisation of the CacheManager. + + * src/main/java/de/intevation/gnv/artifacts/cache/CacheFactory.java Added: + An Fractoryimplementation for the central access to the Cache. + + * src/main/java/de/intevation/gnv/transition/MinMaxTransition.java (purifyResult) Edited, + * src/main/java/de/intevation/gnv/transition/SingleInputTransition.java (purifyResult) Edited, + * src/main/java/de/intevation/gnv/transition/Transition.java Edited, + * src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Signature of Methods purifyResults, advanced and feed Changed to put the uuid to the Transition + * src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java (createChart) Edited: + Methodsignatur of getChartResult change for putting the uuid of an Artifact into it + * src/main/java/de/intevation/gnv/transition/OutputTransition.java (out) Edited, + src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out) Edited: + Method Signature Changed for putting the uuid of an Artifact to the Transition. + stored + * src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Edited: + removed the persitence of the Chartresults and put them into an Cache instance. + +2009-09-28 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (getStatisticsGenerator) Edited: + Extracted the Instantiation of the Statistics-object to an protected Methode + to make it possible that extending Classes could change it. + * src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java (getStatisticsGenerator) Edited: + Overwrite getStatisticsGenerator to instantiate the VerticalProfileStatistics- + * src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java Added: + Class for Calculating Statistics for VerticalProfiles- The Only thing whisch differs to + TimeSeriesStatists is that the XoordinateValue is an double and not an Date-Value + * src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java (calculateXOrdinateValue) Edited: + Added the Methode calculateXOrdinateValue to this Class to switch is Values in extending Classes. + * src/main/java/de/intevation/gnv/statistics/Statistics.java (calculateStatistics) Edited: + Added methodsignature to Interface for usage in different Implementations of Statistics. + +2009-09-28 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java (calculateStatistics) Edited: + Bug fixed. Now all Values will be used to calculate the Statistics + +2009-09-28 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/conf.xml Edited : + Changed the Output-format of Statistics from text/plain to text/xml. + +2009-09-28 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Edited: + Moved the calculating-Methods from the Conmstructor to an separat Method. + Switched the ResultContainer from Array to Collection + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out) Edited: + Added the Output-Variante for generating Statistics + +2009-09-28 Tim Englich <tim.englich@intevation.de> + + * pom.xml Edited: + Added Link to Apache-Commons-Math to get the required Classes for the calculation + of Statistics. + * src/main/java/de/intevation/gnv/statistics/exception/StatisticsException.java Added: + Specified ExceptionClass for the Statistics Part of the gnv-artifacts + * src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Edited: + Remove compileErrors and switch to new Datastructure + +2009-09-28 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/statistics/Statistic.java Added , + src/main/java/de/intevation/gnv/statistics/Statistics.java Added , + src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Added: + Imported Statistics-Classes from old Project. Revision: 3101 Does not compile + +2009-09-25 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/conf.xml Edited: + Added with and height Inputparameter to each Chart-OutputMode. + + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out) Edited: + Added the usage of the Parameters revieved from the client for the ChartRendering + + * src/main/java/de/intevation/gnv/transition/DefaultInputValue.java (DefaultInputValue) (getDefaultValue) Edited , + src/main/java/de/intevation/gnv/transition/InputValue.java (getDefaultValue) Edited: + Added the Method getDefaultValue to the Interface for getting the + deafultvalue of an Parameter. + + * src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java Edited, + src/main/java/de/intevation/gnv/transition/OutputMode.java (getInputParameters) Edited: + Added the Method getInputParameters to the OutputMode for Handling the required Parameters + of an OutputMode. + + * src/main/java/de/intevation/gnv/transition/OutputTransition.java (out) Edited: + Put the InputParameter recived from the Client to the Methodsignature so that + they can be used during the outputprocessing. + + * src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Edited: + Read rquired Outputparameters from the Configuration + + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Added support for Parameters in OutputNode of Describe-Artifact + +2009-09-24 Tim Englich <tim.englich@intevation.de> + + * pom.xml Edited: + Added Library for CSV-Support + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (out) Edited: + Add support for CSV-Export + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (out) Edited: + Add Fag on Context for storing the Artifact status after out. + +2009-09-24 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java (createSuccessReport) Edited: + Added a centraL Method for creating an Successreoprt. + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited, + src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited: + Add ResultReporting to the different Metshods of an Artifact + +2009-09-24 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java Edited: + Obsolet TODOs removed + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited, + src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited, + src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited: + Create Exception Report added + * src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java (createExceptionReport) Edited: + Method for creating Exceptionreports added. + +2009-09-24 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/queries.properties Edited: + Queries formatted so that they can be analysed and extended easier. + Some Bugs removed + +2009-09-24 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java Edited, + src/main/java/de/intevation/gnv/chart/ChartLabels.java Edited, + src/main/java/de/intevation/gnv/chart/ChartFactory.java Edited: + Removed obsolet Parameters an Methods. + Use the ChartLable to put the DomainAxisLable into the Chart. + + * src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Edited: + Some more Loggingoutput integrated. + Some Performanceimprovements done. The ResultData will only be refreshed if + the InputValues has changed. + Some Refactoring Work done. Move some Members into from extending Classes + into this implementation. + * src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java Edited, + src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Edited: + Dummywerte für Diagrammgenerierung durch Echtwerte ersetzt. + Obsolete Übergabeparameter entfernt. + +2009-09-23 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/queries.properties Edited: + Statements for InstantaneousPoint Vertical Profiles added + * src/test/ressources/conf.xml Edited: + Configuration for Vertikal Profiles for InstantaneousPoints added + * src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileInstantaneousPointArtifact.java (VerticalProfileInstantaneousPointArtifact) Added: + New Artifact-Class Reperesenting Artifacts for InstantaneousPoints Creating VerticalProfiles added. + +2009-09-23 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/TransitionBase.java (prepareInputData4DateDBQuery) Edited: + Bug Fixed, now all Inputvalues of String and Date will be put into the Query + +2009-09-23 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java (createXYSeries) Edited: + Bug fixed. Now all Values will be Renderd to the Chart + * src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileMeshArtifact.java Added: + Artifact-class for VerticalProfile Mesh added + * src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited: + Support for StringQuieries and OracleDateQueries added + * src/test/ressources/queries.properties Edited: + Queries for VerticalProfile Mesh integrated + * src/test/ressources/conf.xml Edited: + Artifact for VerticalProfile Mesh integrated + +2009-09-22 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/queries.properties Edited: + Added Queries for the Workfloe of collecting the + required Information to generate a vertical Profile + * src/test/ressources/conf.xml Edited: + Added the Configuration of the VerticalProfileArtifact + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java (getCollection) Edited: + Some Codrefactoring done for reuse of Functionality in extended Classes. + * src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java Added: + Outputtransition for the Support of VerticalPropfiles + * src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java (getKey), + src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java (getKey) Edietd, + src/main/java/de/intevation/gnv/transition/TransitionBase.java (purifyResult) Edited: + Change KEY-Attribute of KeyValueDescribeData from Integer to String for the required + Representation of Date-KeyValue-Pairs + * src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java Added: + ArtifactClass for the representation of VerticalProfiles + * src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (createSelectBox) Edited: + Added support for selected Products in static UI. + * src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java Added: + Factory for producing VerticalCharts added. + * src/main/java/de/intevation/gnv/chart/ChartFactory.java Edited: + Names of Getter for Columns Changed. + +2009-09-21 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/queries.properties Edited: + Queryie for TimeSeriesMesh added. + * src/test/ressources/conf.xml Edited: + New Artifact representing the TimeSeries-Mesh added to the Configuration. + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Edited: + Inputdata for the Chartgeneration will now be allocated by name and not by position in Transitionorder. + * src/main/java/de/intevation/gnv/transition/describedata/SingleValueDescribeData.java Added, + src/main/java/de/intevation/gnv/transition/describedata/DefaultSingleValueDescribeData.java Added, + src/main/java/de/intevation/gnv/transition/SingleInputTransition.java Added: + New Class for Representing a single Input Transition + * src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited: + Added support of usage inputValues none or multiple times in Queries. + Added support for SingleInputTransitions in Describe-Output + * src/main/java/de/intevation/gnv/transition/InputValue.java Edited, + src/main/java/de/intevation/gnv/transition/DefaultInputValue.java Edited: + An InputValue now is possible to use none or multiple times in Queries. + * src/main/java/de/intevation/gnv/timeseries/TimeSeriesMeshArtifact.java Added: + ArtifactClass for the Representation of an Mesh-Timeseries-Artifact + +2009-09-17 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/conf.xml Edited: + Database Cleanup Interval set to 5 minutes. + +2009-09-17 Tim Englich <tim.englich@intevation.de> + * src/test/ressources/conf.xml Edited: + Some structurechanges done. + + * src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java Edited: + Fixed Bug supporting UTF-8 Documents properly. + * src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java Edited, + * src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java Edited, + Added Methods for setting and getting the selection-state of this objects. + + * src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java Edited, + src/main/java/de/intevation/gnv/transition/describedata/MinMaxDescribeData.java Edited: + Added setter for min an max-Values and getters an setters for minName and maxName + + * src/main/java/de/intevation/gnv/transition/describedata/NamedCollection.java Added, + src/main/java/de/intevation/gnv/transition/describedata/NamedArrayList.java Added: + Collection ans an Implementation of this Collection for Storing Name of the Collection and if + the Values in it are multiselectable. + + * src/main/java/de/intevation/gnv/transition/TransitionBase.java : + Static UI-Support and valid SelectionStorage added. + I added also an imporvement of the multiselect Methods for Datasets + * src/main/java/de/intevation/gnv/transition/MinMaxTransition.java Edited: + Storage of changed Values added + + * src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited: + Static UI Support Added + + +2009-09-16 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/conf.xml Edited, + src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Edited, + src/main/java/de/intevation/gnv/transition/InputValue.java (isMultiselect) Edited, + src/main/java/de/intevation/gnv/transition/InputData.java (concartValue) Edited, + src/main/java/de/intevation/gnv/transition/DefaultInputValue.java (isMultiselect) Edited, + src/main/java/de/intevation/gnv/transition/DefaultInputData.java (concartValue)Edited, + src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (createUserInterface) Edited, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (parseInputData) Edited: + Added Multiselectsupport for InputValues + +2009-09-16 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java (setup) Edited: + Bug Fixed because of Infrastructure Changes in the Artifact-Module + + * src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited: + Put only the last DescribeData to the UI-Output bnecause auf Renderingproblems in the Client + + * src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java Edited, + src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java Edited, + src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java Edited: + Made Interface Serializable, add UIDs to the Implementations of the Interface + +2009-09-15 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java (createUserInterface) Edited: + Integrate UI-Representation for Describe into the FISArtifact. + * src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java (createXFormElement) Refactoring, + src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Refactoring: + Extract the Element-Creation of XForms Nodes into a Common Class to make them available for + other Classes which have to create XForm-Fragments + +2009-09-14 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/Transition.java Edited, + src/main/java/de/intevation/gnv/transition/InputData.java Edited, + src/main/java/de/intevation/gnv/transition/OutputMode.java Edited, + src/main/java/de/intevation/gnv/transition/InputValue.java Edited, + src/main/java/de/intevation/gnv/artifacts/fis/product/Product.java Edited, + src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java Edited, + src/main/java/de/intevation/gnv/transition/describedata/DescribeData.java Edited: + Make the Interfaces Serializable to make them usable in the Artifactdatabase + +2009-09-14 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited, + src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Edited, + src/main/java/de/intevation/gnv/transition/OutputTransition.java Edited , + src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited, + src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Edited, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Refactoring Work depending on Infrastructurchanges in the Artifact-Module + +2009-09-10 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited, + src/test/ressources/timeseries/timeseries_step_01_feed.xml Edited, + src/test/ressources/timeseries/timeseries_step_01_advance.xml Edited, + src/test/ressources/conf.xml Edited: + TestCase moced from TimeSeriesArtifact to FISArtifact. Used FIS: Marnet + +2009-09-10 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java Added: + Utilities-Class for some XML-Stuff that is only for gnv-artifacts + + * src/main/java/de/intevation/gnv/utils/ArtifactFactoryUtilities.java Added: + Factory to Instantiiate an ArtifactFactory (TODO: Should be moved to Artifact-database) + + * src/main/java/de/intevation/gnv/artifacts/fis/product/Product.java Added, + src/main/java/de/intevation/gnv/artifacts/fis/product/DefaultProduct.java Added: + Interfcaedefinition and Defaultimplementation for the Representation of the different + Products in an FIS. + + * src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Added: + Artifact to Repersent an FIS. This Artifact is able to switch between different + SubArtifacts for handling the different Products of an FIS. + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Refactoring Work done because of changes in the artifact-modules + +2009-09-10 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited, + src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited: + Refactoringwork done because of changes in the artifact-module + +2009-09-10 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited: + src/test/ressources/conf.xml Renamed: + Project Structure changed in artifact-database. So we have to rename + the Testconfigurationfile in conf.xml. + + * src/test/ressources/results Added: + Integrated Folder for temporal storing Resultfiles of the TestCases + + * src/test/ressources/queries.properties Edited: + Further Queries for Testcases integrated + * src/test/ressources/timeseries/timeseries_step_05_out.xml Added, + src/test/ressources/timeseries/timeseries_step_05_feed.xml Added: + Integrated the last step of the TimeSeries-Workflow. + Now the TestCase is able to render Charts. + + * src/test/ressources/timeseries/timeseries_step_04_feed.xml Edited, + src/test/ressources/timeseries/timeseries_step_03_feed.xml Edited: + Names of the feed-Parametes changed to the Syntax of BSH-Spelling + +2009-09-09 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java: + Chart Rendering completed with some Fixes to do + * src/main/java/de/intevation/gnv/transition/TransitionBase.java: + Integrated usage of KeyValueDescibeData + * src/main/java/de/intevation/gnv/transition/OutputTransition.java (getOutputModes): + Errorhandling integrated + * src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited, + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Refactored out-Method from Extending Class + +2009-09-09 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/chart/exception/TechnicalChartException.java Added, + src/main/java/de/intevation/gnv/chart/ChartFactory.java Edited: + Refactoring of the ChartFactory so that it colud be use and it is possible to compile + this class. + + * src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java Added, + src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java Added: + Added an new Representation of Describedata for Key Value Pairs using for the Parameter Lists + of the Transitions an put it into the Chartgeneration + +2009-09-09 Tim Englich <tim.englich@intevation.de> + + * pom.xml Edited: + Added JfreeChart Dependency to pom-file + +2009-09-09 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/chart/Insets.java Added, + src/main/java/de/intevation/gnv/chart/ChartStyle.java Added, + src/main/java/de/intevation/gnv/chart/ChartLabels.java Added, + src/main/java/de/intevation/gnv/chart/ChartFactory.java Added: + Insert Chart-Classes from OLD-Repository Revision: 3101 Does not compile + +2009-09-09 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Added: + The specifed OutputTransition for the Product TimeSeries. + + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Integration of the OutputModes in the DescriberesultDocument. + + * src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Added, + src/main/java/de/intevation/gnv/transition/OutputTransition.java Added: + The Interface and the abstract Basicimplementation of an Transition which + can produce different outputs. + + * src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java Added, + src/main/java/de/intevation/gnv/transition/OutputMode.java Added: + Interfacestructur and Defaultimplementation for the Representation of the + Different OutputModes given in an Artifact. + +2009-09-09 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/TransitionBase.java (describe) Edited: + Changed DateoutputFormat from German- to Anericanstyle + +2009-09-09 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/timeseries/timeseries_step_04_feed.xml Added, + * src/test/ressources/timeseries/timeseries_step_04_advance.xml Added: + Two more ArtifactCommands for the next Step in TimeSeriesArtifactTestCase + * src/test/ressources/queries.properties Edited: + New Queries for timeseries_timeinterval added. + Also use KEY ,VALUE, MIN and MAX as Identifiers for the different Columns. + * src/test/ressources/GNVArtifactsTestCase_Configuration.xml Edited, + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited: + Modified the TimeseriesArtifact and added one further TransitionStep + +2009-09-09 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java , + * src/main/java/de/intevation/gnv/transition/describedata/MinMaxDescribeData.java, + * src/main/java/de/intevation/gnv/transition/describedata/DescribeData.java Added: + Interface Structure and Defaultimplementation for Representing DescribeData of an + Transition added. In this Way we are able to switch between different Renderingmethods + for descibe. + * src/main/java/de/intevation/gnv/transition/MinMaxTransition.java Added: + Added MinMaxTransition for representing Min-/Max-Value Results in a Tansition + * src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited: + Integrated Min- / MAX-Value Support for Describe. Also done some Refactoring Work + for easy creating Extensions of this Class. + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Userinterface Informations were integrated in the wrong Method. Now the + Informations are put into the ui-Node + +2009-09-08 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/timeseries/timeseries_step_01_advance.xml Edited, + src/test/ressources/timeseries/timeseries_step_01_feed.xml Edited, + src/test/ressources/timeseries/timeseries_step_02_advance.xml Added, + src/test/ressources/timeseries/timeseries_step_02_feed.xml Added, + src/test/ressources/timeseries/timeseries_step_03_advance.xml Added, + src/test/ressources/timeseries/timeseries_step_03_feed.xml Added, + src/test/ressources/GNVArtifactsTestCase_Configuration.xml: Edited, + src/test/ressources/queries.properties Added, + src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited: + TestCase implemented until Choosing the TimeInetval of an TimeSeries + + One Entry is Missing + +2009-09-08 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, + src/main/java/de/intevation/gnv/transition/Transition.java Edited, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited, + src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Edited, + src/test/ressources/GNVArtifactsTestCase_Configuration.xml Edited, + src/test/ressources/timeseries/timeseries_step_01_feed.xml Added , + src/test/ressources/timeseries/timeseries_step_01_advance.xml Added : + Artifact.advance initial implementiert + +2009-09-08 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Edited, + src/main/java/de/intevation/gnv/transition/DefaultInputData.java Added, + src/main/java/de/intevation/gnv/transition/InputData.java Added, + src/main/java/de/intevation/gnv/transition/exception/TransitionException.java Added, + src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, + src/main/java/de/intevation/gnv/transition/Transition.java Edited, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Edited: + Funktionalität Feed initial bereitgestellt. + +2009-09-08 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/GNVArtifactsTestCase_Configuration.xml, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java, + src/main/java/de/intevation/gnv/transition/TransitionBase.java, + src/main/java/de/intevation/gnv/transition/DefaultInputValue.java Edited: + Required Inputelements integrated in BasicArtifact-Descibe-Output + +2009-09-08 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/transition/DefaultInputValue.java Added, + src/main/java/de/intevation/gnv/transition/InputValue.java Added, + src/main/java/de/intevation/gnv/transition/TransitionBase.java Edited, + src/main/java/de/intevation/gnv/transition/Transition.java Edited, + src/test/ressources/GNVArtifactsTestCase_Configuration.xml Edited: + Constructs for the required Inputvalues for an Transition created + +2009-09-08 Tim Englich <tim.englich@intevation.de> + + * src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java, + * src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java:, + * src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java: Edited + Added Output for Describe to the Artifactimplementation + +2009-09-08 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/GNVArtifactsTestCase_Configuration.xml, + src/main/java/de/intevation/gnv/transition/Transition.java (getDescription), + src/main/java/de/intevation/gnv/transition/TransitionBase.java (setup), (getDescription): + Added Description to a Transition + +2009-09-07 Tim Englich <tim.englich@intevation.de> + + * src/test/ressources/GNVArtifactsTestCase_Configuration.xml, + src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java: ADD + TestClass for GNV-Artifacts an TimeSeriesArtifacs + + * src/main/java/de/intevation/gnv/transition/TransitionFactory.java, + src/main/java/de/intevation/gnv/transition/TransitionBase.java, + src/main/java/de/intevation/gnv/transition/Transition.java, + src/main/java/de/intevation/gnv/transition/DefaultTransition.java: ADD + Transitionimplementation for handling the substeps of an Artifact Livecycle + + * src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java: ADD + The Artifact for handling the TimeSeries + * src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java, + src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContext.java, + src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java: + The Basic-Classes for providing GNC Artifacts. this Classes should be the Fundament + for the Implementation of Specialized Artifacts e.g. TimeSeries + * pom: Edited Projectreferences to the other GNV-Projects added + +2009-09-04 Tim Englich <tim.englich@intevation.de> + + * src/main/java/de/intevation/gnv/artifacts/ArtifactFactoryBase.java: + Implementation of the General ArtifactFactory + +2009-09-04 Tim Englich <tim.englich@intevation.de> + + * pom.xml: Created with maven and put the Moduledependencies into it + * target | .settings | .project | .classpath: Add to SVN-Ignore + * Changes | Changelog | NEWS | README | TODO: Added + * src/**: Added to the Project
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/Changes Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,17 @@ +2009-10-07 RELEASE 0.1 + + * Initial release of the artifacts special for the + BSH Generic Viewer. They are to be configured to live + inside an artifact database via conf.xml. + + * The collection of parameters is modelled by transistions + inside the XML. + + * src/test/ressources/conf.xml gives a setup to use all + the provided artifacts. + + * Products can be produced for following FIS: + Marnet, IMIS, STAUN, Modeldata, Delphin, Thermosalinograph, + Chemusurvey, GTS, CTD, CBT in form of time series, + vertical profiles and horizontal profiles on meshes + and instantaneous points.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/NEWS Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,4 @@ +2009-10-07 RELEASE 0.1 + +* Initial release of the artifacts special for the Generic BSH Viewer. +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/pom.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,84 @@ +<?xml version="1.0"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>de.intevation.bsh.artifacts</groupId> + <artifactId>gnv-artifacts</artifactId> + <packaging>jar</packaging> + <version>1.0-SNAPSHOT</version> + <name>gnv-artifacts</name> + <url>http://maven.apache.org</url> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-eclipse-plugin</artifactId> + <version>2.5.1</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>2.0.2</version> + <configuration> + <source>1.5</source> + <target>1.5</target> + </configuration> + </plugin> + </plugins> + </build> + <dependencies> + <dependency> + <groupId>de.intevation.bsh.artifact-database</groupId> + <artifactId>artifact-database</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>de.intevation.bsh.geo-backend</groupId> + <artifactId>geo-backend</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>[1.2,)</version> + </dependency> + <dependency> + <groupId>jfree</groupId> + <artifactId>jfreechart</artifactId> + <version>1.0.7</version> + </dependency> + <dependency> + <groupId>net.sf.opencsv</groupId> + <artifactId>opencsv</artifactId> + <version>2.0</version> + </dependency> + <dependency> + <groupId>commons-math</groupId> + <artifactId>commons-math</artifactId> + <version>1.1</version> + </dependency> + <dependency> + <groupId>net.sf.ehcache</groupId> + <artifactId>ehcache</artifactId> + <version>1.6.2</version> + </dependency> + <dependency> + <groupId>commons-validator</groupId> + <artifactId>commons-validator</artifactId> + <version>1.3.1</version> + </dependency> + <dependency> + <groupId>oro</groupId> + <artifactId>oro</artifactId> + <version>2.0.8</version> + </dependency> + </dependencies> +</project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/APP.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,21 @@ +/** + * + */ +package de.intevation.gnv.artifacts; + +import de.intevation.artifactdatabase.App; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class APP { + + /** + * @param args + */ + public static void main(String[] args) { + App.main(args); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,396 @@ +/** + * + */ +package de.intevation.gnv.artifacts; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import javax.xml.xpath.XPathConstants; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import de.intevation.artifactdatabase.Config; +import de.intevation.artifactdatabase.DefaultArtifact; +import de.intevation.artifactdatabase.XMLUtils; +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.artifacts.ArtifactNamespaceContext; +import de.intevation.artifacts.CallContext; +import de.intevation.artifacts.CallMeta; +import de.intevation.gnv.artifacts.context.GNVArtifactContext; +import de.intevation.gnv.transition.DefaultInputData; +import de.intevation.gnv.transition.InputData; +import de.intevation.gnv.transition.InputValue; +import de.intevation.gnv.transition.OutputMode; +import de.intevation.gnv.transition.OutputTransition; +import de.intevation.gnv.transition.Transition; +import de.intevation.gnv.transition.TransitionFactory; +import de.intevation.gnv.transition.exception.TransitionException; +import de.intevation.gnv.utils.ArtifactXMLUtilities; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public abstract class GNVArtifactBase extends DefaultArtifact { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(GNVArtifactBase.class); + /** + * The UID of this Class + */ + private static final long serialVersionUID = -8907096744400741458L; + + /** + * The Identifier for the Replacement of the Artifactname + */ + public static final String XPATH_IDENTIFIER_REPLACE = "IDENTIFIER"; + + /** + * The XPATH to the XML-Fragment that should be used for the Configuration + */ + public static final String XPATH_ARTIFACT_CONFIGURATION= "/artifact-database/artifacts/artifact[@name='"+XPATH_IDENTIFIER_REPLACE+"']"; + + + /** + * The current Transition + */ + protected Transition current = null; + + /** + * The Transitions that can be used + */ + protected Map<String, Transition> transitions = null; + + /** + * The Name of the Artifact + */ + protected String name = null; + + private ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); + + /** + * Constructor + */ + public GNVArtifactBase() { + super(); + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#advance(org.w3c.dom.Document, de.intevation.artifacts.CallContext) + */ + @Override + public Document advance(Document target, CallContext context) { + log.debug("GNVArtifactBase.advance"); + String uuid = Config.getStringXPath(target, "action/uuid/@value"); + Document result = XMLUtils.newDocument(); + try { + if (this.current != null){ + String transitionName = this.readTransitionName(target); + log.debug("Transitionsname: "+transitionName); + if (this.current.isTransitionReachable(transitionName)){ + // 1. Prüfung ob Transition valide ist + if (this.current.validate()){ + + try { + Transition nextStep = this.transitions.get(transitionName); + // 2.Ergebnisse Berechnen + this.current.advance(uuid,context.getMeta()); + // 3. Ergebnisse übergeben + nextStep.setDescibeData(this.current.getDescibeData()); + nextStep.putInputData(this.current.getInputData(),uuid); + // 4. Umschalten auf neue Transistion + this.current = nextStep; + result = new ArtifactXMLUtilities().createSuccessReport("Advance success", XMLUtils.newDocument()); + } catch (TransitionException e) { + log.error(e,e); + result = new ArtifactXMLUtilities().createExceptionReport(e.getLocalizedMessage(), XMLUtils.newDocument()); + } + + }else{ + String msg = "Advance nicht möglich, da die Bedingungen für den Übergang " + + "in den neuen Zustand noch nicht gegeben ist."; + log.error(msg); + result = new ArtifactXMLUtilities().createExceptionReport(msg, XMLUtils.newDocument()); + } + + }else{ + String msg = "Transitionsübergang wird nicht unterstützt."; + log.error(msg); + result = new ArtifactXMLUtilities().createExceptionReport(msg, XMLUtils.newDocument()); + } + }else{ + String msg = "Kein Transitionsschritt aktiviert."; + log.error(msg); + result = new ArtifactXMLUtilities().createExceptionReport(msg, XMLUtils.newDocument()); + } + } catch (Exception e) { + log.error(e,e); + result = new ArtifactXMLUtilities().createExceptionReport(e.getLocalizedMessage(), XMLUtils.newDocument()); + } + return result; + } + + protected String readTransitionName(Document document) { + String returnValue = Config.getStringXPath(document, "action/target/@name"); + return returnValue; + } + + protected Node getConfigurationFragment(Document document){ + log.debug("GNVArtifactBase.getConfigurationFragment"); + String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(XPATH_IDENTIFIER_REPLACE, this.name); + log.debug(xpathQuery); + return Config.getNodeXPath(document,xpathQuery); + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#feed(org.w3c.dom.Document, de.intevation.artifacts.CallContext) + */ + @Override + public Document feed(Document target, CallContext context) { + log.debug("GNVArtifactBase.feed"); + Document result = XMLUtils.newDocument(); + try { + if (this.current != null){ + String uuid = Config.getStringXPath(target, "action/uuid/@value"); + this.current.putInputData(this.parseInputData(target, "/action/data/input"),uuid); + result = new ArtifactXMLUtilities().createSuccessReport("Feed success", XMLUtils.newDocument()); + }else{ + String msg = "No Transition instantiated"; + log.warn(msg); + result = new ArtifactXMLUtilities().createExceptionReport(msg, XMLUtils.newDocument()); + } + } catch (TransitionException e) { + log.error(e,e); + result = new ArtifactXMLUtilities().createExceptionReport(e.getLocalizedMessage(), XMLUtils.newDocument()); + } + return result; + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#setup(java.lang.String, java.lang.Object) + */ + @Override + public void setup(String identifier, ArtifactFactory factory, Object context) { + log.debug("GNVArtifactBase.setup"); + super.setup(identifier, factory, context); + + Object localContext = context; + if (context instanceof CallContext){ + localContext = ((CallContext)context).globalContext(); + + } + + if (localContext instanceof GNVArtifactContext){ + GNVArtifactContext gnvContext = (GNVArtifactContext)localContext; + Document doc = gnvContext.getConfig(); + Node artifactNode = this.getConfigurationFragment(doc); + NodeList transitionList = Config.getNodeSetXPath(artifactNode, "transitions/transition"); + this.transitions = new HashMap<String, Transition>(transitionList.getLength()); + for (int i = 0 ; i < transitionList.getLength(); i++){ + Transition tmpTransition = TransitionFactory.getInstance().createTransition(transitionList.item(i)); + if (tmpTransition != null){ + this.transitions.put(tmpTransition.getID(), tmpTransition); + if (this.current == null){ + this.current = tmpTransition; + } + } + } + + } + } + + + protected Document createDescibeOutput(CallMeta callMeta){ + log.debug("GNVArtifactBase.createDescibeOutput"); + Document document = XMLUtils.newDocument(); + Element rootNode = this.createRootNode(document); + this.createHeader(rootNode, document, "describe"); + this.createOutputs(rootNode, document); + this.createCurrentState(rootNode, document); + this.createReachableStates(rootNode, document); + this.createModel(rootNode, document); + this.createUserInterface(rootNode, document,callMeta); + return document; + } + + protected Element createRootNode(Document document){ + Element rootNode = xmlUtilities.createArtifactElement(document,"result"); + document.appendChild(rootNode); + return rootNode; + } + + protected void createHeader(Element parent, Document document, String documentType){ + Element typeNode = xmlUtilities.createArtifactElement(document,"type"); + typeNode.setAttribute("name", documentType); + parent.appendChild(typeNode); + + Element uuidNode = xmlUtilities.createArtifactElement(document,"uuid"); + uuidNode.setAttribute("value", super.identifier); + parent.appendChild(uuidNode); + + Element hashNode = xmlUtilities.createArtifactElement(document,"hash"); + hashNode.setAttribute("value", this.hash()); + parent.appendChild(hashNode); + } + + protected void createReachableStates(Element parent,Document document){ + Element stateNode = xmlUtilities.createArtifactElement(document,"reachable-states"); + if (this.current != null){ + Iterator<String> states = this.current.reachableTransitions().iterator(); + while(states.hasNext()){ + String value = states.next(); + Element currentNode = xmlUtilities.createArtifactElement(document,"state"); + currentNode.setAttribute("name", value); + log.debug("Reachable State: "+value); + currentNode.setAttribute("description", transitions.get(value).getDescription()); + stateNode.appendChild(currentNode); + } + } + parent.appendChild(stateNode); + } + + protected void createCurrentState(Element parent, Document document){ + Element stateNode = xmlUtilities.createArtifactElement(document,"state"); + stateNode.setAttribute("name", this.current.getID()); + stateNode.setAttribute("description", this.current.getDescription()); + parent.appendChild(stateNode); + } + + + protected void createModel(Element parent, Document document){ + Element modelNode = xmlUtilities.createArtifactElement(document,"model"); + if (this.current != null){ + Collection<InputValue> inputValues = this.current.getRequiredInputValues(); + if (inputValues != null){ + Iterator<InputValue> it = inputValues.iterator(); + while(it.hasNext()){ + InputValue inputValue = it.next(); + Element inputNode = xmlUtilities.createArtifactElement(document,"input"); + inputNode.setAttribute("name", inputValue.getName()); + inputNode.setAttribute("type", inputValue.getType()); + modelNode.appendChild(inputNode); + } + } + } + parent.appendChild(modelNode); + } + + protected void createUserInterface(Element parent, Document document, CallMeta callMeta){ + Element uiNode = xmlUtilities.createArtifactElement(document,"ui"); + + if (this.current != null){ + this.current.describe(document, uiNode,callMeta); + } + + parent.appendChild(uiNode); + } + + protected void createOutputs(Element parent, Document document){ + log.debug("GNVArtifactBase.createOutputs"); + Element outputsNode = xmlUtilities.createArtifactElement(document,"outputs"); + if (this.current instanceof OutputTransition){ + Collection<OutputMode> outputModes = ((OutputTransition)this.current).getOutputModes(); + if (outputModes != null){ + Iterator<OutputMode> it = outputModes.iterator(); + while(it.hasNext()){ + OutputMode outputMode = it.next(); + log.debug("Write Outputnode for "+ outputMode.toString()); + Element outputModeNode = xmlUtilities.createArtifactElement(document,"output"); + outputModeNode.setAttribute("name", outputMode.getName()); + outputModeNode.setAttribute("description", outputMode.getDescription()); + outputModeNode.setAttribute("mime-type", outputMode.getMimeType()); + outputsNode.appendChild(outputModeNode); + + Collection<InputValue> inputParameters = outputMode.getInputParameters(); + if (inputParameters != null){ + Element inputParametersNode = xmlUtilities.createArtifactElement(document,"parameter"); + outputModeNode.appendChild(inputParametersNode); + Iterator<InputValue> it2 = inputParameters.iterator(); + while (it2.hasNext()){ + InputValue inputValue = it2.next(); + Element inputParameterNode = xmlUtilities.createArtifactElement(document,"parameter"); + inputParametersNode.appendChild(inputParameterNode); + inputParameterNode.setAttribute("name", inputValue.getName()); + inputParameterNode.setAttribute("type", inputValue.getType()); + inputParameterNode.setAttribute("value", inputValue.getDefaultValue()); + } + } + } + }else{ + log.warn("No Outputmodes given."); + } + } + parent.appendChild(outputsNode); + } + + + protected Collection<InputData> parseInputData(Document document, String xPath){ + log.debug("GNVArtifactBase.parseInputData"); + HashMap<String,InputData> returnValue = null; + + log.debug(new ArtifactXMLUtilities().writeDocument2String(document)); + + NodeList inputElemets = (NodeList)XMLUtils.xpath(document, xPath,XPathConstants.NODESET, ArtifactNamespaceContext.INSTANCE);//Config.getNodeSetXPath(document, ""); + if(inputElemets != null){ + returnValue = new HashMap<String,InputData>(inputElemets.getLength()); + for (int i = 0; i < inputElemets.getLength(); i++){ + Node inputDataNode = inputElemets.item(i); + String name = Config.getStringXPath(inputDataNode,"@name"); + String value = Config.getStringXPath(inputDataNode,"@value"); + + if (returnValue.containsKey(name)){ + InputData inputData = returnValue.get(name); + inputData.concartValue(value); + log.debug(inputData.toString()); + returnValue.put(name, inputData); + }else{ + InputData inputData = new DefaultInputData(name,value); + + returnValue.put(name,inputData); + } + } + } + return returnValue.values(); + } + + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#out(org.w3c.dom.Document, + * java.io.OutputStream, de.intevation.artifacts.CallContext) + */ + @Override + public void out(Document format, OutputStream outputStream, + CallContext context) throws IOException { + log.debug("TGNVArtifactBase.out"); + try { + + if (current != null && current instanceof OutputTransition) { + String uuid = Config.getStringXPath(format, + "action/uuid/@value"); + ((OutputTransition) current) + .out(this.readOutputType(format), this.parseInputData( + format, "/action/out/params/input"), + outputStream, uuid, context.getMeta()); + } + } catch (TransitionException e) { + log.error(e, e); + throw new IOException(e.getMessage()); + } + } + + + protected String readOutputType(Document document){ + String value = Config.getStringXPath(document,"action/out/@name"); + return value; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/cache/CacheFactory.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,82 @@ +/** + * + */ +package de.intevation.gnv.artifacts.cache; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.CacheManager; + +import org.apache.log4j.Logger; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class CacheFactory { + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(CacheFactory.class); + + private final static String CACHENAME = "artifactdata"; + + + /** + * The singleton Instance of this Factory. + */ + private static CacheFactory instance = null; + + /** + * + */ + private CacheManager cacheManager = null; + + /** + * Basic-Constructor of this Class + */ + private CacheFactory() { + super(); + } + + /** + * This Method provides an singleton Instance of this Class. + * @return an singleton Instance of this Class + */ + public static CacheFactory getInstance(){ + if (instance == null){ + instance = new CacheFactory(); + } + return instance; + } + + + /** + * Getting the ConnectionPool + * @return the ConnectionPool + */ + public Cache getCache(){ + return this.cacheManager.getCache(CACHENAME); + } + + /** + * Initializes the ConnectionPool. + * Should only be called once on system startup + * @param properties the Properties for the Individual Configuration of the ConnectionPool + */ + public void initializeCache(String configurationFileName){ + if (cacheManager == null){ + cacheManager = new CacheManager(configurationFileName); + cacheManager.addCache(CACHENAME); + } + } + + /** + * Checks if the ConnectionPool has already been initialized. + * @return true if the ConnectionPool is initialized. + */ + public boolean isInitialized(){ + return this.cacheManager != null; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContext.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,32 @@ +/** + * + */ +package de.intevation.gnv.artifacts.context; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; + +import de.intevation.artifactdatabase.DefaultArtifactContext; + + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class GNVArtifactContext extends DefaultArtifactContext{ + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(GNVArtifactContext.class); + + public GNVArtifactContext(){ + super(); + log.debug("GNVArtifactContext.Constructor"); + } + + public GNVArtifactContext(Document config) { + super(config); + log.debug("GNVArtifactContext.Constructor(config)"); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/context/GNVArtifactContextFactory.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,95 @@ +/** + * + */ +package de.intevation.gnv.artifacts.context; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; + +import de.intevation.artifactdatabase.Config; +import de.intevation.artifacts.ArtifactContextFactory; +import de.intevation.gnv.artifacts.cache.CacheFactory; +import de.intevation.gnv.geobackend.base.connectionpool.ConnectionPoolFactory; +import de.intevation.gnv.geobackend.base.query.container.QueryContainerFactory; +import de.intevation.gnv.geobackend.base.query.container.exception.QueryContainerException; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class GNVArtifactContextFactory implements ArtifactContextFactory { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(GNVArtifactContext.class); + + public static final String XPATH_GEOBACKEND_CONFIGURATION= "artifact-database/geo-backend/backend-configuration"; + + public static final String XPATH_GEOBACKEND_QUERYCONFIGURATION= "artifact-database/geo-backend/query-configuration"; + + private final static String CACHECONFIGNODEPATH = "/artifact-database/ehcache/configuration"; + + /** + * Constructor + */ + public GNVArtifactContextFactory() { + super(); + log.debug("GNVArtifactContextFactory.Constructor"); + } + + /** + * @see de.intevation.artifacts.ArtifactContextFactory#createArtifactContext(org.w3c.dom.Document) + */ + public Object createArtifactContext(Document config) { + Object returnValue = null; + try { + log.debug("GNVArtifactContextFactory.createArtifactContext"); + log.info("Initialisation of the Geo-BackendConnectionPool"); + String backendConfigurationFile = Config.getStringXPath(config, XPATH_GEOBACKEND_CONFIGURATION); + Properties properties = getProperties(backendConfigurationFile); + ConnectionPoolFactory cpf = ConnectionPoolFactory.getInstance(); + cpf.initializeConnectionPool(properties); + + log.info("Initialisation of the QueryContainer"); + String queryConfigurationFile = Config.getStringXPath(config, XPATH_GEOBACKEND_QUERYCONFIGURATION); + Properties queryProperties = getProperties(queryConfigurationFile); + QueryContainerFactory qcf = QueryContainerFactory.getInstance(); + qcf.initializeQueryContainer(queryProperties); + + + log.info("Initialisation of the Cache"); + String cacheConfigurationFile = Config.getStringXPath(config, CACHECONFIGNODEPATH); + CacheFactory cf = CacheFactory.getInstance(); + cf.initializeCache(cacheConfigurationFile); + + returnValue = new GNVArtifactContext(config); + } catch (FileNotFoundException e) { + log.error(e,e); + } catch (IOException e) { + log.error(e,e); + } catch (QueryContainerException e){ + log.error(e,e); + } + return returnValue; + } + + /** + * @param filePath + * @return + * @throws FileNotFoundException + * @throws IOException + */ + private Properties getProperties(String filePath) + throws FileNotFoundException, IOException { + InputStream inputStream = new FileInputStream(filePath); + Properties properties = new Properties(); + properties.load(inputStream); + return properties; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/FISArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,402 @@ +/** + * + */ +package de.intevation.gnv.artifacts.fis; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import de.intevation.artifactdatabase.Config; +import de.intevation.artifactdatabase.DefaultArtifact; +import de.intevation.artifactdatabase.XMLUtils; +import de.intevation.artifacts.Artifact; +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.artifacts.CallContext; +import de.intevation.artifacts.CallMeta; +import de.intevation.gnv.artifacts.GNVArtifactBase; +import de.intevation.gnv.artifacts.context.GNVArtifactContext; +import de.intevation.gnv.artifacts.fis.product.DefaultProduct; +import de.intevation.gnv.artifacts.fis.product.Product; +import de.intevation.gnv.artifacts.ressource.RessourceFactory; +import de.intevation.gnv.transition.DefaultInputData; +import de.intevation.gnv.transition.InputData; +import de.intevation.gnv.utils.ArtifactFactoryUtilities; +import de.intevation.gnv.utils.ArtifactXMLUtilities; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class FISArtifact extends DefaultArtifact { + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(GNVArtifactBase.class); + /** + * The UID of this Class + */ + private static final long serialVersionUID = 2874044542701727083L; + + /** + * The Identifier for the Replacement of the Artifactname + */ + public static final String XPATH_IDENTIFIER_REPLACE = "IDENTIFIER"; + + /** + * The XPATH to the XML-Fragment that should be used for the Configuration + */ + public static final String XPATH_ARTIFACT_CONFIGURATION= "/artifact-database/artifacts/artifact[@name='"+XPATH_IDENTIFIER_REPLACE+"']"; + + /** + * The Name of the Artifact + */ + private String name = null; + + private Map<String, Product> products = null; + + private Artifact productArtifact = null; + + private Product current = null; + + private ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); + + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#advance(org.w3c.dom.Document, de.intevation.artifacts.CallContext) + */ + @Override + public Document advance(Document target, CallContext context) { + + Document result = null; + if (this.productArtifact == null){ + if (this.current != null){ + + String uuid = Config.getStringXPath(target, "action/uuid/@value"); + String hash = Config.getStringXPath(target, "action/hash/@value"); + this.productArtifact = this.current.getArtifactFactory().createArtifact(uuid, context); + Document feedDocument = xmlUtilities.reInitDocument(this.createFeedProductArtifactDocument(uuid, hash)); + log.debug("Feed ==> "+this.xmlUtilities.writeDocument2String(feedDocument)); + Document descibeDocument = xmlUtilities.reInitDocument(this.productArtifact.describe(context)); + log.debug("Descibe ==> "+this.xmlUtilities.writeDocument2String(descibeDocument)); + this.productArtifact.feed(feedDocument, context); + String targetName = Config.getStringXPath(descibeDocument, "result/reachable-states/state/@name"); + Document advanceDocument = xmlUtilities.reInitDocument(this.createAdvanceProductArtifactDocument(uuid, hash, targetName)); + log.debug("Advance ==> "+this.xmlUtilities.writeDocument2String(advanceDocument)); + result = this.productArtifact.advance(advanceDocument, context); + }else{ + String msg = "Artifact is not configured properly. Call feed first."; + log.error(msg); + result = new ArtifactXMLUtilities().createExceptionReport(msg, XMLUtils.newDocument()); + } + }else{ + result = this.productArtifact.advance(target, context); + } + return result; + } + private Document createAdvanceProductArtifactDocument(String uuid, String hash, String targetName){ + Document document = XMLUtils.newDocument(); + Element rootNode = xmlUtilities.createArtifactElement(document, "action"); + + Element typeNode = xmlUtilities.createArtifactElement(document, "type"); + typeNode.setAttribute("name", "advanve"); + rootNode.appendChild(typeNode); + + Element uuidNode = xmlUtilities.createArtifactElement(document, "uuid"); + uuidNode.setAttribute("value", uuid); + rootNode.appendChild(uuidNode); + + Element hashNode = xmlUtilities.createArtifactElement(document, "hash"); + hashNode.setAttribute("value", hash); + rootNode.appendChild(hashNode); + Element targetNode = xmlUtilities.createArtifactElement(document, "target"); + targetNode.setAttribute("name", targetName); + rootNode.appendChild(targetNode); + + document.appendChild(rootNode); + return document; + } + + private Document createFeedProductArtifactDocument(String uuid, String hash){ + Document document = XMLUtils.newDocument(); + Element rootNode = xmlUtilities.createArtifactElement(document, "action"); + + Element typeNode = xmlUtilities.createArtifactElement(document, "type"); + typeNode.setAttribute("name", "feed"); + rootNode.appendChild(typeNode); + + Element uuidNode = xmlUtilities.createArtifactElement(document, "uuid"); + uuidNode.setAttribute("value", uuid); + rootNode.appendChild(uuidNode); + + Element hashNode = xmlUtilities.createArtifactElement(document, "hash"); + hashNode.setAttribute("value", hash); + rootNode.appendChild(hashNode); + + Element dataNode = xmlUtilities.createArtifactElement(document, "data"); + rootNode.appendChild(dataNode); + + + Collection<InputData> parameter = this.current.getParameter(); + if (parameter != null){ + Iterator<InputData> parameterIt = parameter.iterator(); + while(parameterIt.hasNext()){ + InputData inputData = parameterIt.next(); + Element inputNode = xmlUtilities.createArtifactElement(document, "input"); + inputNode.setAttribute("name", inputData.getName()); + inputNode.setAttribute("value", inputData.getValue()); + dataNode.appendChild(inputNode); + } + } + document.appendChild(rootNode); + return document; + + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object) + */ + @Override + public Document describe(CallContext context) { + if (this.productArtifact == null){ + return this.createDescibeOutput(context.getMeta()); + }else{ + Document document = this.productArtifact.describe(context); + document = new ArtifactXMLUtilities().reInitDocument(document); + Node staticNode = Config.getNodeXPath(document, "/result/ui/static"); + if (staticNode != null){ + Node staticUI = this.createSelectBox(document, context.getMeta()); + staticNode.insertBefore(staticUI, staticNode.getFirstChild()); + } + return document; + } + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#feed(org.w3c.dom.Document, java.lang.Object) + */ + @Override + public Document feed(Document target, CallContext context) { + log.debug("FISArtifact.feed"); + Document result = null; + if (this.productArtifact == null){ + String productName = Config.getStringXPath(target, "action/data/input[@name='product']/@value"); + log.debug("Looking for ProductArtifact "+productName); + if (this.products.containsKey(productName)) { + this.current = this.products.get(productName); + result = new ArtifactXMLUtilities().createSuccessReport("Feed success New ProductArtifact created", XMLUtils.newDocument()); + }else{ + String msg = "Product does not exists for "+productName; + log.error(msg); + result = new ArtifactXMLUtilities().createExceptionReport(msg, XMLUtils.newDocument()); + } + }else{ + log.debug("Feed a Productartifact"); + result = this.productArtifact.feed(target, context); + } + return result; + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#out(org.w3c.dom.Document, java.lang.Object) + */ + @Override + public void out(Document format, OutputStream outputStream, CallContext context) throws IOException { + if (this.productArtifact != null){ + this.productArtifact.out(format,outputStream, context); + } + } + + /** + * Constructor + */ + public FISArtifact() { + super(); + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#setup(java.lang.String, de.intevation.artifacts.ArtifactFactory, java.lang.Object) + */ + @Override + public void setup(String identifier, ArtifactFactory factory, Object context) { + log.debug("FISArtifact.setup"); + this.name = factory.getName(); + super.setup(identifier,factory, context); + if (context instanceof GNVArtifactContext){ + GNVArtifactContext gnvContext = (GNVArtifactContext)context; + Document doc = gnvContext.getConfig(); + Node artifactNode = this.getConfigurationFragment(doc); + + NodeList products = Config.getNodeSetXPath(artifactNode,"products/product"); + if (products != null){ + this.products = new HashMap<String, Product>(products.getLength()); + for (int i = 0; i < products.getLength(); i++){ + Node productNode = products.item(i); + String productName = Config.getStringXPath(productNode, "@name"); + NodeList parameterNodes = Config.getNodeSetXPath(productNode, "parameters/parameter"); + Collection<InputData> parameter = null; + if (parameterNodes != null){ + parameter = new ArrayList<InputData>(parameterNodes.getLength()); + for (int j = 0; j < parameterNodes.getLength(); j++){ + Node parameterNode = parameterNodes.item(j); + String name = Config.getStringXPath(parameterNode, "@name"); + String value = Config.getStringXPath(parameterNode, "@value"); + parameter.add(new DefaultInputData(name, value)); + } + } + Node artifactFactoryNode = Config.getNodeXPath(productNode, "artifact-factory"); + ArtifactFactory artifactFactory =new ArtifactFactoryUtilities().createArtitfactFactor(doc, artifactFactoryNode); + this.products.put(productName, new DefaultProduct(productName, parameter,artifactFactory)); + } + } + } + } + + protected Node getConfigurationFragment(Document document){ + log.debug("GNVArtifactBase.getConfigurationFragment"); + String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(XPATH_IDENTIFIER_REPLACE, this.name); + log.debug(xpathQuery); + return Config.getNodeXPath(document,xpathQuery); + } + + protected Document createDescibeOutput(CallMeta callMeta){ + log.debug("GNVArtifactBase.createDescibeOutput"); + Document document = XMLUtils.newDocument(); + Element rootNode = this.createRootNode(document); + this.createHeader(rootNode, document, "describe"); + this.createOutputs(rootNode, document); + this.createCurrentState(rootNode, document); + this.createReachableStates(rootNode, document); + this.createModel(rootNode, document); + this.createUserInterface(rootNode, document, callMeta); + + return document; + } + + protected Element createRootNode(Document document){ + Element rootNode = xmlUtilities.createArtifactElement(document,"result"); + document.appendChild(rootNode); + return rootNode; + } + + protected void createHeader(Element parent, Document document, String documentType){ + Element typeNode = xmlUtilities.createArtifactElement(document,"type"); + typeNode.setAttribute("name", documentType); + parent.appendChild(typeNode); + + Element uuidNode = xmlUtilities.createArtifactElement(document,"uuid"); + uuidNode.setAttribute("value", super.identifier); + parent.appendChild(uuidNode); + + Element hashNode = xmlUtilities.createArtifactElement(document,"hash"); + hashNode.setAttribute("value", this.hash()); + parent.appendChild(hashNode); + + + } + protected void createReachableStates(Element parent,Document document){ + Element stateNode = xmlUtilities.createArtifactElement(document,"reachable-states"); + if (this.products != null){ + Iterator<Product> products = this.products.values().iterator(); + while(products.hasNext()){ + Product product = products.next(); + Element currentNode = xmlUtilities.createArtifactElement(document,"state"); + currentNode.setAttribute("name", product.getName()); + currentNode.setAttribute("description", product.getName()); + stateNode.appendChild(currentNode); + } + } + parent.appendChild(stateNode); + } + + protected void createCurrentState(Element parent, Document document){ + Element stateNode = xmlUtilities.createArtifactElement(document,"state"); + stateNode.setAttribute("name", "choose-product"); + stateNode.setAttribute("description", "Initialer Stand Auswahl des products"); + parent.appendChild(stateNode); + } + + + protected void createModel(Element parent, Document document){ + Element modelNode = xmlUtilities.createArtifactElement(document,"model"); + + Element inputNode = xmlUtilities.createArtifactElement(document,"input"); + inputNode.setAttribute("name", "product"); + inputNode.setAttribute("type", "String"); + modelNode.appendChild(inputNode); + + parent.appendChild(modelNode); + } + + protected void createUserInterface(Element parent, Document document, CallMeta callMeta){ + Element uiNode = xmlUtilities.createArtifactElement(document,"ui"); + ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); + Node dynamic = xmlUtilities.createArtifactElement(document, "dynamic"); + uiNode.appendChild(dynamic); + if (this.products != null && !this.products.isEmpty()){ + Element selectNode = createSelectBox(document,callMeta); + + dynamic.appendChild(selectNode); + } + + parent.appendChild(uiNode); + } + /** + * @param document + * @param xmlUtilities + * @return + */ + private Element createSelectBox(Document document, CallMeta callMeta) { + + ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); + String selectboxName = "product"; + Iterator<Product> it = this.products.values().iterator(); + Element selectNode = xmlUtilities.createXFormElement(document,"select1"); + selectNode.setAttribute("ref", selectboxName); + + + Element lableNode = xmlUtilities.createXFormElement(document, "label"); + lableNode.setTextContent(RessourceFactory.getInstance().getRessource(callMeta.getLanguages(), selectboxName, selectboxName)); + selectNode.appendChild(lableNode); + Element choiceNode = xmlUtilities.createXFormElement(document, "choices"); + selectNode.appendChild(choiceNode); + while (it.hasNext()){ + Product p = it.next(); + Element itemNode = xmlUtilities.createXFormElement(document, "item"); + + if (this.current != null && this.current.getName().equals(p.getName())){ + itemNode.setAttribute("selected", "true"); + } + + Element choiceLableNode = xmlUtilities.createXFormElement(document, "label"); + choiceLableNode.setTextContent(RessourceFactory.getInstance().getRessource(callMeta.getLanguages(), p.getName(), p.getName())); + itemNode.appendChild(choiceLableNode); + + Element choicValueNode = xmlUtilities.createXFormElement(document, "value"); + choicValueNode.setTextContent(p.getName()); + itemNode.appendChild(choicValueNode); + + choiceNode.appendChild(itemNode); + + } + return selectNode; + } + + protected void createOutputs(Element parent, Document document){ + log.debug("GNVArtifactBase.createOutputs"); + Element outputsNode = xmlUtilities.createArtifactElement(document,"outputs"); + parent.appendChild(outputsNode); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/product/DefaultProduct.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,58 @@ +/** + * + */ +package de.intevation.gnv.artifacts.fis.product; + +import java.util.Collection; + +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.gnv.transition.InputData; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class DefaultProduct implements Product { + + private String name = null; + + private Collection<InputData> parameter = null; + + private ArtifactFactory artifactFactory = null; + + + /** + * Constructor + * @param name + * @param parameter + * @param artifactFactory + */ + public DefaultProduct(String name, Collection<InputData> parameter, ArtifactFactory artifactFactory) { + super(); + this.name = name; + this.parameter = parameter; + this.artifactFactory = artifactFactory; + } + + /** + * @see de.intevation.gnv.artifacts.fis.product.Product#getName() + */ + public String getName() { + return this.name; + } + + /** + * @see de.intevation.gnv.artifacts.fis.product.Product#getParameter() + */ + public Collection<InputData> getParameter() { + return this.parameter; + } + + /** + * @see de.intevation.gnv.artifacts.fis.product.Product#getArtifactFactory() + */ + public ArtifactFactory getArtifactFactory() { + return this.artifactFactory; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/fis/product/Product.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,21 @@ +/** + * + */ +package de.intevation.gnv.artifacts.fis.product; + +import java.io.Serializable; +import java.util.Collection; + +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.gnv.transition.InputData; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface Product extends Serializable{ + + public String getName(); + public Collection<InputData> getParameter(); + public ArtifactFactory getArtifactFactory(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/ressource/RessourceFactory.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,83 @@ +/** + * + */ +package de.intevation.gnv.artifacts.ressource; + +import java.util.MissingResourceException; +import java.util.ResourceBundle; + +import org.apache.log4j.Logger; + +import de.intevation.artifacts.PreferredLocale; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class RessourceFactory { + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(RessourceFactory.class); + + /** + * The singleton Instance of this Factory. + */ + private static RessourceFactory instance = null; + + private static String RESSOURCE_BASE_ID = "artifact.ressource.dir"; + + private static String ressourceName = "artifactMessages"; + private static String DEFAULT_DIR = "lang"; + + private String ressourceDir = null; + + /** + * Basic-Constructor of this Class + */ + private RessourceFactory() { + super(); + ressourceDir = System.getProperty(RESSOURCE_BASE_ID, DEFAULT_DIR); + } + + /** + * This Method provides an singleton Instance of this Class. + * @return an singleton Instance of this Class + */ + public static synchronized RessourceFactory getInstance(){ + if (instance == null){ + instance = new RessourceFactory(); + } + return instance; + } + + /** + * Deliveres the translated Value for an Key to an given Language + * @param locale The choosen locale + * @param key the key + * @param defaultValue the Value that should be returned. + * @return the translated Value + */ + public String getRessource( + PreferredLocale [] preferredLocales, + String key, + String defaultValue + ) { + if (key == null || preferredLocales.length == 0) { + return defaultValue; + } + + try { + ResourceBundle rb = ResourceBundle.getBundle( + ressourceDir + "/" + ressourceName, + preferredLocales[0].getLocale()); + + return rb.getString(key); + } + catch (MissingResourceException mre) { + log.warn(mre.getLocalizedMessage()); + return defaultValue; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/ChartFactory.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,390 @@ +/** + * Title: ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $ + * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $ + * created by: Stefan Blume (blume) + * erstellt am: 06.12.2007 + * Copyright: con terra GmbH, 2005 + * + * modified by: $Author: blume $ + * modified on: $Date: 2007/12/21 12:31:15 $ + * Version: $Revision: 1.8 $ + * TAG: $Name: $ + * locked from: $Locker: $ + * CVS State: $State: Exp $ + * Project: $ProjectName$ + */ +package de.intevation.gnv.chart; + +import java.awt.Color; +import java.awt.Font; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Collection; +import java.util.Date; +import java.util.Iterator; + +import org.apache.log4j.Logger; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.AxisLocation; +import org.jfree.chart.axis.DateAxis; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.axis.NumberTickUnit; +import org.jfree.chart.encoders.KeypointPNGEncoderAdapter; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.plot.XYPlot; +import org.jfree.chart.renderer.xy.StandardXYItemRenderer; +import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; +import org.jfree.data.time.Minute; +import org.jfree.data.time.TimeSeries; +import org.jfree.data.time.TimeSeriesCollection; +import org.jfree.data.xy.XYDataset; +import org.jfree.ui.RectangleInsets; + +import de.intevation.gnv.chart.exception.TechnicalChartException; +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; + +/** + * The class <code>ChartFactory</code> fulfills the following purposes: + * <ol> + * <li></li> + * </ol> + * + * @author blume + * @version 1.0 + * @serial 1.0 + * @see + * @since 06.12.2007 17:25:59 + */ +public class ChartFactory { + + /** + * Default Logging instance + */ + private static Logger sLogger = Logger.getLogger(ChartFactory.class); + private static boolean sDebug = sLogger.isDebugEnabled(); + + + public synchronized void createSimpleTimeSeriesChart(ChartLabels pLabels, ChartStyle pStyle, Collection<KeyValueDescibeData> parameters, Collection<KeyValueDescibeData> measurements, OutputStream outputStream, Collection<Result> resultSet) throws IOException, TechnicalChartException { + if (sDebug) + sLogger.debug("createSimpleTimeSeriesChart()"); + int lLowerLevel = Integer.MIN_VALUE; + int lUpperLevel = Integer.MAX_VALUE; + if (pStyle.isUseUpperDataLevel() + && pStyle.getUpperLevel() < Integer.MAX_VALUE) { + lUpperLevel = pStyle.getUpperLevel(); + } + if (pStyle.isUseLowerDataLevel() + && pStyle.getLowerLevel() > Integer.MIN_VALUE) { + lLowerLevel = pStyle.getLowerLevel(); + } + if (sDebug) + sLogger.debug(" vor createDataset()"); + XYDataset lSet = this.createDataset(resultSet, lUpperLevel, + lLowerLevel,parameters,measurements); + if (sDebug) + sLogger.debug(" nach createDataset()"); + final Color[] color = {Color.black, Color.red, Color.green, Color.blue}; + DateAxis domain = new DateAxis(pLabels.getDomainAxisLabel()); + NumberAxis axis; + StandardXYItemRenderer renderer = new StandardXYItemRenderer(); + XYPlot plot = new XYPlot(); + //Global settings + + plot.setOrientation(PlotOrientation.VERTICAL); + plot.setBackgroundPaint(Color.lightGray); + plot.setDomainGridlinePaint(Color.white); + plot.setRangeGridlinePaint(Color.white); + plot.setAxisOffset(new RectangleInsets(5.0,5.0,5.0,5.0)); + //plot.getRangeAxis().setFixedDimension(10.0); + plot.setDomainAxis(domain); + plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT); + if (parameters.size() == 1) { + KeyValueDescibeData parameter = parameters.iterator().next(); + axis = new NumberAxis(parameter.getValue()); + if(parameter.getValue().contains("richtung")){ + NumberAxis axis1 = new NumberAxis( + ((String) parameter.getValue()));//,new Range(0.0,360.0)); + axis1.setTickUnit(new NumberTickUnit(30.0)); + axis1.setUpperBound(360.0); + axis1.setLowerBound(0.0); + //axis1.setDisplayRange(0.0,360.0); + plot.setRangeAxis( axis1); + }else{ + axis.setFixedDimension(10.0); + axis.setAutoRangeIncludesZero(false); + plot.setRangeAxis(axis); + } + axis.configure(); + plot.setRangeAxisLocation( AxisLocation.BOTTOM_OR_LEFT); + plot.setRenderer(renderer); + plot.setDataset(lSet); + } else { + // Individual settings for different parameters + for (int i = 0; i < lSet.getSeriesCount(); i++) { + + plot.setDataset(i, getDataset((TimeSeriesCollection) lSet, i)); + Color mColor=color[i % color.length]; // zyklische Farbvergabe + mColor = color[0]; + // if ( pParameterId.length==1){ + + if(((String) lSet.getSeriesKey(i)).contains("richtung")){ + NumberAxis axis1 = new NumberAxis(((String) lSet.getSeriesKey(i)));//,new Range(0.0,360.0)); + axis1.setTickUnit(new NumberTickUnit(30.0)); + //axis1.setDisplayRange(0.0,360.0); + axis1.setLabelPaint(mColor); + axis1.setTickLabelPaint(mColor); + axis1.setUpperBound(360.0); + axis1.setLowerBound(0.0); + plot.setRangeAxis(i, axis1); + + + } + else { + axis = new NumberAxis((String) lSet.getSeriesKey(i)); + axis.setFixedDimension(10.0); + axis.setAutoRangeIncludesZero(false); + axis.setLabelPaint(mColor); + axis.setTickLabelPaint(mColor); + plot.setRangeAxis(i, axis); + axis.configure(); + } + if (i % 2 != 0) + plot.setRangeAxisLocation(i, AxisLocation.BOTTOM_OR_RIGHT); + else + plot.setRangeAxisLocation(i, AxisLocation.BOTTOM_OR_LEFT); + plot.mapDatasetToRangeAxis(i, i); + // } + renderer = new StandardXYItemRenderer(); + renderer.setSeriesPaint(i, mColor); + // renderer.setSeriesStroke(i,stroke[j]); + plot.setRenderer(i, renderer); + } + } + JFreeChart chart = new JFreeChart( + pLabels.getTitle(), + new Font ("SansSerif",Font.BOLD,24), + plot,true); + + + setStyle(chart, pStyle); + configureRenderingOptions(chart); + if (sDebug) + sLogger.debug(" vor encodeChart()"); + + encodeChart(chart, pStyle, outputStream); + } + private static XYDataset getDataset(TimeSeriesCollection T, int pIndex){ //throws TechnicalChartException{ + //if (T.getSeriesCount() < pIndex) throw TechnicalChartException(); + TimeSeriesCollection TSC = new TimeSeriesCollection(); + TSC.addSeries(T.getSeries(pIndex)); + return (XYDataset) TSC; + } + + private void configureRenderingOptions(JFreeChart pJfreechart) { + org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = ((XYPlot) pJfreechart + .getPlot()).getRenderer(); + if (xyitemrenderer instanceof XYLineAndShapeRenderer) { + XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyitemrenderer; + xylineandshaperenderer.setBaseShapesVisible(true); + xylineandshaperenderer.setBaseShapesFilled(true); + } + } + + private void setStyle(JFreeChart pJfreechart, ChartStyle pStyle) { + if (sDebug) + sLogger.debug("setStyle()"); + pJfreechart.setBackgroundPaint(pStyle.getCanvasColor()); + XYPlot xyplot = (XYPlot) pJfreechart.getPlot(); + xyplot.setBackgroundPaint(pStyle.getPlotBackgroundColor()); + xyplot.setDomainGridlinePaint(pStyle.getDomainGridlineColor()); + xyplot.setRangeGridlinePaint(pStyle.getRangeGridlineColor()); + + Insets lOffsets = pStyle.getAxisOffset(); + RectangleInsets lRectangleInsets = new RectangleInsets(lOffsets.mUpper, + lOffsets.mLeft, lOffsets.mLower, lOffsets.mRight); + xyplot.setAxisOffset(lRectangleInsets); + xyplot.setDomainCrosshairVisible(pStyle.isDomainCrosshairVisible()); + xyplot.setRangeCrosshairVisible(pStyle.isRangeCrosshairVisible()); + + } + + + private TimeSeries createTimeSeries(String pTimeSeriesName, Collection<Result> resultSet, + int lUpperCut, int lLowerCut,int pStart,int pEnd, Date dStart, Date dEnd) throws TechnicalChartException{ + if (sDebug) + sLogger.debug("createTimeSeries()"); + Result lRow0, lRow1; + + Date lDate=null, lDate0=null; + + TimeSeries lTimeseries = new TimeSeries(pTimeSeriesName, + org.jfree.data.time.Minute.class); + try { + long maxGap=0, lDateDiff=0; + double lValue=0; + + + int i = 0; + Iterator<Result> resultIterator = resultSet.iterator(); + while (resultIterator.hasNext()){ + Result lRow = resultIterator.next(); + if (i >= pStart+1 && i <= pEnd){ + if (i == pStart+1){ + lRow0 = lRow;// + + // Handle Gaps > 0.5% timeserieslength, i.e do not draw here + // +TODO mache maxGap variabel über diagram options + maxGap = (dEnd.getTime() - dStart.getTime()) / 200; // 0,5 prozent der Länge + if (maxGap < 3600000) maxGap=3600010; + if (maxGap <(dEnd.getTime() - dStart.getTime())/(pEnd-pStart)) + maxGap = (dEnd.getTime() - dStart.getTime())/(pEnd-pStart) + 1000; + + if (sDebug) + sLogger.debug("MaxGap : "+maxGap/1000+" Länge : "+(dEnd.getTime() - dStart.getTime())/1000+ + "Intervall "+(dEnd.getTime() - dStart.getTime())/(pEnd-pStart)/1000); + lDate = lRow0.getDate("XORDINATE"); + lDate0 = lDate; + lValue = lRow0.getDouble("YORDINATE"); + if (lValue > lLowerCut && lValue < lUpperCut){ + //lTimeseries.addOrUpdate(new Minute(lDate), lValue); + lTimeseries.add(new Minute(lDate), lValue); + } + } + //for (int i = pStart+1; i <= pEnd; i++) { + lRow1 =lRow; + lDate = lRow1.getDate("XORDINATE"); + lValue = lRow1.getDouble("YORDINATE"); + lDateDiff = lDate.getTime() - lDate0.getTime(); + if (lDateDiff > maxGap) { + // add 1 minute in millisecs to left hand side Date + // and insert Dummy to break line + lDate0.setTime((lDate0.getTime() + 60000)); + lTimeseries.addOrUpdate(new Minute(lDate0), null); + lTimeseries.addOrUpdate(new Minute(lDate), lValue); + //lTimeseries.add(new Minute(lDate0), null); + } else if (lDateDiff == 0) { + if (sDebug) + sLogger.debug("Datediff: "+lDateDiff+" bei index : "+i+" Datum : "+lDate+" "+lDate0); + } + else if (lValue > lLowerCut && lValue < lUpperCut) { + lTimeseries.addOrUpdate(new Minute(lDate), lValue); + //lTimeseries.add(new Minute(lDate), lValue); + } + lRow0 = lRow1; + lDate0 = lDate; + }else if (i > pEnd){ + return lTimeseries; + } + i++; + } + + + } catch (OutOfMemoryError e) { + sLogger.error(e.getMessage(), e); + return lTimeseries; + + } catch (Exception e) { //TechnicalChartException + sLogger.error(e.getMessage(), e); + } + finally { + } + + return lTimeseries; + } + + private XYDataset createDataset(Collection<Result> resultSet, + int lUpperCut, int lLowerCut,Collection<KeyValueDescibeData> parameters, Collection<KeyValueDescibeData> measurements) throws TechnicalChartException { + + TimeSeriesCollection lTimeSeriesCollection = new TimeSeriesCollection(); + try{ + Date dStart = null, dEnd= null; + String break1, break2, break3; + int mStart = 0; + int mEnd = 0; + + + Iterator<Result> resultIterator = resultSet.iterator(); + if (resultIterator.hasNext()){ + Result row = resultIterator.next(); + + break1 = row.getString("GROUP1"); // 2 + break2 = row.getString("GROUP2"); //3 + break3 = row.getString("GROUP3"); // 4 + dStart = row.getDate("XORDINATE"); + int i = 1; + while (resultIterator.hasNext()) { + row = resultIterator.next(); + if (!break1.equals(row.getString("GROUP1")) + || !break2 .equals(row.getString("GROUP2")) + || !break3.equals(row.getString("GROUP3"))){ + String mTimeSeriesName = findValueTitle(parameters,break1)+" "+ + findValueTitle(measurements,break2)+"m"; + + lTimeSeriesCollection.addSeries(createTimeSeries(mTimeSeriesName, + resultSet, lUpperCut, lLowerCut, mStart, mEnd, dStart, dEnd)); + mStart = i; + dStart = row.getDate("XORDINATE"); + break1 = row.getString("GROUP1"); + break2 = row.getString("GROUP2"); //3 + break3 = row.getString("GROUP3"); // 4 + + } + mEnd = i; + dEnd = row.getDate("XORDINATE"); + i = i + 1; + } + + String mTimeSeriesName = findValueTitle(parameters,break1)+" "+ + findValueTitle(measurements,break2)+"m"; + lTimeSeriesCollection.addSeries(createTimeSeries(mTimeSeriesName, + resultSet, lUpperCut, lLowerCut, mStart, mEnd, dStart, dEnd)); + } + } + catch (Exception e){ + sLogger.error(e.getMessage(), e); + } + finally{ + } + return lTimeSeriesCollection; + } + + + + private void encodeChart(JFreeChart pChart, ChartStyle pStyle, OutputStream outputStream) + throws IOException { + if (sDebug) + sLogger.debug("encodeChart()"); + KeypointPNGEncoderAdapter lEncoder = new KeypointPNGEncoderAdapter(); + lEncoder.setEncodingAlpha(true); + + int lWidth = (int) pStyle.getChartSize().getWidth(); + int lHeight = (int) pStyle.getChartSize().getHeight(); + + BufferedImage lImage = pChart.createBufferedImage(lWidth, lHeight, + BufferedImage.BITMASK, null); + + lEncoder.encode(lImage, outputStream); + +} + + private String findValueTitle(Collection<KeyValueDescibeData> values, String pMmtId){ + int id = 0; + try { + id = Integer.parseInt(pMmtId); + } catch (NumberFormatException e) { + sLogger.warn(e,e); + return pMmtId; + } + + Iterator<KeyValueDescibeData> it = values.iterator(); + while(it.hasNext()){ + KeyValueDescibeData data = it.next(); + if (id ==Integer.parseInt(data.getKey())){ + return data.getValue(); + } + } + return ""; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/ChartLabels.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,54 @@ +/* Copyright (C) 2007 con terra GmbH (http://www.conterra.de) + * All rights reserved + * + * $Id: ChartLabels.java,v 1.1 2007/12/10 13:57:13 drewnak Exp $ + * + * created by: drewnak + * created at : 10.12.2007 + * created at : 11:48:39 + * + * modified by: $Author: drewnak $ + * modified at: $Date: 2007/12/10 13:57:13 $ + */ +package de.intevation.gnv.chart; + +/** + * @author drewnak + * @author Tim Englich <tim.englich@intevation.de> + * Changes and codecleanup + */ +public class ChartLabels { + /** + * + */ + private String title; + /** + * + */ + private String domainAxisLabel; + + /** + * Constructor + * @param title + * @param domainAxisLabel + */ + public ChartLabels(String title, String domainAxisLabel) { + this.title = title; + this.domainAxisLabel = domainAxisLabel; + } + + /** + * @return the title + */ + public String getTitle() { + return this.title; + } + + + /** + * @return the timeAxisLabel + */ + public String getDomainAxisLabel() { + return this.domainAxisLabel; + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/ChartStyle.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,169 @@ +/* Copyright (C) 2007 con terra GmbH (http://www.conterra.de) + * All rights reserved + * + * $Id: ChartStyle.java,v 1.2 2007/12/21 12:31:15 blume Exp $ + * + * created by: drewnak + * created at : 10.12.2007 + * created at : 13:07:44 + * + * modified by: $Author: blume $ + * modified at: $Date: 2007/12/21 12:31:15 $ + */ +package de.intevation.gnv.chart; + +import java.awt.Color; +import java.awt.Dimension; + +/** + * @author drewnak + */ +public class ChartStyle { + + private Color mCanvasColor; + private Color mPlotBackgroundColor; + private Color mDomainGridlineColor; + private Color mRangeGridlineColor; + private boolean mDomainCrosshairVisible; + private boolean mRangeCrosshairVisible; + private Insets mAxisOffset; + private boolean mOverrideDefaultChartWidth = false; + private Dimension mChartSize; + + private boolean mUseUpperDataLevel = false; + private boolean mUseLowerDataLevel = false; + private int mUpperLevel; + private int mLowerLevel; + + /** + * @param pCanvasColor + * @param pPlotBackgroundColor + * @param pDomainGridlineColor + * @param pRangeGridlineColor + * @param pDomainCrosshairVisible + * @param pRangeCrosshairVisible + * @param pAxisOffset + */ + public ChartStyle(Color pCanvasColor, Color pPlotBackgroundColor, Color pDomainGridlineColor, + Color pRangeGridlineColor, boolean pDomainCrosshairVisible, boolean pRangeCrosshairVisible, + Insets pAxisOffset, Dimension pChartSize) { + super(); + mCanvasColor = pCanvasColor; + mPlotBackgroundColor = pPlotBackgroundColor; + mDomainGridlineColor = pDomainGridlineColor; + mRangeGridlineColor = pRangeGridlineColor; + mDomainCrosshairVisible = pDomainCrosshairVisible; + mRangeCrosshairVisible = pRangeCrosshairVisible; + mAxisOffset = pAxisOffset; + mChartSize = pChartSize; + } + + public Color getCanvasColor() { + return mCanvasColor; + } + + public void setCanvasColor(Color pCanvasColor) { + mCanvasColor = pCanvasColor; + } + + public Color getDomainGridlineColor() { + return mDomainGridlineColor; + } + + public void setDomainGridlineColor(Color pDomainGridlineColor) { + mDomainGridlineColor = pDomainGridlineColor; + } + + public Color getRangeGridlineColor() { + return mRangeGridlineColor; + } + + public void setRangeGridlineColor(Color pRangeGridlineColor) { + mRangeGridlineColor = pRangeGridlineColor; + } + + public boolean isDomainCrosshairVisible() { + return mDomainCrosshairVisible; + } + + public void setDomainCrosshairVisible(boolean pDomainCrosshairVisible) { + mDomainCrosshairVisible = pDomainCrosshairVisible; + } + + public boolean isRangeCrosshairVisible() { + return mRangeCrosshairVisible; + } + + public void setRangeCrosshairVisible(boolean pRangeCrosshairVisible) { + mRangeCrosshairVisible = pRangeCrosshairVisible; + } + + public Insets getAxisOffset() { + return mAxisOffset; + } + + public void setAxisOffset(Insets pAxisOffset) { + mAxisOffset = pAxisOffset; + } + + public Color getPlotBackgroundColor() { + return mPlotBackgroundColor; + } + + public void setPlotBackgroundColor(Color pPlotBackgroundColor) { + mPlotBackgroundColor = pPlotBackgroundColor; + } + + public Dimension getChartSize() { + return mChartSize; + } + + public void setChartSize(Dimension pChartSize) { + mChartSize = pChartSize; + } + + public boolean isOverrideDefaultChartWidth() { + return mOverrideDefaultChartWidth; + } + + public void setOverrideDefaultChartWidth(boolean pOverrideDefaultChartWidth) { + mOverrideDefaultChartWidth = pOverrideDefaultChartWidth; + } + + + public void setNewChartWidth(int pNewChartWidth) { + mChartSize.setSize(pNewChartWidth, mChartSize.getHeight()); + } + + public boolean isUseUpperDataLevel() { + return mUseUpperDataLevel; + } + + public void setUseUpperDataLevel(boolean pUseUpperDataLevel) { + mUseUpperDataLevel = pUseUpperDataLevel; + } + + public boolean isUseLowerDataLevel() { + return mUseLowerDataLevel; + } + + public void setUseLowerDataLevel(boolean pUseLowerDataLevel) { + mUseLowerDataLevel = pUseLowerDataLevel; + } + + public int getUpperLevel() { + return mUpperLevel; + } + + public void setUpperLevel(int pUpperLevel) { + mUpperLevel = pUpperLevel; + } + + public int getLowerLevel() { + return mLowerLevel; + } + + public void setLowerLevel(int pLowerLevel) { + mLowerLevel = pLowerLevel; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/HorizontalProfileChartFactory.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,112 @@ +/** + * Title: ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $ + * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $ + * created by: Stefan Blume (blume) + * erstellt am: 06.12.2007 + * Copyright: con terra GmbH, 2005 + * + * modified by: $Author: blume $ + * modified on: $Date: 2007/12/21 12:31:15 $ + * Version: $Revision: 1.8 $ + * TAG: $Name: $ + * locked from: $Locker: $ + * CVS State: $State: Exp $ + * Project: $ProjectName$ + */ +package de.intevation.gnv.chart; + +import java.util.Collection; +import java.util.Iterator; + +import org.apache.log4j.Logger; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.data.xy.XYSeries; + +import de.intevation.gnv.chart.exception.TechnicalChartException; +import de.intevation.gnv.geobackend.base.Result; + +/** + * + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class HorizontalProfileChartFactory extends VerticalProfileChartFactory { + + /** + * Default Logging instance + */ + private static Logger sLogger = Logger.getLogger(HorizontalProfileChartFactory.class); + private static boolean sDebug = sLogger.isDebugEnabled(); + + + public HorizontalProfileChartFactory(){ + super(); + super.plotOrientation = PlotOrientation.VERTICAL; + } + + + /** + * + * @param seriesName + * @param resultSet + * @param lUpperCut + * @param lLowerCut + * @param pStart + * @param pEnd + * @return + * @throws TechnicalChartException + */ + @Override + protected XYSeries createXYSeries(String seriesName, Collection<Result> resultSet, + int lUpperCut, int lLowerCut,int pStart,int pEnd) throws TechnicalChartException{ + if (sDebug) + sLogger.debug("createXYSeries()"); + XYSeries series = new XYSeries(seriesName); + try { + double xValue=0; + double yValue=0; + double xStartCoord = 0; + double yStartCoord = 0; + int i = 0; + Iterator<Result> resultIterator = resultSet.iterator(); + while (resultIterator.hasNext()){ + Result lRow = resultIterator.next(); + if (i >= pStart && i <= pEnd ){ + if (xStartCoord == 0 && yStartCoord == 0){ + xStartCoord = lRow.getDouble("XORDINATE_XCOORD"); + yStartCoord = lRow.getDouble("XORDINATE_YCOORD"); + } + + double currentXCoord = lRow.getDouble("XORDINATE_XCOORD");; + double currentYCoord = lRow.getDouble("XORDINATE_YCOORD"); + + xValue = this.calculateDistance(xStartCoord, yStartCoord, currentXCoord, currentYCoord); + + yValue = lRow.getDouble("YORDINATE"); + series.add(xValue, yValue); + sLogger.debug(seriesName+" Added Value "+xValue+" / "+yValue); + + }else if (i > pEnd){ + return series; + } + i++; + } + } catch (OutOfMemoryError e) { + sLogger.error(e.getMessage(), e); + return series; + + } catch (Exception e) { //TechnicalChartException + sLogger.error(e.getMessage(), e); + } + finally { + } + + return series; + } + + private double calculateDistance(double xStartCoord, double yStartCoord, double currentXCoord, double currentYCoord){ + double dx = xStartCoord - currentXCoord; + double dy = yStartCoord - currentYCoord; + return Math.sqrt((dx*dx)+(dy*dy)); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/Insets.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,33 @@ +/* Copyright (C) 2007 con terra GmbH (http://www.conterra.de) + * All rights reserved + * + * $Id: Insets.java,v 1.1 2007/12/10 13:57:13 drewnak Exp $ + * + * created by: drewnak + * created at : 10.12.2007 + * created at : 13:31:12 + * + * modified by: $Author: drewnak $ + * modified at: $Date: 2007/12/10 13:57:13 $ + */ +package de.intevation.gnv.chart; + +public class Insets { + public double mUpper; + public double mLower; + public double mLeft; + public double mRight; + /** + * @param pUpper + * @param pLower + * @param pLeft + * @param pRight + */ + public Insets(double pUpper, double pLeft, double pLower, double pRight) { + super(); + mUpper = pUpper; + mLower = pLower; + mLeft = pLeft; + mRight = pRight; + } +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/VerticalProfileChartFactory.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,328 @@ +/** + * Title: ChartFactory, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v 1.8 2007/12/21 12:31:15 blume Exp $ + * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/chart/ChartFactory.java,v $ + * created by: Stefan Blume (blume) + * erstellt am: 06.12.2007 + * Copyright: con terra GmbH, 2005 + * + * modified by: $Author: blume $ + * modified on: $Date: 2007/12/21 12:31:15 $ + * Version: $Revision: 1.8 $ + * TAG: $Name: $ + * locked from: $Locker: $ + * CVS State: $State: Exp $ + * Project: $ProjectName$ + */ +package de.intevation.gnv.chart; + +import java.awt.Color; +import java.awt.Font; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Collection; +import java.util.Iterator; + +import org.apache.log4j.Logger; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.AxisLocation; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.axis.NumberTickUnit; +import org.jfree.chart.encoders.KeypointPNGEncoderAdapter; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.plot.XYPlot; +import org.jfree.chart.renderer.xy.StandardXYItemRenderer; +import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; +import org.jfree.data.xy.XYDataset; +import org.jfree.data.xy.XYSeries; +import org.jfree.data.xy.XYSeriesCollection; +import org.jfree.ui.RectangleInsets; + +import de.intevation.gnv.chart.exception.TechnicalChartException; +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; + +/** + * + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class VerticalProfileChartFactory { + + /** + * Default Logging instance + */ + private static Logger sLogger = Logger.getLogger(VerticalProfileChartFactory.class); + private static boolean sDebug = sLogger.isDebugEnabled(); + protected PlotOrientation plotOrientation = PlotOrientation.HORIZONTAL; + + public synchronized void createProfileChart(ChartLabels pLabels, ChartStyle pStyle, Collection<KeyValueDescibeData> parameters, Collection<KeyValueDescibeData> measurements, OutputStream outputStream, Collection<Result> resultSet) throws IOException, TechnicalChartException { + if (sDebug) + sLogger.debug("createSimpleTimeSeriesChart()"); + int lLowerLevel = Integer.MIN_VALUE; + int lUpperLevel = Integer.MAX_VALUE; + if (pStyle.isUseUpperDataLevel() + && pStyle.getUpperLevel() < Integer.MAX_VALUE) { + lUpperLevel = pStyle.getUpperLevel(); + } + if (pStyle.isUseLowerDataLevel() + && pStyle.getLowerLevel() > Integer.MIN_VALUE) { + lLowerLevel = pStyle.getLowerLevel(); + } + if (sDebug) + sLogger.debug(" vor createDataset()"); + XYDataset lSet = this.createDataset(resultSet, lUpperLevel, + lLowerLevel,parameters,measurements); + if (sDebug) + sLogger.debug(" nach createDataset()"); + final Color[] color = {Color.black, Color.red, Color.green, Color.blue}; + NumberAxis domain = new NumberAxis(pLabels.getDomainAxisLabel()); + NumberAxis axis; + StandardXYItemRenderer renderer = new StandardXYItemRenderer(); + XYPlot plot = new XYPlot(); + //Global settings + + plot.setOrientation(plotOrientation); + plot.setBackgroundPaint(Color.lightGray); + plot.setDomainGridlinePaint(Color.white); + plot.setRangeGridlinePaint(Color.white); + plot.setAxisOffset(new RectangleInsets(5.0,5.0,5.0,5.0)); + //plot.getRangeAxis().setFixedDimension(10.0); + plot.setDomainAxis(domain); + plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT); + if (parameters.size() == 1) { + KeyValueDescibeData parameter = parameters.iterator().next(); + axis = new NumberAxis(parameter.getValue()); + if(parameter.getValue().contains("richtung")){ + NumberAxis axis1 = new NumberAxis( + ((String) parameter.getValue()));//,new Range(0.0,360.0)); + axis1.setTickUnit(new NumberTickUnit(30.0)); + axis1.setUpperBound(360.0); + axis1.setLowerBound(0.0); + //axis1.setDisplayRange(0.0,360.0); + plot.setRangeAxis( axis1); + }else{ + axis.setFixedDimension(10.0); + axis.setAutoRangeIncludesZero(false); + plot.setRangeAxis(axis); + } + axis.configure(); + plot.setRangeAxisLocation( AxisLocation.BOTTOM_OR_LEFT); + plot.setRenderer(renderer); + plot.setDataset(lSet); + } else { + // Individual settings for different parameters + for (int i = 0; i < lSet.getSeriesCount(); i++) { + + plot.setDataset(i, getDataset((XYSeriesCollection) lSet, i)); + Color mColor=color[i % color.length]; // zyklische Farbvergabe + mColor = color[0]; + // if ( pParameterId.length==1){ + + if(((String) lSet.getSeriesKey(i)).contains("richtung")){ + NumberAxis axis1 = new NumberAxis(((String) lSet.getSeriesKey(i)));//,new Range(0.0,360.0)); + axis1.setTickUnit(new NumberTickUnit(30.0)); + //axis1.setDisplayRange(0.0,360.0); + axis1.setLabelPaint(mColor); + axis1.setTickLabelPaint(mColor); + axis1.setUpperBound(360.0); + axis1.setLowerBound(0.0); + plot.setRangeAxis(i, axis1); + + + } + else { + axis = new NumberAxis((String) lSet.getSeriesKey(i)); + axis.setFixedDimension(10.0); + axis.setAutoRangeIncludesZero(false); + axis.setLabelPaint(mColor); + axis.setTickLabelPaint(mColor); + plot.setRangeAxis(i, axis); + axis.configure(); + } + if (i % 2 != 0) + plot.setRangeAxisLocation(i, AxisLocation.BOTTOM_OR_RIGHT); + else + plot.setRangeAxisLocation(i, AxisLocation.BOTTOM_OR_LEFT); + plot.mapDatasetToRangeAxis(i, i); + // } + renderer = new StandardXYItemRenderer(); + renderer.setSeriesPaint(i, mColor); + // renderer.setSeriesStroke(i,stroke[j]); + plot.setRenderer(i, renderer); + } + } + JFreeChart chart = new JFreeChart( + pLabels.getTitle(), + new Font ("SansSerif",Font.BOLD,24), + plot,true); + + + setStyle(chart, pStyle); + configureRenderingOptions(chart); + if (sDebug) + sLogger.debug(" vor encodeChart()"); + + encodeChart(chart, pStyle, outputStream); + } + private static XYDataset getDataset(XYSeriesCollection T, int pIndex){ //throws TechnicalChartException{ + //if (T.getSeriesCount() < pIndex) throw TechnicalChartException(); + XYSeriesCollection XYSC = new XYSeriesCollection(); + XYSC.addSeries(T.getSeries(pIndex)); + return (XYDataset) XYSC; + } + + private void configureRenderingOptions(JFreeChart pJfreechart) { + org.jfree.chart.renderer.xy.XYItemRenderer xyitemrenderer = ((XYPlot) pJfreechart + .getPlot()).getRenderer(); + if (xyitemrenderer instanceof XYLineAndShapeRenderer) { + XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) xyitemrenderer; + xylineandshaperenderer.setBaseShapesVisible(true); + xylineandshaperenderer.setBaseShapesFilled(true); + } + } + + private void setStyle(JFreeChart pJfreechart, ChartStyle pStyle) { + if (sDebug) + sLogger.debug("setStyle()"); + pJfreechart.setBackgroundPaint(pStyle.getCanvasColor()); + XYPlot xyplot = (XYPlot) pJfreechart.getPlot(); + xyplot.setBackgroundPaint(pStyle.getPlotBackgroundColor()); + xyplot.setDomainGridlinePaint(pStyle.getDomainGridlineColor()); + xyplot.setRangeGridlinePaint(pStyle.getRangeGridlineColor()); + + Insets lOffsets = pStyle.getAxisOffset(); + RectangleInsets lRectangleInsets = new RectangleInsets(lOffsets.mUpper, + lOffsets.mLeft, lOffsets.mLower, lOffsets.mRight); + xyplot.setAxisOffset(lRectangleInsets); + xyplot.setDomainCrosshairVisible(pStyle.isDomainCrosshairVisible()); + xyplot.setRangeCrosshairVisible(pStyle.isRangeCrosshairVisible()); + + } + + + protected XYSeries createXYSeries(String seriesName, Collection<Result> resultSet, + int lUpperCut, int lLowerCut,int pStart,int pEnd) throws TechnicalChartException{ + if (sDebug) + sLogger.debug("createXYSeries()"); + XYSeries series = new XYSeries(seriesName); + try { + double xValue=0; + double yValue=0; + int i = 0; + Iterator<Result> resultIterator = resultSet.iterator(); + while (resultIterator.hasNext()){ + Result lRow = resultIterator.next(); + if (i >= pStart && i <= pEnd ){ + xValue = lRow.getDouble("XORDINATE"); + yValue = lRow.getDouble("YORDINATE"); + series.add(xValue, yValue); + sLogger.debug(seriesName+" Added Value "+xValue+" / "+yValue); + + }else if (i > pEnd){ + return series; + } + i++; + } + } catch (OutOfMemoryError e) { + sLogger.error(e.getMessage(), e); + return series; + + } catch (Exception e) { //TechnicalChartException + sLogger.error(e.getMessage(), e); + } + finally { + } + + return series; + } + + private XYDataset createDataset(Collection<Result> resultSet, + int lUpperCut, int lLowerCut,Collection<KeyValueDescibeData> parameters, Collection<KeyValueDescibeData> measurements) throws TechnicalChartException { + + XYSeriesCollection xyDataset = new XYSeriesCollection(); + + try{ + String break1, break2, break3; + int mStart = 0; + int mEnd = 0; + + + Iterator<Result> resultIterator = resultSet.iterator(); + if (resultIterator.hasNext()){ + // Row row = new Row(sArrayStrLine); + Result row = resultIterator.next(); + + break1 = row.getString("GROUP1"); // 2 + break2 = row.getString("GROUP2"); //3 + break3 = row.getString("GROUP3"); // 4 + int i = 1; + while (resultIterator.hasNext()) { + row = resultIterator.next(); + if (!break1.equals(row.getString("GROUP1")) + || !break2 .equals(row.getString("GROUP2")) + || !break3.equals(row.getString("GROUP3"))){ + String seriesName = findValueTitle(parameters,break1)+" "+ + findValueTitle(measurements,break2); + sLogger.debug("Neuer Datensatz "+seriesName+ "von Datensätzen "+mStart+" / "+mEnd); + xyDataset.addSeries(createXYSeries(seriesName, + resultSet, lUpperCut, lLowerCut, mStart, mEnd)); + mStart = i; + + break1 = row.getString("GROUP1"); + break2 = row.getString("GROUP2"); //3 + break3 = row.getString("GROUP3"); // 4 + + } + mEnd = i; + //mEnd ++; + i = i + 1; + } + + String seriesName = findValueTitle(parameters,break1)+" "+ + findValueTitle(measurements,break2); + sLogger.debug("Neuer Datensatz "+seriesName+ "von Datensätzen "+mStart+" / "+mEnd); + xyDataset.addSeries(createXYSeries(seriesName, + resultSet, lUpperCut, lLowerCut, mStart, mEnd)); + } + } + catch (Exception e){ + sLogger.error(e.getMessage(), e); + } + finally{ + } + return xyDataset; + } + + + + private void encodeChart(JFreeChart pChart, ChartStyle pStyle, OutputStream outputStream) + throws IOException { + if (sDebug) + sLogger.debug("encodeChart()"); + KeypointPNGEncoderAdapter lEncoder = new KeypointPNGEncoderAdapter(); + lEncoder.setEncodingAlpha(true); + + int lWidth = (int) pStyle.getChartSize().getWidth(); + int lHeight = (int) pStyle.getChartSize().getHeight(); + + BufferedImage lImage = pChart.createBufferedImage(lWidth, lHeight, + BufferedImage.BITMASK, null); + + lEncoder.encode(lImage, outputStream); + +} + + private String findValueTitle(Collection<KeyValueDescibeData> values, String id){ + if (values != null){ + Iterator<KeyValueDescibeData> it = values.iterator(); + while(it.hasNext()){ + KeyValueDescibeData data = it.next(); + if (id.equals(data.getKey())){ + return data.getValue(); + } + } + } + return id; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/chart/exception/TechnicalChartException.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,47 @@ +/** + * + */ +package de.intevation.gnv.chart.exception; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class TechnicalChartException extends Exception { + + /** + * The UID of this Class + */ + private static final long serialVersionUID = -5325863742368006109L; + + /** + * Constructor + */ + public TechnicalChartException() { + } + + /** + * Constructor + * @param message + */ + public TechnicalChartException(String message) { + super(message); + } + + /** + * Constructor + * @param cause + */ + public TechnicalChartException(Throwable cause) { + super(cause); + } + + /** + * Constructor + * @param message + * @param cause + */ + public TechnicalChartException(String message, Throwable cause) { + super(message, cause); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,54 @@ +/** + * + */ +package de.intevation.gnv.profile.horizontal; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; + +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.artifacts.CallContext; +import de.intevation.gnv.artifacts.GNVArtifactBase; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class HorizontalProfileArtifact extends GNVArtifactBase { + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(HorizontalProfileArtifact.class); + /** + * + */ + private static final long serialVersionUID = -721831166719594662L; + + /** + * Constructor + */ + public HorizontalProfileArtifact(){ + super(); + log.debug("HorizontalProfileArtifact.Constructor"); + this.name = "horizontalProfile"; + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object) + */ + @Override + public Document describe(CallContext context) { + log.debug("HorizontalProfileArtifact.describe"); + return super.createDescibeOutput(context.getMeta()); + } + + /** + * @see de.intevation.gnv.artifacts.GNVArtifactBase#setup(java.lang.String, de.intevation.artifacts.ArtifactFactory, java.lang.Object) + */ + @Override + public void setup(String identifier, ArtifactFactory factory, Object context) { + log.debug("HorizontalProfileArtifact.setup"); + super.setup(identifier,factory,context); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileInstantaneousPointArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,31 @@ +/** + * + */ +package de.intevation.gnv.profile.horizontal; + +import org.apache.log4j.Logger; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class HorizontalProfileInstantaneousPointArtifact extends HorizontalProfileArtifact { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(HorizontalProfileInstantaneousPointArtifact.class); + + /** + * The UID of this Class. + */ + private static final long serialVersionUID = -6700816287500004553L; + + /** + * Constructor + */ + public HorizontalProfileInstantaneousPointArtifact(){ + super(); + log.debug("HorizontalProfileInstantaneousPointArtifact.Constructor"); + super.name = super.name+ "InstantaneousPoint"; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/horizontal/HorizontalProfileMeshArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,32 @@ +/** + * + */ +package de.intevation.gnv.profile.horizontal; + +import org.apache.log4j.Logger; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class HorizontalProfileMeshArtifact extends HorizontalProfileArtifact { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(HorizontalProfileMeshArtifact.class); + + + /** + * The UID of this class + */ + private static final long serialVersionUID = -8291547966693867205L; + + /** + * Constructor + */ + public HorizontalProfileMeshArtifact(){ + super(); + log.debug("VerticalProfileMeshArtifact.Constructor"); + super.name = super.name+ "Mesh"; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,55 @@ +/** + * + */ +package de.intevation.gnv.profile.vertical; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; + +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.artifacts.CallContext; +import de.intevation.gnv.artifacts.GNVArtifactBase; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class VerticalProfileArtifact extends GNVArtifactBase { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(VerticalProfileArtifact.class); + + + /** + * The UID of this class + */ + private static final long serialVersionUID = -8291547966693867205L; + + /** + * Constructor + */ + public VerticalProfileArtifact(){ + super(); + log.debug("VerticalProfileArtifact.Constructor"); + this.name = "verticalProfile"; + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object) + */ + @Override + public Document describe(CallContext context) { + log.debug("VerticalProfileArtifact.describe"); + return super.createDescibeOutput(context.getMeta()); + } + + /** + * @see de.intevation.gnv.artifacts.GNVArtifactBase#setup(java.lang.String, de.intevation.artifacts.ArtifactFactory, java.lang.Object) + */ + @Override + public void setup(String identifier, ArtifactFactory factory, Object context) { + log.debug("VerticalProfileArtifact.setup"); + super.setup(identifier,factory,context); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileInstantaneousPointArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,32 @@ +/** + * + */ +package de.intevation.gnv.profile.vertical; + +import org.apache.log4j.Logger; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class VerticalProfileInstantaneousPointArtifact extends VerticalProfileArtifact { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(VerticalProfileInstantaneousPointArtifact.class); + + + /** + * The UID of this class + */ + private static final long serialVersionUID = -8291547966693867205L; + + /** + * Constructor + */ + public VerticalProfileInstantaneousPointArtifact(){ + super(); + log.debug("VerticalProfileInstantaneousPointArtifact.Constructor"); + super.name = super.name+ "InstantaneousPoint"; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/profile/vertical/VerticalProfileMeshArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,32 @@ +/** + * + */ +package de.intevation.gnv.profile.vertical; + +import org.apache.log4j.Logger; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class VerticalProfileMeshArtifact extends VerticalProfileArtifact { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(VerticalProfileMeshArtifact.class); + + + /** + * The UID of this class + */ + private static final long serialVersionUID = -8291547966693867205L; + + /** + * Constructor + */ + public VerticalProfileMeshArtifact(){ + super(); + log.debug("VerticalProfileMeshArtifact.Constructor"); + super.name = super.name+ "Mesh"; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/HorizontalProfileStatistics.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,27 @@ +/** + * + */ +package de.intevation.gnv.statistics; + +import java.sql.SQLException; + +import de.intevation.gnv.geobackend.base.Result; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class HorizontalProfileStatistics extends TimeseriesStatistics { + + /** + * Constructor + */ + public HorizontalProfileStatistics() { + super(); + } + + @Override + protected double calculateXOrdinateValue(Result row) throws SQLException { + return row.getDouble("XORDINATE_XCOORD"); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/Statistic.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,61 @@ +/** + * Title: Statistic, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/Statistic.java,v 1.2 2007/12/21 12:31:15 blume Exp $ + * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/Statistic.java,v $ + * created by: Stefan Blume (blume) + * erstellt am: 14.12.2007 + * Copyright: con terra GmbH, 2005 + * + * modified by: $Author: blume $ + * modified on: $Date: 2007/12/21 12:31:15 $ + * Version: $Revision: 1.2 $ + * TAG: $Name: $ + * locked from: $Locker: $ + * CVS State: $State: Exp $ + * Project: $ProjectName$ + */ +package de.intevation.gnv.statistics; + +import org.apache.log4j.Logger; + +/** + * The class <code>Statistic</code> fulfills the following purposes: + * <ol> + * <li></li> + * </ol> + * + * @author blume + * @version 1.0 + * @serial 1.0 + * @see + * @since 14.12.2007 09:38:18 + */ +public class Statistic { + + /** + * Default Logging instance + */ + private static Logger sLogger = Logger.getLogger(Statistic.class); + private static boolean sDebug = sLogger.isDebugEnabled(); + + private double mValue; + private String mKey; + + public Statistic(String pKey, double pValue) { + mKey = pKey; + mValue = pValue; + } + + public double getValue() { + return mValue; + } + + public String getKey() { + return mKey; + } + + public String getStringValue() { + java.text.DecimalFormat df = new java.text.DecimalFormat("#.##"); + return df.format(mValue); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/Statistics.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,44 @@ +/** + * Title: Statistics, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/Statistics.java,v 1.2 2008/01/30 12:38:34 blume Exp $ + * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/Statistics.java,v $ + * created by: Stefan Blume (blume) + * erstellt am: 14.12.2007 + * Copyright: con terra GmbH, 2005 + * + * modified by: $Author: blume $ + * modified on: $Date: 2008/01/30 12:38:34 $ + * Version: $Revision: 1.2 $ + * TAG: $Name: $ + * locked from: $Locker: $ + * CVS State: $State: Exp $ + * Project: $ProjectName$ + */ +package de.intevation.gnv.statistics; + +import java.util.Collection; + +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.statistics.exception.StatisticsException; + +/** + * The interface <code>Statistics</code> fulfills the following purposes: + * <ol> + * <li>Providng a marker interface for statistics.</li> + * </ol> + * + * @author blume + * @version 1.0 + * @serial 1.0 + * @see + * @since 14.12.2007 09:34:32 + */ +public interface Statistics { + + /** + * @param resultSet + * @return + * @throws StatisticsException + */ + public Collection<Statistic> calculateStatistics(Collection<Result> resultSet) throws StatisticsException; + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/TimeseriesStatistics.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,145 @@ +/** + * Title: TimeseriesStatistics, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v 1.3 2008/08/18 14:50:33 drewnak Exp $ + * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/output/statistics/TimeseriesStatistics.java,v $ + * created by: Stefan Blume (blume) + * erstellt am: 06.12.2007 + * Copyright: con terra GmbH, 2005 + * + * modified by: $Author: drewnak $ + * modified on: $Date: 2008/08/18 14:50:33 $ + * Version: $Revision: 1.3 $ + * TAG: $Name: $ + * locked from: $Locker: $ + * CVS State: $State: Exp $ + * Project: $ProjectName$ + */ +package de.intevation.gnv.statistics; + +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; + +import org.apache.commons.math.stat.descriptive.DescriptiveStatistics; +import org.apache.commons.math.stat.regression.SimpleRegression; +import org.apache.log4j.Logger; + +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.statistics.exception.StatisticsException; + + + +/** + * The class <code>TimeseriesStatistics</code> fulfills the following purposes: + * <ol> + * <li></li> + * </ol> + * + * @author blume + * @author Tim Englich <tim.englich@intevation.de> + * @version 1.0 + * @serial 1.0 + * @see + * @since 06.12.2007 18:02:27 + */ +public class TimeseriesStatistics implements Statistics { + + /** + * Default Logging instance + */ + private static Logger log = Logger.getLogger(TimeseriesStatistics.class); + private static boolean sDebug = log.isDebugEnabled(); + + private Collection<Statistic> statistics = null; + + public TimeseriesStatistics(){ + super(); + } + + /** + * @see de.intevation.gnv.statistics.Statistics#calculateStatistics(java.util.Collection) + */ + public Collection<Statistic> calculateStatistics(Collection<Result> resultSet) throws StatisticsException { + DescriptiveStatistics lStatistics = null; + SimpleRegression lRegression = null; + statistics = new ArrayList<Statistic>(); + String break1, break2; + int lSeries = 1; + try{ + + Iterator<Result> resultIterator = resultSet.iterator(); + if (resultIterator.hasNext()){ + Result row = resultIterator.next(); + break1 = row.getString("GROUP1"); + break2 = row.getString("GROUP2"); + lRegression = new SimpleRegression(); + lStatistics = DescriptiveStatistics.newInstance(); + while (resultIterator.hasNext()) { + + if (!break1.equals(row.getString("GROUP1")) + || !break2.equals(row.getString("GROUP2"))) { + addStatisticsValues(lStatistics, lRegression, lSeries); + + lStatistics.clear(); + lRegression.clear(); + + lStatistics.addValue(row.getDouble("YORDINATE")); + Double x = this.calculateXOrdinateValue(row); + lRegression.addData(x ,row.getDouble("YORDINATE")); + + break1 = row.getString("GROUP1"); + break2 = row.getString("GROUP2"); + row = resultIterator.next(); + lSeries ++; + } + else{ + + lStatistics.addValue(row.getDouble("YORDINATE")); + Double x = this.calculateXOrdinateValue(row); + lRegression.addData(x,row.getDouble("YORDINATE")); + row = resultIterator.next(); + } + + } + addStatisticsValues(lStatistics, lRegression,lSeries); + lStatistics.clear(); + lRegression.clear(); + } + } + catch (Exception e){ + log.error(e.getMessage(), e); + } + + return statistics; + } + + + protected double calculateXOrdinateValue(Result row) throws SQLException{ + return new Double( (row.getDate("XORDINATE")).getTime()/1000/3600) ; + } + + + /** + * @param lStatistics + * @param lRegression + * @param lStats + * @param lSeries + */ + private void addStatisticsValues(DescriptiveStatistics lStatistics, + SimpleRegression lRegression, int lSeries) { + statistics.add(new Statistic("gnviewer.statistics.series",(double)lSeries)); + statistics.add(new Statistic("gnviewer.statistics.descriptive.arithmeticMean", lStatistics.getMean())); + statistics.add(new Statistic("gnviewer.statistics.descriptive.kurtosis", lStatistics.getKurtosis())); + statistics.add(new Statistic("gnviewer.statistics.descriptive.max", lStatistics.getMax())); + statistics.add(new Statistic("gnviewer.statistics.descriptive.min", lStatistics.getMin())); + statistics.add(new Statistic("gnviewer.statistics.descriptive.n", lStatistics.getN())); + statistics.add(new Statistic("gnviewer.statistics.descriptive.percentile.90", lStatistics.getPercentile(90))); + statistics.add(new Statistic("gnviewer.statistics.descriptive.percentile.75", lStatistics.getPercentile(75))); + statistics.add(new Statistic("gnviewer.statistics.descriptive.percentile.50", lStatistics.getPercentile(50))); + statistics.add(new Statistic("gnviewer.statistics.descriptive.percentile.10", lStatistics.getPercentile(10))); + statistics.add(new Statistic("gnviewer.statistics.descriptive.deviation", lStatistics.getStandardDeviation())); + statistics.add(new Statistic("gnviewer.statistics.descriptive.variance", lStatistics.getVariance())); + statistics.add(new Statistic("gnviewer.statistics.descriptive.intercept", lRegression.getIntercept())); + statistics.add(new Statistic("gnviewer.statistics.descriptive.slope", lRegression.getSlope())); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/VerticalProfileStatistics.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,29 @@ +/** + * + */ +package de.intevation.gnv.statistics; + +import java.sql.SQLException; + +import de.intevation.gnv.geobackend.base.Result; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class VerticalProfileStatistics extends TimeseriesStatistics { + + /** + * Constructor + */ + public VerticalProfileStatistics() { + super(); + } + + @Override + protected double calculateXOrdinateValue(Result row) throws SQLException { + return row.getDouble("XORDINATE"); + } + + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/statistics/exception/StatisticsException.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,47 @@ +/** + * + */ +package de.intevation.gnv.statistics.exception; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class StatisticsException extends Exception { + + /** + * + */ + private static final long serialVersionUID = -7324280565076343394L; + + /** + * Constructor + */ + public StatisticsException() { + } + + /** + * Constructor + * @param arg0 + */ + public StatisticsException(String arg0) { + super(arg0); + } + + /** + * Constructor + * @param arg0 + */ + public StatisticsException(Throwable arg0) { + super(arg0); + } + + /** + * Constructor + * @param arg0 + * @param arg1 + */ + public StatisticsException(String arg0, Throwable arg1) { + super(arg0, arg1); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/TimeSeriesArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,55 @@ +/** + * + */ +package de.intevation.gnv.timeseries; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; + +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.artifacts.CallContext; +import de.intevation.gnv.artifacts.GNVArtifactBase; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class TimeSeriesArtifact extends GNVArtifactBase { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(TimeSeriesArtifact.class); + + + /** + * The UID of this class + */ + private static final long serialVersionUID = -8291547966693867205L; + + /** + * Constructor + */ + public TimeSeriesArtifact(){ + super(); + log.debug("TimeSeriesArtifact.Constructor"); + this.name = "timeSeries"; + } + + /** + * @see de.intevation.artifactdatabase.DefaultArtifact#describe(java.lang.Object) + */ + @Override + public Document describe(CallContext context) { + log.debug("TimeSeriesArtifact.describe"); + return super.createDescibeOutput(context.getMeta()); + } + + /** + * @see de.intevation.gnv.artifacts.GNVArtifactBase#setup(java.lang.String, de.intevation.artifacts.ArtifactFactory, java.lang.Object) + */ + @Override + public void setup(String identifier, ArtifactFactory factory, Object context) { + log.debug("TimeSeriesArtifact.setup"); + super.setup(identifier,factory,context); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/timeseries/TimeSeriesMeshArtifact.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,18 @@ +package de.intevation.gnv.timeseries; +public class TimeSeriesMeshArtifact extends TimeSeriesArtifact { + + /** + * + */ + private static final long serialVersionUID = 5680432486700275986L; + + /** + * + * Constructor + */ + public TimeSeriesMeshArtifact() { + super(); + super.name = super.name+ "Mesh"; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultInputData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,55 @@ +/** + * + */ +package de.intevation.gnv.transition; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class DefaultInputData implements InputData { + + + /** + * + */ + private static final long serialVersionUID = 4308041648698108066L; + private String name = null; + private String value = null; + /** + * Constructor + */ + public DefaultInputData(String name , String value ) { + this.name = name; + this.value = value; + } + + /** + * @see de.intevation.gnv.transition.InputData#getName() + */ + public String getName() { + return this.name; + } + + /** + * @see de.intevation.gnv.transition.InputData#getValue() + */ + public String getValue() { + return this.value; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return this.name + "==> "+ this.value; + } + + /** + * @see de.intevation.gnv.transition.InputData#concartValue(java.lang.String) + */ + public void concartValue(String value) { + this.value = this.value +" , "+value; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultInputValue.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,74 @@ +/** + * + */ +package de.intevation.gnv.transition; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class DefaultInputValue implements InputValue { + + /** + * The UID of this Class. + */ + private static final long serialVersionUID = -8518824299166180986L; + private String name = null; + private String type = null; + private boolean multiselect = false; + private int usedInQueries = 1; + private String defaultValue = "N/N"; + + + public DefaultInputValue(String name, String type, String defaultValue, boolean multiselect){ + this(name, type, multiselect, 1); + this.defaultValue = defaultValue; + + } + /** + * Constructor + */ + public DefaultInputValue(String name, String type, boolean multiselect, int usedInQueries){ + this.name = name; + this.type = type; + this.multiselect = multiselect; + this.usedInQueries = usedInQueries; + } + + /** + * @see de.intevation.gnv.transition.InputValue#getName() + */ + public String getName() { + return this.name; + } + + /** + * @see de.intevation.gnv.transition.InputValue#getType() + */ + public String getType() { + return this.type; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "InputValue "+this.name+" ==> "+this.type+ "==> multiselect: "+this.multiselect; + } + + /** + * @see de.intevation.gnv.transition.InputValue#isMultiselect() + */ + public boolean isMultiselect() { + return this.multiselect; + } + + public int usedInQueries() { + return this.usedInQueries; + } + + public String getDefaultValue() { + return this.defaultValue; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultOutputMode.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,73 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.util.Collection; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class DefaultOutputMode implements OutputMode { + + /** + * The UID of this Class. + */ + private static final long serialVersionUID = -6459085460904827056L; + private String name = null; + private String description = null; + private String mimeType = null; + private Collection<InputValue> inputParameters = null; + + /** + * Constructor + * @param name + * @param description + * @param mimeType + */ + public DefaultOutputMode(String name, String description, String mimeType, Collection<InputValue> inputParameters) { + super(); + this.name = name; + this.description = description; + this.mimeType = mimeType; + this.inputParameters = inputParameters; + } + + /** + * @see de.intevation.gnv.transition.OutputMode#getDescription() + */ + public String getDescription() { + return this.description; + } + + /** + * @see de.intevation.gnv.transition.OutputMode#getMimeType() + */ + public String getMimeType() { + return this.mimeType; + } + + /** + * @see de.intevation.gnv.transition.OutputMode#getName() + */ + public String getName() { + return this.name; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "Name: "+this.name+" ; Description: "+this.description+" ; Mime-Type: "+this.mimeType; + } + + /** + * @see de.intevation.gnv.transition.OutputMode#getInputParameters() + */ + public Collection<InputValue> getInputParameters() { + return this.inputParameters; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/DefaultTransition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,28 @@ +/** + * + */ +package de.intevation.gnv.transition; + + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class DefaultTransition extends TransitionBase { + + /** + * Constructor + */ + public DefaultTransition() { + } + + + /** + * @see de.intevation.gnv.transition.Transition#validate() + */ + public boolean validate() { + // TODO Validation einbauen + return true; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/InputData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,17 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.io.Serializable; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface InputData extends Serializable{ + + public String getName(); + public String getValue(); + public void concartValue(String value); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/InputValue.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,20 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.io.Serializable; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface InputValue extends Serializable{ + + public String getName(); + public String getType(); + public String getDefaultValue(); + public boolean isMultiselect(); + public int usedInQueries(); + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/MinMaxTransition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,65 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.util.ArrayList; +import java.util.Collection; + +import org.apache.log4j.Logger; + +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.transition.describedata.DefaultMinMaxDescribeData; +import de.intevation.gnv.transition.describedata.DescribeData; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class MinMaxTransition extends TransitionBase { + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(MinMaxTransition.class); + + /** + * Constructor + */ + public MinMaxTransition() { + super(); + } + + /** + * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection, java.lang.String) + */ + @Override + protected void purifyResult(Collection<Result> result, String uuid) { + log.debug("MinMaxTransition.purifyResult"); + if (this.descibeData == null){ + this.descibeData = new ArrayList<Object>(); + } + if (result != null && result.size() == 1){ + + Object[] names = this.inputValueNames.toArray(); + String minName = names[names.length-2].toString(); + String maxName = names[names.length-1].toString(); + Result value = result.iterator().next(); + DescribeData describeData = new DefaultMinMaxDescribeData(minName, maxName,value.getObject("MIN"), value.getObject("MAX")); + log.debug(describeData.toString()); + this.descibeData.add(describeData); + }else{ + log.warn("Result cannot be handled as MinMax Resultset"); + } + + } + + /** + * @see de.intevation.gnv.transition.Transition#validate() + */ + public boolean validate() { + // TODO: Implement ME + return true; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputMode.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,22 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.io.Serializable; +import java.util.Collection; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface OutputMode extends Serializable{ + + public String getName(); + + public String getDescription(); + + public String getMimeType(); + + public Collection<InputValue> getInputParameters(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,36 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.io.OutputStream; +import java.util.Collection; + +import de.intevation.artifacts.CallMeta; +import de.intevation.gnv.transition.exception.TransitionException; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface OutputTransition extends Transition { + + /** + * Returns the Rendered Result of an Transition. + * + * @param outputMode + * The Mode that should be produces (Chart, Map, ...) + * @return The Bytecode of the Result + * @throws TransitionException + */ + public void out(String outputMode, Collection<InputData> inputData, + OutputStream outputStream, String uuid, CallMeta callMeta) + throws TransitionException; + + /** + * Delivers the provided OutputModes of an Transition + * + * @return the provided OutputModes of an Transition + */ + public Collection<OutputMode> getOutputModes(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/OutputTransitionBase.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,155 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Collection; + +import net.sf.ehcache.Element; + +import org.apache.log4j.Logger; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import de.intevation.artifactdatabase.Config; +import de.intevation.artifacts.CallMeta; +import de.intevation.gnv.artifacts.cache.CacheFactory; +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.transition.exception.TransitionException; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public abstract class OutputTransitionBase extends TransitionBase implements + OutputTransition { + + + /** + * The UID of this Class + */ + private static final long serialVersionUID = -1718732895737303823L; + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(OutputTransitionBase.class); + + + /** + * The different Outputmodes which are provided by an OutputTransition + */ + protected Collection<OutputMode> outputModes = null; + + /** + * Constructor + */ + public OutputTransitionBase() { + super(); + } + + /** + * @see de.intevation.gnv.transition.OutputTransition#getOutputModes() + */ + public Collection<OutputMode> getOutputModes() { + log.debug("OutputTransitionBase.getOutputModes"); + return this.outputModes; + } + /** + * @see de.intevation.gnv.transition.Transition#validate() + */ + public boolean validate() { + log.debug("OutputTransitionBase.validate"); + return true; + } + + /** + * @see de.intevation.gnv.transition.TransitionBase#setup(org.w3c.dom.Node) + */ + @Override + public void setup(Node configuration) { + log.debug("OutputTransitionBase.setup"); + super.setup(configuration); + NodeList outputModeList = Config.getNodeSetXPath(configuration, "outputsModes/outputsMode"); + if (outputModeList != null){ + log.debug(outputModeList.getLength()+ " were found."); + this.outputModes = new ArrayList<OutputMode>(outputModeList.getLength()); + for (int i = 0; i < outputModeList.getLength(); i++){ + Node currentNode = outputModeList.item(i); + String name = Config.getStringXPath(currentNode, "@name"); + String description = Config.getStringXPath(currentNode, "@description"); + String mimeType = Config.getStringXPath(currentNode, "@mime-type"); + + NodeList inputValuesList = Config.getNodeSetXPath(currentNode, "parameters/inputvalue"); + Collection<InputValue> inputParameters = null; + if (inputValuesList != null){ + inputParameters = new ArrayList<InputValue>(inputValuesList.getLength()); + for (int j = 0 ; j < inputValuesList.getLength(); j++){ + Node currentInputValuesNode = inputValuesList.item(j); + String inputValueName = Config.getStringXPath(currentInputValuesNode, "@name"); + String inputValueType = Config.getStringXPath(currentInputValuesNode, "@type"); + String defaultValue = Config.getStringXPath(currentInputValuesNode, "@value"); + boolean isMultiselect = false; + InputValue inputValue = new DefaultInputValue(inputValueName, inputValueType, defaultValue, isMultiselect); + inputParameters.add(inputValue); + } + } + + OutputMode outputMode = new DefaultOutputMode(name, description, mimeType,inputParameters); + log.debug(outputMode.toString()); + this.outputModes.add(outputMode); + + } + } + } + + /** + * @see de.intevation.gnv.transition.TransitionBase#advance() + */ + @Override + public void advance(String uuid, CallMeta callMeta) throws TransitionException { + log.debug("OutputTransitionBase.advance"); + if (this.getChartResult(uuid) == null){ + super.advance(uuid, callMeta); + } + } + + /** + * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String, java.util.Collection, java.io.OutputStream) + */ + public void out(String outputMode, Collection<InputData> inputData, + OutputStream outputStream) throws TransitionException { + } + + /** + * @return + */ + protected Collection<Result> getChartResult(String uuid) { + log.debug("OutputTransitionBase.getChartResult"); + if (CacheFactory.getInstance().isInitialized()){ + String key = uuid+super.getID(); + log.debug("Hash for Queryelements: "+key); + Element value = CacheFactory.getInstance().getCache().get(key); + if (value != null){ + return (Collection<Result>)(value.getObjectValue()); + } + } + return null; + } + + /** + * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection, java.lang.String) + */ + @Override + protected void purifyResult(Collection<Result> result, String uuid) { + log.debug("OutputTransitionBase.purifyResult"); + if (CacheFactory.getInstance().isInitialized()){ + String key = uuid+super.getID(); + log.debug("Hash for Queryelements: "+key); + CacheFactory.getInstance().getCache().put(new Element(key, result)); + } + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/SingleInputTransition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,64 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.util.ArrayList; +import java.util.Collection; + +import org.apache.log4j.Logger; + +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.transition.describedata.DefaultSingleValueDescribeData; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class SingleInputTransition extends TransitionBase { + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(SingleInputTransition.class); + + /** + * + */ + private static final long serialVersionUID = -6169497306324917318L; + + /** + * Constructor + */ + public SingleInputTransition() { + } + + /** + * @see de.intevation.gnv.transition.Transition#validate() + */ + public boolean validate() { + return true; + } + + /** + * @see de.intevation.gnv.transition.TransitionBase#purifyResult(java.util.Collection, java.lang.String) + */ + @Override + protected void purifyResult(Collection<Result> result, String uuid) { + log.debug("SingleInputTransition.purifyResult"); + if (this.descibeData == null){ + this.descibeData = new ArrayList<Object>(); + } + String value = null; + if (result != null && result.size() == 1){ + Result tmpItem = result.iterator().next(); + value = tmpItem.getObject("MAX").toString(); + }else{ + value = ""; + } + + this.descibeData.add(new DefaultSingleValueDescribeData(this.dataName, value)); + } + + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/Transition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,53 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.io.Serializable; +import java.util.Collection; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +import de.intevation.artifacts.CallMeta; +import de.intevation.gnv.transition.exception.TransitionException; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface Transition extends Serializable{ + + public void setup(Node configuration); + + public Collection<String> reachableTransitions(); + + public boolean isTransitionReachable(String transitionID); + + public String getID(); + + public String getDescription(); + + public boolean validate(); + + public void describe(Document document, Node rootNode, CallMeta callMeta); + + public void setParent(Transition transition); + + public Transition getParent(); + + public Collection<InputValue> getRequiredInputValues(); + + public void putInputData(Collection<InputData> inputData, String uuid) throws TransitionException; + + public Collection<InputData> getInputData() throws TransitionException; + + public void advance(String uuid, CallMeta callMeta) throws TransitionException; + + + public Collection<Object> getDescibeData(); + + public void setDescibeData(Collection<Object> descibeData); + + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,548 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import de.intevation.artifactdatabase.Config; +import de.intevation.artifacts.CallMeta; +import de.intevation.gnv.artifacts.GNVArtifactBase; +import de.intevation.gnv.artifacts.ressource.RessourceFactory; +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.geobackend.base.query.QueryExecutor; +import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory; +import de.intevation.gnv.geobackend.base.query.exception.QueryException; +import de.intevation.gnv.geobackend.util.DateUtils; +import de.intevation.gnv.transition.describedata.DefaultKeyValueDescribeData; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; +import de.intevation.gnv.transition.describedata.MinMaxDescribeData; +import de.intevation.gnv.transition.describedata.NamedArrayList; +import de.intevation.gnv.transition.describedata.NamedCollection; +import de.intevation.gnv.transition.describedata.SingleValueDescribeData; +import de.intevation.gnv.transition.exception.TransitionException; +import de.intevation.gnv.utils.ArtifactXMLUtilities; +import de.intevation.gnv.utils.InputValidator; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public abstract class TransitionBase implements Transition { + + /** + * The UID of this Class + */ + private static final long serialVersionUID = 2411169179001645426L; + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(GNVArtifactBase.class); + + private String id = null; + + private String description = null; + + protected String dataName = null; + + protected boolean dataMultiSelect = false; + + protected String queryID = null; + + private Collection<String> reachableTransitions = null; + + protected Collection<String> inputValueNames = null; + + private Map<String,InputValue> inputValues = null; + + private Transition parent = null; + + protected Map<String,InputData> inputData = null; + + protected Collection<Object> descibeData = null; + + /** + * Constructor + */ + public TransitionBase() { + super(); + } + + /** + * @see de.intevation.gnv.transition.Transition#getID() + */ + public String getID() { + return this.id; + } + + /** + * @see de.intevation.gnv.transition.Transition#getDescription() + */ + public String getDescription() { + return this.description; + } + + /** + * @see de.intevation.gnv.transition.Transition#reachableTransitions() + */ + public Collection<String> reachableTransitions() { + return this.reachableTransitions; + } + + /** + * @see de.intevation.gnv.transition.Transition#getRequiredInputValues() + */ + public Collection<InputValue> getRequiredInputValues() { + return this.inputValues.values(); + } + + /** + * @see de.intevation.gnv.transition.Transition#setup(org.w3c.dom.Node) + */ + public void setup(Node configuration) { + log.debug("TransitionBase.setup"); + this.id = Config.getStringXPath(configuration,"@id"); + this.description = Config.getStringXPath(configuration,"@description"); + + log.info("Transition-ID = "+ this.id); + NodeList nodes = Config.getNodeSetXPath(configuration,"reachableTransitions/transition"); + this.reachableTransitions = new ArrayList<String>(nodes.getLength()); + for (int i = 0 ; i < nodes.getLength(); i++){ + String reachableTransition = nodes.item(i).getTextContent(); + log.info("ReachableTransition ==> "+ reachableTransition); + this.reachableTransitions.add(reachableTransition); + + } + + NodeList inputValuesNodes = Config.getNodeSetXPath(configuration,"inputvalues/inputvalue"); + this.inputValues = new HashMap<String,InputValue>(inputValuesNodes.getLength()); + this.inputValueNames = new ArrayList<String>(inputValuesNodes.getLength()); + for (int i = 0 ; i < inputValuesNodes.getLength(); i++){ + Node inputValueNode = inputValuesNodes.item(i); + String usedinQueryValue = Config.getStringXPath(inputValueNode,"@usedinquery"); + int usedinQuery = 1; + if (usedinQueryValue != null){ + try { + usedinQuery = Integer.parseInt(usedinQueryValue); + } catch (NumberFormatException e) { + log.warn("Used in Query Value cannot be transformed into a Number"); + } + } + InputValue inputValue = new DefaultInputValue( + Config.getStringXPath(inputValueNode,"@name"), + Config.getStringXPath(inputValueNode,"@type"), + Boolean.parseBoolean(Config.getStringXPath(inputValueNode,"@multiselect")), + usedinQuery); + log.debug(inputValue.toString()); + this.inputValues.put(inputValue.getName(),inputValue); + this.inputValueNames.add(inputValue.getName()); + } + + this.queryID = Config.getStringXPath(configuration,"queryID"); + log.info("QueryID ==> "+ this.queryID); + + this.dataName = Config.getStringXPath(configuration,"dataname"); + + String dataMultiSelectValue = Config.getStringXPath(configuration,"data-multiselect"); + if (dataMultiSelectValue != null){ + this.dataMultiSelect = Boolean.parseBoolean(dataMultiSelectValue); + } + + } + + /** + * @see de.intevation.gnv.transition.Transition#getParent() + */ + public Transition getParent() { + return this.parent; + } + + /** + * @see de.intevation.gnv.transition.Transition#setParent(de.intevation.gnv.transition.Transition) + */ + public void setParent(Transition transition) { + this.parent = transition; + } + + /** + * @see de.intevation.gnv.transition.Transition#putInputData(java.util.Collection) + */ + public void putInputData(Collection<InputData> inputData, String uuid) throws TransitionException { + log.debug("TransitionBase.putInputData"); + if (inputData != null){ + Iterator<InputData> it = inputData.iterator(); + InputValidator iv = new InputValidator(); + while(it.hasNext()){ + InputData tmpItem = it.next(); + InputValue inputValue = this.inputValues.get(tmpItem.getName()); + if (inputValue != null){ + if (this.inputData == null){ + this.inputData = new HashMap<String,InputData>(inputData.size()); + } + boolean valid = iv.isInputValid(tmpItem.getValue(), inputValue.getType()); + if (valid){ + this.setSelection(tmpItem); + this.inputData.put(tmpItem.getName(),tmpItem); + }else{ + String errMsg = "Wrong input for "+tmpItem.getValue()+"is not an "+inputValue.getType()+" Value."; + log.warn(errMsg); + throw new TransitionException(errMsg); + } + + }else{ + String errMsg = "No Inputvalue given for Inputdata "+ tmpItem.getName(); + log.warn(errMsg+ "Value will be ignored"); + + } + } + }else{ + log.warn("No Inputdata given"); + } + } + + private void setSelection(InputData inputData){ + log.debug("TransitionBase.setSelection"); + + Object o = this.getDescribeData(inputData.getName()); + if(o != null){ + if (o instanceof Collection<?>){ + Collection<KeyValueDescibeData> values = (Collection<KeyValueDescibeData>)o; + + String value = inputData.getValue(); + String[] selectedValues = value.split(","); + Set<String> selectedItems = new HashSet<String>(selectedValues.length); + for (int i = 0; i < selectedValues.length; i++){ + selectedItems.add(selectedValues[i].trim()); + } + // Selektion umsetzen + Iterator<KeyValueDescibeData> it = values.iterator(); + while (it.hasNext()){ + KeyValueDescibeData data = it.next(); + String key = ""+data.getKey(); + boolean selected = selectedItems.contains(key); + data.setSelected(selected); + } + }else if (o instanceof MinMaxDescribeData){ + MinMaxDescribeData data = (MinMaxDescribeData)o; + if (inputData.getName().equals(data.getMinName())){ + // TODO: müssen die werte geparst werden? + data.setMinValue(inputData.getValue()); + } + if (inputData.getName().equals(data.getMaxName())){ + // TODO: müssen die werte geparst werden? + data.setMaxValue(inputData.getValue()); + } + } + } + } + + private Object getDescribeData(String name){ + log.debug("TransitionBase.getDescribeData"); + if (this.descibeData != null){ + Iterator<Object> it = this.descibeData.iterator(); + while (it.hasNext()){ + Object o = it.next(); + if (o instanceof NamedCollection<?>){ + if (name.equals(((NamedCollection<?>)o).getName())){ + return o; + } + }else if (o instanceof MinMaxDescribeData){ + if (name.equals(((MinMaxDescribeData)o).getMinName())){ + return o; + } + if (name.equals(((MinMaxDescribeData)o).getMaxName())){ + return o; + } + } + } + } + return null; + + } + + /** + * @see de.intevation.gnv.transition.Transition#isTransitionReachable(java.lang.String) + */ + public boolean isTransitionReachable(String transitionID) { + log.debug("TransitionBase.isTransitionReachable"); + boolean returnValue = false; + Iterator<String> transitions = reachableTransitions.iterator(); + while (transitions.hasNext()){ + if(transitions.next().equals(transitionID)){ + log.debug("Transition "+transitionID+" wird unterstützt."); + returnValue = true; + break; + } + } + return returnValue; + } + + /** + * @see de.intevation.gnv.transition.Transition#advance(java.lang.String, de.intevation.artifacts.CallMeta) + */ + public void advance(String uuid, CallMeta callMeta) throws TransitionException { + log.debug("TransitionBase.advance"); + try { + List<String> list = new ArrayList<String>(); + + + Iterator<String> it = this.inputValueNames.iterator(); + int i = 0; + while (it.hasNext()){ + String value = it.next(); + InputData data = this.inputData.get(value); + if (data != null && this.inputValues.containsKey(data.getName())){ + int size = this.inputValues.get(data.getName()).usedInQueries(); + String type = this.inputValues.get(data.getName()).getType(); + String requestValue = data.getValue(); + if (type.equalsIgnoreCase("string")){ + requestValue = this.prepareInputData4DBQuery(requestValue); + }else if (type.equalsIgnoreCase("date")){ + requestValue = this.prepareInputData4DateDBQuery(requestValue); + } + for (int j = 0; j < size; j++){ + list.add(requestValue); + } + } + } + String[] filterValues = list.toArray(new String[0]); + Collection<Result> result = null; + try { + if (this.queryID != null){ + QueryExecutor queryExecutor = QueryExecutorFactory.getInstance().getQueryExecutor(); + result = queryExecutor.executeQuery(this.queryID, filterValues); + } + this.purifyResult(result, uuid); + } catch (RuntimeException e) { + log.error(e,e); + } + } catch (QueryException e) { + log.error(e,e); + throw new TransitionException(e); + } + } + + private String prepareInputData4DateDBQuery(String value){ + log.debug("TransitionBase.prepareInputData4DateDBQuery"); + if (value != null){ + String[] values = value.split(","); + String newValue = ""; + for (int i = 0; i < values.length; i++){ + if (newValue.length() > 0){ + newValue= newValue + " , "; + } + // TODO JUST HACK FIND A BETTER RESOLUTION + newValue = newValue + "to_date('"+values[i].trim()+"', 'YYYY.MM.DD HH24:MI:SS')"; + } + return newValue; + } + + return value; + } + private String prepareInputData4DBQuery(String value){ + log.debug("TransitionBase.prepareInputData4DBQuery"); + if (value != null){ + String[] values = value.split(","); + String newValue = ""; + for (int i = 0; i < values.length; i++){ + if (newValue.length() > 0){ + newValue= newValue + " , "; + } + newValue = newValue + "'"+values[i].trim()+"'"; + } + return newValue; + } + + return value; + + } + + /** + * @param result + */ + protected void purifyResult(Collection<Result> result, String uuid) { + log.debug("TransitionBase.purifyResult"); + if (this.descibeData == null){ + this.descibeData = new ArrayList<Object>(); + } + Iterator<Result> rit = result.iterator(); + NamedCollection<KeyValueDescibeData> keyValueDescibeData = new NamedArrayList<KeyValueDescibeData>(this.dataName,result.size()); + keyValueDescibeData.setMultiSelect(this.dataMultiSelect); + while(rit.hasNext()){ + Result resultValue = rit.next(); + keyValueDescibeData.add(new DefaultKeyValueDescribeData(resultValue.getString("KEY"), resultValue.getString("VALUE"))); + } + this.descibeData.add(keyValueDescibeData); + } + + /** + * @see de.intevation.gnv.transition.Transition#describe(org.w3c.dom.Document, org.w3c.dom.Node, de.intevation.artifacts.CallMeta) + */ + public void describe(Document document, Node rootNode, CallMeta callMeta) { + log.debug("TransitionBase.describe"); + if(this.descibeData != null){ + ArtifactXMLUtilities xmlutilities = new ArtifactXMLUtilities(); + Iterator<Object> it = this.descibeData.iterator(); + Node staticNode = xmlutilities.createArtifactElement(document, "static"); + Node dynamic = xmlutilities.createArtifactElement(document, "dynamic"); + rootNode.appendChild(staticNode); + rootNode.appendChild(dynamic); + while (it.hasNext()){ + + Object o = it.next(); + if (o instanceof Collection<?>){ + String name = null; + boolean multiselect = false; + if (o instanceof NamedCollection<?>){ + NamedCollection<?> nc = ((NamedCollection<?>)o); + name = nc.getName(); + multiselect = nc.isMultiSelect(); + }else{ + Object[] names = this.inputValueNames.toArray(); + name = names[names.length-1].toString(); + } + + + Element selectNode = xmlutilities.createXFormElement(document,multiselect ? "select" : "select1"); + selectNode.setAttribute("ref", name); + + Element lableNode = xmlutilities.createXFormElement(document, "label"); + lableNode.setTextContent(RessourceFactory.getInstance().getRessource(callMeta.getLanguages(), name, name)); + Element choiceNode = xmlutilities.createXFormElement(document, "choices"); + + Collection<KeyValueDescibeData> values = (Collection<KeyValueDescibeData>)o; + Iterator<KeyValueDescibeData> resultIt = values.iterator(); + while (resultIt.hasNext()){ + KeyValueDescibeData result = resultIt.next(); + Element itemNode = xmlutilities.createXFormElement(document, "item"); + + if (result.isSelected()){ + itemNode.setAttribute("selected", "true"); + } + + + Element choiceLableNode = xmlutilities.createXFormElement(document, "label"); + choiceLableNode.setTextContent(result.getValue()); + itemNode.appendChild(choiceLableNode); + + Element choicValueNode = xmlutilities.createXFormElement(document, "value"); + choicValueNode.setTextContent(""+result.getKey()); + itemNode.appendChild(choicValueNode); + choiceNode.appendChild(itemNode); + } + selectNode.appendChild(lableNode); + selectNode.appendChild(choiceNode); + + if (!it.hasNext()){ + dynamic.appendChild(selectNode); + }else{ + staticNode.appendChild(selectNode); + } + + }else if (o instanceof MinMaxDescribeData){ + MinMaxDescribeData descibeData = (MinMaxDescribeData)o; + Object min = descibeData.getMinValue(); + Object max = descibeData.getMaxValue(); + if (min instanceof GregorianCalendar){ + Date d = ((GregorianCalendar)min).getTime(); + min = DateUtils.getPatternedDateAmer(d); + } + + if (max instanceof GregorianCalendar){ + Date d = ((GregorianCalendar)max).getTime(); + max = DateUtils.getPatternedDateAmer(d); + } + + Element inputMinNode = xmlutilities.createXFormElement(document, "input"); + inputMinNode.setAttribute("ref", "minvalue"); + Element inputMinLableNode = xmlutilities.createXFormElement(document, "label"); + inputMinLableNode.setTextContent(RessourceFactory.getInstance().getRessource(callMeta.getLanguages(), "minvalue", "minvalue")); + inputMinNode.appendChild(inputMinLableNode); + + Element inputMinValueNode = xmlutilities.createXFormElement(document, "value"); + inputMinValueNode.setTextContent(min.toString()); + inputMinNode.appendChild(inputMinValueNode); + + Element inputMaxNode = xmlutilities.createXFormElement(document, "input"); + inputMaxNode.setAttribute("ref", "maxvalue"); + Element inputMaxLableNode = xmlutilities.createXFormElement(document, "label"); + inputMaxLableNode.setTextContent(RessourceFactory.getInstance().getRessource(callMeta.getLanguages(), "maxvalue", "maxvalue")); + inputMaxNode.appendChild(inputMaxLableNode); + + Element inputMaxValueNode = xmlutilities.createXFormElement(document, "value"); + inputMaxValueNode.setTextContent(max.toString()); + inputMaxNode.appendChild(inputMaxValueNode); + + + if (!it.hasNext()){ + dynamic.appendChild(inputMinNode); + dynamic.appendChild(inputMaxNode); + }else{ + staticNode.appendChild(inputMinNode); + staticNode.appendChild(inputMaxNode); + } + }else if (o instanceof SingleValueDescribeData){ + + SingleValueDescribeData svdb = (SingleValueDescribeData)o; + + Element inputNode = xmlutilities.createXFormElement(document, "input"); + inputNode.setAttribute("ref", svdb.getName()); + + Element inputLableNode = xmlutilities.createXFormElement(document, "label"); + inputLableNode.setTextContent(RessourceFactory.getInstance().getRessource(callMeta.getLanguages(), svdb.getName(), svdb.getName())); + inputNode.appendChild(inputLableNode); + + Element inputValueNode = xmlutilities.createXFormElement(document, "value"); + inputValueNode.setTextContent(svdb.getValue()); + inputNode.appendChild(inputValueNode); + + + if (!it.hasNext()){ + dynamic.appendChild(inputNode); + }else{ + staticNode.appendChild(inputNode); + } + } + + } + } + } + + /** + * @see de.intevation.gnv.transition.Transition#getDescibeData() + */ + public Collection<Object> getDescibeData() { + return this.descibeData; + } + + /** + * @see de.intevation.gnv.transition.Transition#setDescibeData(java.util.Collection) + */ + public void setDescibeData(Collection<Object> descibeData) { + this.descibeData = descibeData; + + } + + /** + * @see de.intevation.gnv.transition.Transition#getInputData() + */ + public Collection<InputData> getInputData() throws TransitionException { + return this.inputData != null ? this.inputData.values() : null; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionFactory.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,56 @@ +/** + * + */ +package de.intevation.gnv.transition; + +import org.apache.log4j.Logger; +import org.w3c.dom.Node; + +import de.intevation.artifactdatabase.Config; +import de.intevation.gnv.artifacts.GNVArtifactBase; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class TransitionFactory { + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(GNVArtifactBase.class); + + private static TransitionFactory instance = null; + /** + * Constructor + */ + public TransitionFactory() { + super(); + } + + public static TransitionFactory getInstance(){ + if (instance == null){ + instance = new TransitionFactory(); + } + return instance; + } + + + public Transition createTransition(Node configuration){ + log.debug("TransitionFactory.createTransition"); + Transition transition = null; + try { + String classname = Config.getStringXPath(configuration, "@transition"); + transition = (Transition)(Class.forName(classname).newInstance()); + transition.setup(configuration); + } catch (InstantiationException e) { + log.error(e,e); + } catch (IllegalAccessException e) { + log.error(e,e); + } catch (ClassNotFoundException e) { + log.error(e,e); + } + return transition; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/DefaultKeyValueDescribeData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,56 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class DefaultKeyValueDescribeData implements KeyValueDescibeData { + + /** + * + */ + private static final long serialVersionUID = -924469415242703108L; + + private String key; + + private String value = null; + + private boolean selected = false; + + public DefaultKeyValueDescribeData(String key, String value) { + super(); + this.key = key; + this.value = value; + } + + /** + * @see de.intevation.gnv.transition.describedata.KeyValueDescibeData#getKey() + */ + public String getKey() { + return this.key; + } + + /** + * @see de.intevation.gnv.transition.describedata.KeyValueDescibeData#getValue() + */ + public String getValue() { + return this.value; + } + + /** + * @see de.intevation.gnv.transition.describedata.KeyValueDescibeData#isSelected() + */ + public boolean isSelected() { + return this.selected; + } + + /** + * @see de.intevation.gnv.transition.describedata.KeyValueDescibeData#setSelected(boolean) + */ + public void setSelected(boolean selected) { + this.selected = selected; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/DefaultMinMaxDescribeData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,85 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class DefaultMinMaxDescribeData implements MinMaxDescribeData { + + /** + * + */ + private static final long serialVersionUID = -2917176219029052295L; + + private Object minValue = null; + + private Object maxValue = null; + + private String minName = null; + + private String maxName = null; + /** + * Constructor + */ + public DefaultMinMaxDescribeData(String minName, String maxName, Object minValue, Object maxValue) { + super(); + this.minName = minName; + this.maxName = maxName; + this.minValue = minValue; + this.maxValue = maxValue; + } + + /** + * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#getMaxValue() + */ + public Object getMaxValue() { + return this.maxValue; + } + + /** + * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#getMinValue() + */ + public Object getMinValue() { + return this.minValue; + } + + /** + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + return "MIN: "+this.minValue.toString()+" ; MAX: "+this.maxValue.toString(); + } + + /** + * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#getName() + */ + public String getMinName() { + return this.minName; + } + + /** + * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#getMaxName() + */ + public String getMaxName() { + return this.maxName; + } + + /** + * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#setMaxValue(java.lang.Object) + */ + public void setMaxValue(Object maxValue) { + this.maxValue = maxValue; + } + + /** + * @see de.intevation.gnv.transition.describedata.MinMaxDescribeData#setMinValue(java.lang.Object) + */ + public void setMinValue(Object minValue) { + this.minValue = minValue; + } + + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/DefaultSingleValueDescribeData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,46 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class DefaultSingleValueDescribeData implements SingleValueDescribeData { + + + /** + * + */ + private static final long serialVersionUID = 3580176842483316917L; + + private String name = null; + + private String value = null; + + /** + * Constructor + * @param name + * @param value + */ + public DefaultSingleValueDescribeData(String name, String value) { + super(); + this.name = name; + this.value = value; + } + + /** + * @see de.intevation.gnv.transition.describedata.SingleValueDescribeData#getName() + */ + public String getName() { + return this.name; + } + + /** + * @see de.intevation.gnv.transition.describedata.SingleValueDescribeData#getValue() + */ + public String getValue() { + return this.value; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/DescribeData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,15 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; + +import java.io.Serializable; + +/** + * Markerinterface + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface DescribeData extends Serializable{ + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/KeyValueDescibeData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,22 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; + +import java.io.Serializable; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface KeyValueDescibeData extends Serializable { + + public String getKey(); + + public String getValue(); + + public boolean isSelected(); + + public void setSelected(boolean selected); + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/MinMaxDescribeData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,20 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface MinMaxDescribeData extends DescribeData { + + public Object getMinValue(); + public Object getMaxValue(); + + public void setMinValue(Object minValue); + public void setMaxValue(Object maxValue); + + public String getMinName(); + public String getMaxName(); + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/NamedArrayList.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,66 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class NamedArrayList<E> extends ArrayList<E> implements NamedCollection<E> { + /** + * + */ + private static final long serialVersionUID = 8172229594749676354L; + + private String name = null; + + private boolean multiSelect = false; + /** + * Constructor + */ + public NamedArrayList(String name) { + this.name = name; + } + + /** + * Constructor + * @param initialCapacity + */ + public NamedArrayList(String name, int initialCapacity) { + super(initialCapacity); + this.name = name; + } + + /** + * Constructor + * @param c + */ + public NamedArrayList(String name, Collection<E> c) { + super(c); + this.name = name; + } + + /** + * @see de.intevation.gnv.transition.describedata.NamedCollection#getName() + */ + public String getName() { + return this.name; + } + /** + * @see de.intevation.gnv.transition.describedata.NamedCollection#isMultiSelect() + */ + public boolean isMultiSelect() { + return multiSelect; + } + + /** + * @see de.intevation.gnv.transition.describedata.NamedCollection#setMultiSelect(boolean) + */ + public void setMultiSelect(boolean multiSelect) { + this.multiSelect = multiSelect; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/NamedCollection.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,19 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; + +import java.util.Collection; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface NamedCollection<E> extends Collection<E> { + + public String getName(); + + public boolean isMultiSelect(); + + public void setMultiSelect(boolean multiSelect); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/describedata/SingleValueDescribeData.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,14 @@ +/** + * + */ +package de.intevation.gnv.transition.describedata; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public interface SingleValueDescribeData extends DescribeData { + + public String getName(); + + public String getValue(); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/exception/TransitionException.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,48 @@ +/** + * + */ +package de.intevation.gnv.transition.exception; +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class TransitionException extends Exception { + + /** + * The UID of the Class + */ + private static final long serialVersionUID = -1635921702746050244L; + + /** + * Constructor + */ + public TransitionException() { + super(); + } + + /** + * Constructor + * @param message + */ + public TransitionException(String message) { + super(message); + } + + /** + * Constructor + * @param cause + */ + public TransitionException(Throwable cause) { + super(cause); + } + + /** + * Constructor + * @param message + * @param cause + */ + public TransitionException(String message, Throwable cause) { + super(message, cause); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/horizontal/HorizontalProfileOutputTransition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,60 @@ +/** + * + */ +package de.intevation.gnv.transition.profile.horizontal; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.Collection; + +import de.intevation.gnv.chart.ChartLabels; +import de.intevation.gnv.chart.ChartStyle; +import de.intevation.gnv.chart.HorizontalProfileChartFactory; +import de.intevation.gnv.chart.exception.TechnicalChartException; +import de.intevation.gnv.statistics.HorizontalProfileStatistics; +import de.intevation.gnv.statistics.Statistics; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; +import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class HorizontalProfileOutputTransition extends TimeSeriesOutputTransition { + /** + * The UID of this class + */ + private static final long serialVersionUID = 4401516087492028840L; + + /** + * Constructor + */ + public HorizontalProfileOutputTransition() { + super(); + super.domainLable = "Messungen [m]"; + } + + /** + * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createChart(java.io.OutputStream, java.util.Collection, java.util.Collection, java.lang.String, de.intevation.gnv.chart.ChartStyle, de.intevation.gnv.chart.ChartLabels) + */ + @Override + protected void createChart(OutputStream outputStream, + Collection<KeyValueDescibeData> parameters, + Collection<KeyValueDescibeData> measurements, + ChartStyle chartStyle, ChartLabels chartLables,String uuid) throws IOException, TechnicalChartException { + HorizontalProfileChartFactory chartFactory = new HorizontalProfileChartFactory(); + chartFactory.createProfileChart(chartLables, chartStyle, + parameters, measurements, + outputStream, this.getChartResult(uuid)); + } + + /** + * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#getStatisticsGenerator() + */ + @Override + protected Statistics getStatisticsGenerator() { + return new HorizontalProfileStatistics(); + } + + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/horizontal/NorthSouthEastWestTransition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,63 @@ +/** + * + */ +package de.intevation.gnv.transition.profile.horizontal; + +import java.util.ArrayList; +import java.util.Collection; + +import de.intevation.artifacts.CallMeta; +import de.intevation.gnv.artifacts.ressource.RessourceFactory; +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.transition.TransitionBase; +import de.intevation.gnv.transition.describedata.DefaultKeyValueDescribeData; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; +import de.intevation.gnv.transition.describedata.NamedArrayList; +import de.intevation.gnv.transition.describedata.NamedCollection; +import de.intevation.gnv.transition.exception.TransitionException; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class NorthSouthEastWestTransition extends TransitionBase { + + /** + * The UID of this Class + */ + private static final long serialVersionUID = -7989531326553305293L; + + /** + * Constructor + */ + public NorthSouthEastWestTransition() { + } + + /** + * @see de.intevation.gnv.transition.Transition#validate() + */ + public boolean validate() { + return true; + } + + /** + * @see de.intevation.gnv.transition.TransitionBase#advance(java.lang.String, de.intevation.artifacts.CallMeta) + */ + @Override + public void advance(String uuid,CallMeta callMeta) throws TransitionException { + if (this.descibeData == null){ + this.descibeData = new ArrayList<Object>(); + } + NamedCollection<KeyValueDescibeData> keyValueDescibeData = new NamedArrayList<KeyValueDescibeData>(this.dataName,2); + keyValueDescibeData.setMultiSelect(super.dataMultiSelect); + keyValueDescibeData.add(new DefaultKeyValueDescribeData("IPOSITION", RessourceFactory.getInstance().getRessource(callMeta.getLanguages(), "iposition", "iposition"))); + keyValueDescibeData.add(new DefaultKeyValueDescribeData("JPOSITION", RessourceFactory.getInstance().getRessource(callMeta.getLanguages(), "jposition", "jposition"))); + this.descibeData.add(keyValueDescibeData); + } + + @Override + protected void purifyResult(Collection<Result> result, String uuid) { + + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/profile/vertical/VerticalProfileOutputTransition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,61 @@ +/** + * + */ +package de.intevation.gnv.transition.profile.vertical; + +import java.io.IOException; +import java.io.OutputStream; +import java.util.Collection; + +import de.intevation.gnv.chart.ChartLabels; +import de.intevation.gnv.chart.ChartStyle; +import de.intevation.gnv.chart.VerticalProfileChartFactory; +import de.intevation.gnv.chart.exception.TechnicalChartException; +import de.intevation.gnv.statistics.Statistics; +import de.intevation.gnv.statistics.VerticalProfileStatistics; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; +import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class VerticalProfileOutputTransition extends TimeSeriesOutputTransition { + /** + * The UID of this class + */ + private static final long serialVersionUID = 4401516087492028840L; + + /** + * Constructor + */ + public VerticalProfileOutputTransition() { + super(); + super.domainLable = "Tiefe"; + } + + + /** + * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#createChart(java.io.OutputStream, java.util.Collection, java.util.Collection, java.lang.String, de.intevation.gnv.chart.ChartStyle, de.intevation.gnv.chart.ChartLabels) + */ + @Override + protected void createChart(OutputStream outputStream, + Collection<KeyValueDescibeData> parameters, + Collection<KeyValueDescibeData> measurements, + ChartStyle chartStyle, ChartLabels chartLables,String uuid) throws IOException, TechnicalChartException { + VerticalProfileChartFactory chartFactory = new VerticalProfileChartFactory(); + chartFactory.createProfileChart(chartLables, chartStyle, + parameters, measurements, + outputStream, this.getChartResult(uuid)); + } + + /** + * @see de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition#getStatisticsGenerator() + */ + @Override + protected Statistics getStatisticsGenerator() { + return new VerticalProfileStatistics(); + } + + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/timeseries/TimeSeriesOutputTransition.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,313 @@ +/** + * + */ +package de.intevation.gnv.transition.timeseries; + +import java.awt.Color; +import java.awt.Dimension; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.util.Collection; +import java.util.Iterator; + +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; + +import au.com.bytecode.opencsv.CSVWriter; +import de.intevation.artifactdatabase.Config; +import de.intevation.artifactdatabase.XMLUtils; +import de.intevation.artifacts.CallMeta; +import de.intevation.gnv.chart.ChartFactory; +import de.intevation.gnv.chart.ChartLabels; +import de.intevation.gnv.chart.ChartStyle; +import de.intevation.gnv.chart.exception.TechnicalChartException; +import de.intevation.gnv.geobackend.base.Result; +import de.intevation.gnv.statistics.Statistic; +import de.intevation.gnv.statistics.Statistics; +import de.intevation.gnv.statistics.TimeseriesStatistics; +import de.intevation.gnv.statistics.exception.StatisticsException; +import de.intevation.gnv.transition.InputData; +import de.intevation.gnv.transition.OutputTransitionBase; +import de.intevation.gnv.transition.describedata.KeyValueDescibeData; +import de.intevation.gnv.transition.describedata.NamedCollection; +import de.intevation.gnv.transition.exception.TransitionException; +import de.intevation.gnv.utils.ArtifactXMLUtilities; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class TimeSeriesOutputTransition extends OutputTransitionBase { + + /** + * The UID of this Class + */ + private static final long serialVersionUID = 4178407570503098858L; + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger + .getLogger(TimeSeriesOutputTransition.class); + + protected String domainLable = "Zeit [UTC]"; + + protected String featureValuesName = "featureid"; + protected String parameterValuesName = "parameterid"; + protected String measuremenValueName = "measurementid"; + + /** + * Constructor + */ + public TimeSeriesOutputTransition() { + super(); + } + + /** + * @see de.intevation.gnv.transition.Transition#validate() + */ + public boolean validate() { + return true; + } + + /** + * @see de.intevation.gnv.transition.OutputTransition#out(java.lang.String, + * java.util.Collection, java.io.OutputStream, java.lang.String, + * de.intevation.artifacts.CallMeta) + */ + public void out(String outputMode, Collection<InputData> inputData, + OutputStream outputStream, String uuid, CallMeta callMeta) + throws TransitionException { + log.debug("TimeSeriesOutputTransition.out"); + try { + + this.advance(uuid, callMeta); + Collection<Result> chartResult = this.getChartResult(uuid); + if (outputMode.equalsIgnoreCase("chart")) { + log.debug("Chart will be generated."); + int chartWidth = 600; + int chartHeight = 400; + try { + if (inputData != null) { + Iterator<InputData> it = inputData.iterator(); + while (it.hasNext()) { + InputData ip = it.next(); + if (ip.getName().equalsIgnoreCase("width")) { + chartWidth = Integer.parseInt(ip.getValue()); + } else if (ip.getName().equalsIgnoreCase("height")) { + chartHeight = Integer.parseInt(ip.getValue()); + } + } + } + } catch (NumberFormatException e) { + log.error(e, e); + throw new TransitionException(e); + } + Collection<KeyValueDescibeData> parameters = this + .getParameters(); + Collection<KeyValueDescibeData> measurements = this + .getMeasurements(); + ChartStyle chartStyle = this + .creatStyle(chartWidth, chartHeight); + ChartLabels chartLables = new ChartLabels(this + .getSelectedFeatureName(), this.domainLable); + this.createChart(outputStream, parameters, measurements, + chartStyle, chartLables, uuid); + } else if (outputMode.equalsIgnoreCase("csv")) { + log.debug("CSV-File will be generated."); + if (chartResult != null) { + CSVWriter writer = new CSVWriter(new OutputStreamWriter( + outputStream, "ISO-8859-1"), ','); // USE THIS + // ENCODING + // BECAUSE OF + // PROBLEMS WITH + // EXCEL AND + // UTF-8 + Iterator<Result> it = chartResult.iterator(); + while (it.hasNext()) { + Result result = it.next(); + int i = 0; + String[] entries = new String[5]; + entries[i++] = result.getString("XORDINATE"); + entries[i++] = result.getString("YORDINATE"); + entries[i++] = result.getString("GROUP1"); + entries[i++] = result.getString("GROUP2"); + entries[i++] = result.getString("GROUP3"); + writer.writeNext(entries); + } + writer.close(); + } else { + log.error("No Data given for generation an CSV-File."); + throw new TransitionException( + "No Data given for generation an CSV-File."); + } + } else if (outputMode.equalsIgnoreCase("statistics")) { + log.debug("Statistics will be generated."); + Statistics s = getStatisticsGenerator(); + Collection<Statistic> statistics = s + .calculateStatistics(chartResult); + Document doc = this.writeStatistics2XML(statistics); + this.writeDocument2OutputStream(doc, outputStream); + } + } catch (IOException e) { + log.error(e, e); + throw new TransitionException(e); + } catch (TechnicalChartException e) { + log.error(e, e); + throw new TransitionException(e); + } catch (StatisticsException e) { + log.error(e, e); + throw new TransitionException(e); + } + } + + /** + * @return + */ + protected Statistics getStatisticsGenerator() { + Statistics s = new TimeseriesStatistics(); + return s; + } + + protected void writeDocument2OutputStream(Document document, OutputStream os) { + + try { + TransformerFactory transformerFactory = TransformerFactory + .newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(document); + StreamResult result = new StreamResult(os); + transformer.transform(source, result); + } catch (TransformerConfigurationException e) { + log.error(e, e); + } catch (TransformerFactoryConfigurationError e) { + log.error(e, e); + } catch (TransformerException e) { + log.error(e, e); + } + } + + protected Document writeStatistics2XML(Collection<Statistic> statistic) { + ArtifactXMLUtilities xmlUtilities = new ArtifactXMLUtilities(); + Document doc = XMLUtils.newDocument(); + if (statistic != null) { + Node statisticResults = xmlUtilities.createArtifactElement(doc, + "statistic-values"); + doc.appendChild(statisticResults); + Iterator<Statistic> it = statistic.iterator(); + while (it.hasNext()) { + Statistic s = it.next(); + Element result = xmlUtilities.createArtifactElement(doc, + "statistic"); + result.setAttribute("name", s.getKey()); + result.setAttribute("value", s.getStringValue()); + statisticResults.appendChild(result); + } + + } + return doc; + } + + protected String getSelectedFeatureName() { + Collection<KeyValueDescibeData> values = this + .getCollection(featureValuesName); + if (values != null) { + Iterator<KeyValueDescibeData> it = values.iterator(); + while (it.hasNext()) { + KeyValueDescibeData data = it.next(); + if (data.isSelected()) { + return data.getValue(); + } + } + } + return null; + } + + /** + * @param outputStream + * @param parameters + * @param measurements + * @param timeSeriesName + * @param chartStyle + * @param chartLables + * @throws IOException + * @throws TechnicalChartException + */ + protected void createChart(OutputStream outputStream, + Collection<KeyValueDescibeData> parameters, + Collection<KeyValueDescibeData> measurements, + ChartStyle chartStyle, ChartLabels chartLables, + String uuid) throws IOException, + TechnicalChartException { + ChartFactory chartFactory = new ChartFactory(); + chartFactory.createSimpleTimeSeriesChart(chartLables, chartStyle, + parameters, measurements, outputStream, this + .getChartResult(uuid)); + } + + protected ChartStyle creatStyle(int witdh, int height) { + // TODO Konfigurierbar machen + de.intevation.gnv.chart.Insets lInsets = new de.intevation.gnv.chart.Insets( + 5d, 5d, 5d, 5d); + Dimension lChartSize = new Dimension(witdh, height); + return new ChartStyle(Color.white, new Color(230, 230, 230), + Color.white, Color.white, true, true, lInsets, lChartSize); + } + + protected Collection<KeyValueDescibeData> getParameters() { + return this.getCollection(parameterValuesName); + } + + protected Collection<KeyValueDescibeData> getMeasurements() { + return this.getCollection(measuremenValueName); + } + + @Override + public void setup(Node configuration) { + super.setup(configuration); + String featureNameValue = Config.getStringXPath(configuration, "value-names/value-name[@name='feature']/@value"); + if (featureNameValue != null){ + this.featureValuesName = featureNameValue; + } + String parameterNameValue = Config.getStringXPath(configuration, "value-names/value-name[@name='parameter']/@value"); + if (parameterNameValue != null){ + this.parameterValuesName = parameterNameValue; + } + String measurementNameValue = Config.getStringXPath(configuration, "value-names/value-name[@name='measurement']/@value"); + if (measurementNameValue != null){ + this.measuremenValueName = measurementNameValue; + } + } + + /** + * @param collectionName + * @return + */ + protected Collection<KeyValueDescibeData> getCollection( + String collectionName) { + Iterator<Object> it = this.descibeData.iterator(); + while (it.hasNext()) { + + Object o = it.next(); + + if (o instanceof NamedCollection<?>) { + NamedCollection<KeyValueDescibeData> nc = (NamedCollection<KeyValueDescibeData>) o; + if (nc.getName().equals(collectionName)) { + return nc; + } + } + } + return null; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/ArtifactFactoryUtilities.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,56 @@ +/** + * + */ +package de.intevation.gnv.utils; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +import de.intevation.artifacts.ArtifactFactory; + + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class ArtifactFactoryUtilities { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(ArtifactFactoryUtilities.class); + /** + * Constructor + */ + public ArtifactFactoryUtilities() { + } + + public ArtifactFactory createArtitfactFactor(Document config, Node artifactFactoryNode){ + String className =artifactFactoryNode.getTextContent(); + + ArtifactFactory factory = null; + + try { + Class clazz = Class.forName(className); + factory = (ArtifactFactory)clazz.newInstance(); + } + catch (ClassNotFoundException cnfe) { + log.error(cnfe.getLocalizedMessage(), cnfe); + } + catch (InstantiationException ie) { + log.error(ie.getLocalizedMessage(), ie); + } + catch (ClassCastException cce) { + log.error(cce.getLocalizedMessage(), cce); + } + catch (IllegalAccessException iae) { + log.error(iae.getLocalizedMessage(), iae); + } + + if (factory != null) { + factory.setup(config, artifactFactoryNode); + log.info("Registering '" + factory.getName() + "' as artifact factory."); + } + return factory; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/ArtifactXMLUtilities.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,142 @@ +/** + * + */ +package de.intevation.gnv.utils; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.Serializable; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.xml.sax.SAXException; + +import de.intevation.artifacts.ArtifactNamespaceContext; +import de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class ArtifactXMLUtilities implements Serializable{ + /** + * + */ + private static final long serialVersionUID = -6236340358303411758L; + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(TimeSeriesOutputTransition.class); + + public static final String XFORM_URL = "http://www.w3.org/2002/xforms"; + public static final String XFORM_PREFIX = "xform"; + + /** + * Constructor + */ + public ArtifactXMLUtilities() { + } + + /** + * @param document + * @return + */ + public Element createArtifactElement(Document document, String name) { + Element node = document.createElementNS(ArtifactNamespaceContext.NAMESPACE_URI, name); + node.setPrefix(ArtifactNamespaceContext.NAMESPACE_PREFIX); + return node; + } + + public String writeDocument2String(Document document){ + try { + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(document); + StringWriter sw = new StringWriter(); + StreamResult result = new StreamResult(sw); + transformer.transform(source, result); + return sw.getBuffer().toString(); + } catch (TransformerConfigurationException e) { + log.error(e,e); + } catch (TransformerFactoryConfigurationError e) { + log.error(e,e); + } catch (TransformerException e) { + log.error(e,e); + } + return null; + } + + + + + public Document readDocument(InputStream inputStream){ + Document returnValue = null; + try { + DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); + returnValue = docBuilder.parse (inputStream); + } catch (ParserConfigurationException e) { + log.error(e,e); + } catch (SAXException e) { + log.error(e,e); + } catch (IOException e) { + log.error(e,e); + } + return returnValue; + } + + public Document reInitDocument(Document document){ + try { + byte[] barray = this.writeDocument2String(document).getBytes("UTF-8"); + InputStream inputStream = new ByteArrayInputStream(barray); + return this.readDocument(inputStream); + } catch (UnsupportedEncodingException e) { + log.error(e,e); + } + return document; + } + + public Element createXFormElement(Document document, String name) { + Element node = document.createElementNS(XFORM_URL, name); + node.setPrefix(XFORM_PREFIX); + return node; + } + + public Document createExceptionReport(String message, Document document){ + log.debug("ArtifactXMLUtilities.createExceptionReport"); + Element exceptionReportNode = this.createArtifactElement(document, "exceptionreport"); + document.appendChild(exceptionReportNode); + Element exceptionNode = this.createArtifactElement(document, "exception"); + exceptionNode.setTextContent(message); + exceptionReportNode.appendChild(exceptionNode); + return document; + } + + public Document createSuccessReport(String message, Document document){ + log.debug("ArtifactXMLUtilities.creatSuccessReport"); + Element reportNode = this.createArtifactElement(document, "result"); + document.appendChild(reportNode); + Element successNode = this.createArtifactElement(document, "success"); + successNode.setTextContent(message); + reportNode.appendChild(successNode); + return document; + } + + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/utils/InputValidator.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,60 @@ +/** + * + */ +package de.intevation.gnv.utils; + +import org.apache.commons.validator.GenericValidator; +import org.apache.log4j.Logger; + +import de.intevation.gnv.geobackend.util.DateUtils; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class InputValidator { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = Logger.getLogger(InputValidator.class); + + /** + * Constructor + */ + public InputValidator() { + super(); + } + + public boolean isInputValid(String input, String type){ + log.debug("InputValidator.isInputValid " + input+ " "+type); + boolean returnValue = false; + String[] values = input.split(","); + for (int i = 0; i < values.length; i++){ + boolean valid; + if ("Integer".equalsIgnoreCase(type)){ + valid = GenericValidator.isInt(values[i].trim()); + }else if ("Double".equalsIgnoreCase(type)){ + valid = GenericValidator.isDouble(values[i].trim()); + }else if ("String".equalsIgnoreCase(type)){ + valid = GenericValidator.matchRegexp(values[i], "[a-zA-Z0-9]"); // TODO: FIXME: VALIDATE REGEXP + }else if ("Date".equalsIgnoreCase(type)){ + valid = GenericValidator.isDate(values[i].trim(), DateUtils.DATE_PATTERN, true); + }else if ("Point".equalsIgnoreCase(type)){ + valid = GenericValidator.matchRegexp(values[i], "[0-9]"); // TODO: FIXME: VALIDATE REGEXP + }else if ("AttributeName".equalsIgnoreCase(type)){ + valid = org.apache.commons.validator.GenericValidator.matchRegexp(values[i], "[a-zA-Z0-9]"); // TODO: FIXME: VALIDATE REGEXP + }else{ + valid = false; + } + if (!valid){ + returnValue = false; + break; + }else{ + returnValue = true; + } + } + log.debug("Is valid? "+returnValue); + return returnValue; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/resources/lang/artifactMessages.properties Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,30 @@ +fis_marnet = Marnet +fis_imis = IMIS +fis_staun = STAUN +fis_modeldata = Modeldata +fis_delphin = Delphin +fis_thermosalinograph = Thermosalinograph +fis_chemusurvey = Chemusurvey +meshid= Mesh +product= Product +timeSeries= Timeseries +verticalProfile = Verticalprofile +horizontalProfile = Horizontalprofile +featureid = Object +mesh_coordinate = Coordinate Value (x y) +mesh_point = Meshpoint +measurementid = Measurement depth +parameterid = Parameter +minvalue = Minvalue +maxvalue = Maxvalue +dateid = Measurement date +vehicleid = Ship +cruiseid = Cruise +trackid = Track +seriesid = Series +surveyid = Survey Info +axisid = Axis +depthid = Depth +iposition = I-Achse +jposition = J-Achse +instantaneouspoint_point = Momentanmesspunkt \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_de.properties Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,31 @@ +fis_marnet = Marnet +fis_imis = IMIS +fis_staun = STAUN +fis_modeldata = Modeldaten +fis_delphin = Delphin +fis_thermosalinograph = Thermosalinograph +fis_chemusurvey = Chemusurvey + +product= Produkt +timeSeries= Zeitserie +verticalProfile = Vertikalprofil +horizontalProfile = Horizontalprofil +featureid = Station +meshid= Netz +mesh_coordinate = Koordinaten Wert (x y) +mesh_point = Messpunkt +measurementid = Messtiefe +parameterid = Parameter +minvalue = Minimalwert +maxvalue = Maximalwert +dateid = Messdatum +vehicleid = Schiff +cruiseid = Reise +trackid = Track +seriesid = Serie +surveyid = Messinformation +axisid = Achse +depthid = Tiefe +iposition = I-Achse +jposition = J-Achse +instantaneouspoint_point = Momentanmesspunkt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_de_DE.properties Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,31 @@ +fis_marnet = Marnet +fis_imis = IMIS +fis_staun = STAUN +fis_modeldata = Modeldaten +fis_delphin = Delphin +fis_thermosalinograph = Thermosalinograph +fis_chemusurvey = Chemusurvey + +product= Produkt +timeSeries= Zeitserie +verticalProfile = Vertikalprofil +horizontalProfile = Horizontalprofil +featureid = Station +meshid= Netz +mesh_coordinate = Koordinaten Wert (x y) +mesh_point = Messpunkt +measurementid = Messtiefe +parameterid = Parameter +minvalue = Minimalwert +maxvalue = Maximalwert +dateid = Messdatum +vehicleid = Schiff +cruiseid = Reise +trackid = Track +seriesid = Serie +surveyid = Messinformation +axisid = Achse +depthid = Tiefe +iposition = I-Achse +jposition = J-Achse +instantaneouspoint_point = Momentanmesspunkt \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/main/resources/lang/artifactMessages_en.properties Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,30 @@ +fis_marnet = Marnet +fis_imis = IMIS +fis_staun = STAUN +fis_modeldata = Modeldata +fis_delphin = Delphin +fis_thermosalinograph = Thermosalinograph +fis_chemusurvey = Chemusurvey +meshid= Mesh +product= Product +timeSeries= Timeseries +verticalProfile = Verticalprofile +horizontalProfile = Horizontalprofile +featureid = Object +mesh_coordinate = Coordinate Value (x y) +mesh_point = Meshpoint +measurementid = Measurement depth +parameterid = Parameter +minvalue = Minvalue +maxvalue = Maxvalue +dateid = Measurement date +vehicleid = Ship +cruiseid = Cruise +trackid = Track +seriesid = Series +surveyid = Survey Info +axisid = Axis +depthid = Depth +iposition = I-Axis +jposition = J-Axis +instantaneouspoint_point = Instantaneouspoint \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCase.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,662 @@ +/** + * + */ +package de.intevation.gnv.artifacts; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import junit.framework.TestCase; + +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + +import de.intevation.artifactdatabase.Config; +import de.intevation.artifactdatabase.DefaultCallMeta; +import de.intevation.artifactdatabase.DefaultPreferredLocale; +import de.intevation.artifactdatabase.FactoryBootstrap; +import de.intevation.artifacts.Artifact; +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.artifacts.CallContext; +import de.intevation.artifacts.CallMeta; +import de.intevation.artifacts.PreferredLocale; +import de.intevation.gnv.artifacts.context.GNVArtifactContext; +import de.intevation.gnv.utils.ArtifactXMLUtilities; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class GNVArtifactsTestCase extends TestCase { + + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = null; + + static { + BasicConfigurator.configure(); + log = Logger.getLogger(GNVArtifactContext.class); + } + + private String configurationDir = "src/test/ressources/"; + + private FactoryBootstrap bootstrap = null; + /** + * Constructor + * @param name + */ + public GNVArtifactsTestCase(String name) { + super(name); + } + + /** + * @see junit.framework.TestCase#setUp() + */ + protected void setUp() throws Exception { + log.debug("GNVArtifactsTestCase.setUp"); + super.setUp(); + log.info(Config.CONFIG_DIR + " ==> "+configurationDir); + System.setProperty(Config.CONFIG_DIR, configurationDir); + log.info("Bootstrap wird initialisiert."); + bootstrap = new FactoryBootstrap(); + bootstrap.boot(); + } + + public void testTimeSeriesArtifact(){ + try { + log.debug("GNVArtifactsTestCase.testTimeSeriesArtifact"); + String artefactName = "fis_marnet"; + ArtifactFactory artifactFactory = this.getArtifactFactory(artefactName); + assertNotNull(artifactFactory); + log.debug("TimeSeries-ArtifactFactory is available"); + Artifact artifact = artifactFactory.createArtifact(""+System.currentTimeMillis(),bootstrap.getContext()); + assertNotNull(artifact); + log.debug("TimeSeries-Artifact is available"); + + CallContext cc = createCallContext(); + + // Erster Schritt + + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries/timeseries_step_01_feed.xml", + "src/test/ressources/timeseries/timeseries_step_01_advance.xml"); + + // Zweiter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries/timeseries_step_02_feed.xml", + "src/test/ressources/timeseries/timeseries_step_02_advance.xml"); + + // Dritter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries/timeseries_step_03_feed.xml", + "src/test/ressources/timeseries/timeseries_step_03_advance.xml"); + + // Vierter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries/timeseries_step_04_feed.xml", + "src/test/ressources/timeseries/timeseries_step_04_advance.xml"); + + Document outputData; + // Fünfter Schritt + outputData = artifact.describe(cc); + FileOutputStream fos = null; + try{ + fos = new FileOutputStream("src/test/results/timeseriesdiagramm"+System.currentTimeMillis()+".png"); + artifact.feed(this.readDocument("src/test/ressources/timeseries/timeseries_step_05_feed.xml"), cc); + artifact.out(this.readDocument("src/test/ressources/timeseries/timeseries_step_05_out.xml"),fos, cc); + } catch (Exception e){ + log.error(e,e); + fail(); + }finally{ + try { + fos.flush(); + fos.close(); + } catch (Exception e) { + log.error(e,e); + } + } + } catch (Exception e) { + log.error(e,e); + fail(); + } + } + + /** + * @return + */ + private CallContext createCallContext() { + CallMeta callMeta = new DefaultCallMeta(new PreferredLocale[]{new DefaultPreferredLocale("de_DE", 1.0f)}); + CallContext cc = new TestCallContext(bootstrap.getContext(),callMeta); + return cc; + } + + /** + * @param artifact + * @param cc + * @throws Exception + */ + private void doNextStep(Artifact artifact, CallContext cc, String feedDocument, String advanceDocument) throws Exception { + Document outputData = artifact.describe(cc); + this.writeDocument2Log(outputData); + outputData = artifact.feed(this.readDocument(feedDocument), cc); + this.check4ExceptionReport(outputData); + outputData = artifact.advance(this.readDocument(advanceDocument), cc); + this.writeDocument2Log(outputData); + this.check4ExceptionReport(outputData); + + + } + + public void testTimeSeriesMeshArtifact(){ + try { + log.debug("GNVArtifactsTestCase.testTimeSeriesMeshArtifact"); + String artefactName = "fis_modeldata"; + ArtifactFactory artifactFactory = this.getArtifactFactory(artefactName); + assertNotNull(artifactFactory); + log.debug("TimeSeriesMesh-ArtifactFactory is available"); + Artifact artifact = artifactFactory.createArtifact(""+System.currentTimeMillis(),bootstrap.getContext()); + assertNotNull(artifact); + log.debug("TimeSeriesMesh-Artifact is available"); + + + CallContext cc = createCallContext(); + + // Erster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries_mesh/timeseries_step_01_feed.xml", + "src/test/ressources/timeseries_mesh/timeseries_step_01_advance.xml"); + + // Zweiter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries_mesh/timeseries_step_02_feed.xml", + "src/test/ressources/timeseries_mesh/timeseries_step_02_advance.xml"); + + // Dritter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries_mesh/timeseries_step_03_feed.xml", + "src/test/ressources/timeseries_mesh/timeseries_step_03_advance.xml"); + + + // Vierter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries_mesh/timeseries_step_04_feed.xml", + "src/test/ressources/timeseries_mesh/timeseries_step_04_advance.xml"); + + // Fünfter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries_mesh/timeseries_step_05_feed.xml", + "src/test/ressources/timeseries_mesh/timeseries_step_05_advance.xml"); + + // Sechster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/timeseries_mesh/timeseries_step_06_feed.xml", + "src/test/ressources/timeseries_mesh/timeseries_step_06_advance.xml"); + + // Siebter Schritt + Document outputData = artifact.describe(cc); + FileOutputStream fos = null; + FileOutputStream fos2 = null; + FileOutputStream fos3 = null; + try{ + fos = new FileOutputStream("src/test/results/timeseries_mesh"+System.currentTimeMillis()+".png"); + fos2 = new FileOutputStream("src/test/results/timeseries_mesh"+System.currentTimeMillis()+".xml"); + fos3 = new FileOutputStream("src/test/results/timeseries_mesh"+System.currentTimeMillis()+".csv"); + artifact.feed(this.readDocument("src/test/ressources/timeseries_mesh/timeseries_step_07_feed.xml"), cc); + artifact.out(this.readDocument("src/test/ressources/timeseries_mesh/timeseries_step_07_out_statistics.xml"),fos2, cc); + artifact.out(this.readDocument("src/test/ressources/timeseries_mesh/timeseries_step_07_out_chart.xml"),fos, cc); + artifact.out(this.readDocument("src/test/ressources/timeseries_mesh/timeseries_step_07_out_csv.xml"),fos3, cc); + } catch (Exception e){ + log.error(e,e); + fail(); + }finally{ + try { + fos.flush(); + fos.close(); + fos2.flush(); + fos2.close(); + fos3.flush(); + fos3.close(); + } catch (Exception e) { + log.error(e,e); + } + } + } catch (Exception e) { + log.error(e,e); + fail(); + } + } + + public void testVerticalProfileArtifact(){ + try { + log.debug("GNVArtifactsTestCase.testVerticalProfileArtifact"); + String artefactName = "fis_marnet"; + ArtifactFactory artifactFactory = this.getArtifactFactory(artefactName); + assertNotNull(artifactFactory); + log.debug("VerticalProfile-ArtifactFactory is available"); + Artifact artifact = artifactFactory.createArtifact(""+System.currentTimeMillis(),bootstrap.getContext()); + assertNotNull(artifact); + log.debug("VerticalProfile-Artifact is available"); + + + CallContext cc = createCallContext(); + + // Erster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile/verticalprofile_step_01_feed.xml", + "src/test/ressources/verticalprofile/verticalprofile_step_02_advance.xml"); + + + // Zweiter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile/verticalprofile_step_02_feed.xml", + "src/test/ressources/verticalprofile/verticalprofile_step_02_advance.xml"); + + + // Dritter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile/verticalprofile_step_03_feed.xml", + "src/test/ressources/verticalprofile/verticalprofile_step_03_advance.xml"); + + + // Vierter Schritt + Document outputData = artifact.describe(cc); + FileOutputStream fos = null; + FileOutputStream fos2 = null; + FileOutputStream fos3 = null; + try{ + fos = new FileOutputStream("src/test/results/verticalprofile"+System.currentTimeMillis()+".png"); + fos2 = new FileOutputStream("src/test/results/verticalprofile"+System.currentTimeMillis()+".xml"); + fos3 = new FileOutputStream("src/test/results/verticalprofile"+System.currentTimeMillis()+".csv"); + artifact.feed(this.readDocument("src/test/ressources/verticalprofile/verticalprofile_step_04_feed.xml"), cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile/verticalprofile_step_04_out_statistics.xml"),fos2, cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile/verticalprofile_step_04_out_chart.xml"),fos, cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile/verticalprofile_step_04_out_csv.xml"),fos3, cc); + } catch (Exception e){ + log.error(e,e); + fail(); + }finally{ + try { + fos.flush(); + fos.close(); + fos2.flush(); + fos2.close(); + fos3.flush(); + fos3.close(); + } catch (Exception e) { + log.error(e,e); + } + } + } catch (Exception e) { + log.error(e,e); + fail(); + } + } + + public void testVerticalProfileMeshArtifact(){ + try { + log.debug("GNVArtifactsTestCase.testVerticalProfileArtifact"); + String artefactName = "fis_modeldata"; + ArtifactFactory artifactFactory = this.getArtifactFactory(artefactName); + assertNotNull(artifactFactory); + log.debug("VerticalProfile-ArtifactFactory is available"); + Artifact artifact = artifactFactory.createArtifact(""+System.currentTimeMillis(),bootstrap.getContext()); + assertNotNull(artifact); + log.debug("VerticalProfile-Artifact is available"); + + + CallContext cc = createCallContext(); + + // Erster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_feed.xml", + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_advance.xml"); + + // Zweiter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_feed.xml", + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_advance.xml"); + + // Dritter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_feed.xml", + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_advance.xml"); + + // Vierter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_feed.xml", + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_advance.xml"); + + // Fünfter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_feed.xml", + "src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_advance.xml"); + + // Sechster Schritt + Document outputData = artifact.describe(cc); + FileOutputStream fos = null; + FileOutputStream fos2 = null; + FileOutputStream fos3 = null; + try{ + fos = new FileOutputStream("src/test/results/verticalprofile_mesh"+System.currentTimeMillis()+".png"); + fos2 = new FileOutputStream("src/test/results/verticalprofile_mesh"+System.currentTimeMillis()+".xml"); + fos3 = new FileOutputStream("src/test/results/verticalprofile_mesh"+System.currentTimeMillis()+".csv"); + artifact.feed(this.readDocument("src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_feed.xml"), cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_out_statistics.xml"),fos2, cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_out_chart.xml"),fos, cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_out_csv.xml"),fos3, cc); + } catch (Exception e){ + log.error(e,e); + fail(); + }finally{ + try { + fos.flush(); + fos.close(); + fos2.flush(); + fos2.close(); + fos3.flush(); + fos3.close(); + } catch (Exception e) { + log.error(e,e); + } + } + } catch (Exception e) { + log.error(e,e); + fail(); + } + } + + + + public void testVerticalProfileInstantaneousPointArtifact(){ + try { + log.debug("GNVArtifactsTestCase.testVerticalProfileArtifact"); + String artefactName = "fis_bsh_ctd"; + ArtifactFactory artifactFactory = this.getArtifactFactory(artefactName); + assertNotNull(artifactFactory); + log.debug("VerticalProfile-ArtifactFactory is available"); + Artifact artifact = artifactFactory.createArtifact(""+System.currentTimeMillis(),bootstrap.getContext()); + assertNotNull(artifact); + log.debug("VerticalProfile-Artifact is available"); + + + CallContext cc = createCallContext(); + + // Erster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_feed.xml", + "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_advance.xml"); + + // Zweiter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_feed.xml", + "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_advance.xml"); + + // Dritter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_feed.xml", + "src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_advance.xml"); + + // Vierter Schritt + Document outputData = artifact.describe(cc); + FileOutputStream fos = null; + FileOutputStream fos2 = null; + FileOutputStream fos3 = null; + try{ + fos = new FileOutputStream("src/test/results/verticalprofile_instantaneouspoint"+System.currentTimeMillis()+".png"); + fos2 = new FileOutputStream("src/test/results/verticalprofile_instantaneouspoint"+System.currentTimeMillis()+".xml"); + fos3 = new FileOutputStream("src/test/results/verticalprofile_instantaneouspoint"+System.currentTimeMillis()+".csv"); + artifact.feed(this.readDocument("src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_feed.xml"), cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_out_statistics.xml"),fos2, cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_out_chart.xml"),fos, cc); + artifact.out(this.readDocument("src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_out_csv.xml"),fos3, cc); + } catch (Exception e){ + log.error(e,e); + fail(); + }finally{ + try { + fos.flush(); + fos.close(); + fos2.flush(); + fos2.close(); + fos3.flush(); + fos3.close(); + } catch (Exception e) { + log.error(e,e); + } + } + } catch (Exception e) { + log.error(e,e); + fail(); + } + } + + public void testHorizontalProfileInstantaneousPointArtifact(){ + try { + log.debug("GNVArtifactsTestCase.testHorizontalProfileInstantaneousPointArtifact"); + String artefactName = "fis_delphin"; + ArtifactFactory artifactFactory = this.getArtifactFactory(artefactName); + assertNotNull(artifactFactory); + log.debug("VerticalProfile-ArtifactFactory is available"); + Artifact artifact = artifactFactory.createArtifact(""+System.currentTimeMillis(),bootstrap.getContext()); + assertNotNull(artifact); + log.debug("VerticalProfile-Artifact is available"); + + + CallContext cc = createCallContext(); + + // Erster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_feed.xml", + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_advance.xml"); + + + // Erster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_feed.xml", + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_advance.xml"); + + // Zweiter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_feed.xml", + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_advance.xml"); + // Dritter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_feed.xml", + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_advance.xml"); + // Vierter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_feed.xml", + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_advance.xml"); + // Fünfter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_feed.xml", + "src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_advance.xml"); + + + Document outputData = artifact.describe(cc); + FileOutputStream fos = null; + FileOutputStream fos2 = null; + FileOutputStream fos3 = null; + try{ + fos = new FileOutputStream("src/test/results/horizontalprofile_instantaneouspoint"+System.currentTimeMillis()+".png"); + fos2 = new FileOutputStream("src/test/results/horizontalprofile_instantaneouspoint"+System.currentTimeMillis()+".xml"); + fos3 = new FileOutputStream("src/test/results/horizontalprofile_instantaneouspoint"+System.currentTimeMillis()+".csv"); + artifact.feed(this.readDocument("src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_feed.xml"), cc); + //artifact.out(this.readDocument("src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_statistics.xml"),fos2, cc); + artifact.out(this.readDocument("src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_chart.xml"),fos, cc); +// artifact.out(this.readDocument("src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_csv.xml"),fos3, cc); + } catch (Exception e){ + log.error(e,e); + fail(); + }finally{ + try { + fos.flush(); + fos.close(); + fos2.flush(); + fos2.close(); + fos3.flush(); + fos3.close(); + } catch (Exception e) { + log.error(e,e); + } + } + } catch (Exception e) { + log.error(e,e); + fail(); + } + } + + public void testHorizontalProfileMeshPointArtifact(){ + try { + log.debug("GNVArtifactsTestCase.testHorizontalProfileInstantaneousPointArtifact"); + String artefactName = "fis_modeldata"; + ArtifactFactory artifactFactory = this.getArtifactFactory(artefactName); + assertNotNull(artifactFactory); + log.debug("VerticalProfile-ArtifactFactory is available"); + Artifact artifact = artifactFactory.createArtifact(""+System.currentTimeMillis(),bootstrap.getContext()); + assertNotNull(artifact); + log.debug("VerticalProfile-Artifact is available"); + + + CallContext cc = createCallContext(); + + + + // Erster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_feed.xml", + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_advance.xml"); + + // Zweiter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_feed.xml", + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_advance.xml"); + // Dritter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_feed.xml", + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_advance.xml"); + // Vierter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_feed.xml", + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_advance.xml"); + // Fünfter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_feed.xml", + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_advance.xml"); + + // Sechster Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_feed.xml", + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_advance.xml"); + + // Siebter Schritt + this.doNextStep(artifact, cc, + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_feed.xml", + "src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_advance.xml"); + + Document outputData = artifact.describe(cc); + FileOutputStream fos = null; + FileOutputStream fos2 = null; + FileOutputStream fos3 = null; + try{ + fos = new FileOutputStream("src/test/results/horizontalProfile_mesh"+System.currentTimeMillis()+".png"); + fos2 = new FileOutputStream("src/test/results/horizontalProfile_mesh"+System.currentTimeMillis()+".xml"); + fos3 = new FileOutputStream("src/test/results/horizontalProfile_mesh"+System.currentTimeMillis()+".csv"); + artifact.feed(this.readDocument("src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_feed.xml"), cc); + artifact.out(this.readDocument("src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_out_statistics.xml"),fos2, cc); + artifact.out(this.readDocument("src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_out_chart.xml"),fos, cc); +// artifact.out(this.readDocument("src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_out_csv.xml"),fos3, cc); + } catch (Exception e){ + log.error(e,e); + fail(); + }finally{ + try { + fos.flush(); + fos.close(); + fos2.flush(); + fos2.close(); + fos3.flush(); + fos3.close(); + } catch (Exception e) { + log.error(e,e); + } + } + } catch (Exception e) { + log.error(e,e); + fail(); + } + } + + protected void createFile(byte[] content, String fileName){ + try { + FileOutputStream fos = new FileOutputStream(new File(fileName)); + ByteArrayInputStream bis = new ByteArrayInputStream(content); + byte[] buf = new byte[4096]; + while (bis.read(buf) > 0){ + fos.write(buf); + } + fos.flush(); + fos.close(); + } catch (FileNotFoundException e) { + log.error(e,e); + } catch (IOException e) { + log.error(e,e); + } + } + + + /** + * @param artefactName + */ + private ArtifactFactory getArtifactFactory(String artefactName){ + log.debug("GNVArtifactsTestCase.getArtifactFactory"); + ArtifactFactory[] artifactFactories = bootstrap.getArtifactFactories(); + for (int i = 0; i < artifactFactories.length; i++){ + if (artifactFactories[i].getName().equals(artefactName)){ + log.debug("ArtifactFactory wurde gefunden."); + return artifactFactories[i]; + } + } + return null; + } + + protected void writeDocument2Log(Document document){ + log.debug(new ArtifactXMLUtilities().writeDocument2String(document)); + } + + + protected Document readDocument(String fileName){ + Document returnValue = null; + try { + DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); + returnValue = docBuilder.parse (new File(fileName)); + } catch (ParserConfigurationException e) { + log.error(e,e); + } catch (SAXException e) { + log.error(e,e); + } catch (IOException e) { + log.error(e,e); + } + return returnValue; + } + + + private void check4ExceptionReport(Document document) throws Exception{ + document = new ArtifactXMLUtilities().reInitDocument(document); + String message = Config.getStringXPath(document,"/exceptionreport/exception"); + if (message != null){ + throw new Exception(message); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/TestCallContext.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,48 @@ +/** + * + */ +package de.intevation.gnv.artifacts; + +import de.intevation.artifacts.CallContext; +import de.intevation.artifacts.CallMeta; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class TestCallContext implements CallContext { + + private Object globalContext = null; + private CallMeta callMeta = null; + /** + * Constructor + */ + public TestCallContext(Object globalContext, CallMeta callMeta) { + this.globalContext = globalContext; + this.callMeta = callMeta; + } + + /** + * @see de.intevation.artifacts.CallContext#afterBackground(int) + */ + public void afterBackground(int action) { + } + + /** + * @see de.intevation.artifacts.CallContext#afterCall(int) + */ + public void afterCall(int action) { + } + + /** + * @see de.intevation.artifacts.CallContext#globalContext() + */ + public Object globalContext() { + return this.globalContext; + } + + public CallMeta getMeta() { + return this.callMeta; + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/ressource/RessourceFactoryTestCase.java Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,50 @@ +package de.intevation.gnv.artifacts.ressource; + +import junit.framework.TestCase; + +import org.apache.log4j.BasicConfigurator; +import org.apache.log4j.Logger; + +import de.intevation.artifactdatabase.DefaultPreferredLocale; +import de.intevation.artifacts.PreferredLocale; + +/** + * @author Tim Englich <tim.englich@intevation.de> + * + */ +public class RessourceFactoryTestCase extends TestCase { + /** + * the logger, used to log exceptions and additonaly information + */ + private static Logger log = null; + + static { + BasicConfigurator.configure(); + log = Logger.getLogger(RessourceFactoryTestCase.class); + } + /** + * Constructor + * @param name + */ + public RessourceFactoryTestCase(String name) { + super(name); + } + + /** + * @see junit.framework.TestCase#setUp() + */ + protected void setUp() throws Exception { + super.setUp(); +// System.setProperty("artifact.ressource.dir", +// "src/test/ressources/lang"); + } + + public void testRessurceFactoryTestCase(){ + ; + String value = RessourceFactory.getInstance().getRessource( new PreferredLocale[]{new DefaultPreferredLocale("de", 1.0f)}, "fis_modeldata", "N/N"); + log.debug(value); + value = RessourceFactory.getInstance().getRessource( new PreferredLocale[]{new DefaultPreferredLocale("en", 1.0f)}, "fis_modeldata", "N/N"); + log.debug(value); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/conf.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,827 @@ +<?xml version="1.0" encoding="UTF-8"?> +<artifact-database> + <factories> + <context-factory>de.intevation.gnv.artifacts.context.GNVArtifactContextFactory</context-factory> + <artifact-factories> + <artifact-factory name="fis_marnet" description="Artiefactfactory for Instantiating the Artifact for the FIS Marnet" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_imis" description="Artiefactfactory for Instantiating the Artifact for the FIS IMIS" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_staun" description="Artiefactfactory for Instantiating the Artifact for the FIS STAUN" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_modeldata" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_delphin" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_thermosalinograph" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_chemusurvey" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_gts" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_bsh_ctd" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <artifact-factory name="fis_bsh_cbt" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.artifacts.fis.FISArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + </artifact-factories> + </factories> + <artifacts> + <artifact name="fis_marnet"> + <products> + <product name= "timeSeries"> + <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="4"/> + </parameters> + </product> + <product name= "verticalProfile"> + <artifact-factory name="verticalProfile" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="4"/> + </parameters> + </product> + </products> + </artifact> + <artifact name="fis_imis"> + <products> + <product name= "timeSeries"> + <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="18"/> + </parameters> + </product> + <product name= "verticalProfile"> + <artifact-factory name="verticalProfile" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="18"/> + </parameters> + </product> + </products> + </artifact> + <artifact name="fis_staun"> + <products> + <product name= "timeSeries"> + <artifact-factory name="timeSeries" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="17"/> + </parameters> + </product> + <product name= "verticalProfile"> + <artifact-factory name="verticalProfile" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="17"/> + </parameters> + </product> + </products> + </artifact> + <artifact name="fis_modeldata"> + <products> + <product name= "timeSeries"> + <artifact-factory name="timeSeriesMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.timeseries.TimeSeriesMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters></parameters> + </product> + <product name= "verticalProfile"> + <artifact-factory name="verticalProfileMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters></parameters> + </product> + <product name= "horizontalProfile"> + <artifact-factory name="horizontalProfilehorizontalProfileMesh" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileMeshArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters></parameters> + </product> + </products> + </artifact> + <artifact name="fis_delphin"> + <products> + <product name= "horizontalProfile"> + <artifact-factory name="horizontalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="34"/> + </parameters> + </product> + + </products> + </artifact> + <artifact name="fis_thermosalinograph"> + <products> + <product name= "horizontalProfile"> + <artifact-factory name="horizontalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="35"/> + </parameters> + </product> + + </products> + </artifact> + <artifact name="fis_chemusurvey"> + <products> + <product name= "horizontalProfile"> + <artifact-factory name="horizontalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.horizontal.HorizontalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="37"/> + </parameters> + </product> + + </products> + </artifact> + <artifact name="fis_gts"> + <products> + <product name= "verticalProfile"> + <artifact-factory name="verticalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="5"/> + </parameters> + </product> + </products> + </artifact> + <artifact name="fis_bsh_ctd"> + <products> + <product name= "verticalProfile"> + <artifact-factory name="verticalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="32"/> + </parameters> + </product> + </products> + </artifact> + <artifact name="fis_bsh_cbt"> + <products> + <product name= "verticalProfile"> + <artifact-factory name="verticalProfileInstantaneousPoint" description="Artiefactfactory for Instantiating the Artifact for the FIS Modeldata" + ttl="300000" artifact="de.intevation.gnv.profile.vertical.VerticalProfileInstantaneousPointArtifact">de.intevation.artifactdatabase.DefaultArtifactFactory</artifact-factory> + <parameters> + <parameter name="sourceid" value="36"/> + </parameters> + </product> + </products> + </artifact> + <artifact name="timeSeriesMesh"> + <transitions> + + <transition id="timeseries_mesh" description="timeseries_mesh" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>timeseries_mesh</queryID> + <dataname>meshid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>timeseries_mesh_coordinate</transition> + </reachableTransitions> + <inputvalues> + </inputvalues> + </transition> + + <transition id="timeseries_mesh_coordinate" description="timeseries_mesh_coordinate" transition="de.intevation.gnv.transition.SingleInputTransition"> + <dataname>mesh_coordinate</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>timeseries_meshpoint</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + + <transition id="timeseries_meshpoint" description="timeseries_meshpoint" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>timeseries_meshpoint</queryID> + <dataname>mesh_point</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>timeseries_meshpoint_depth</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false"/> + <inputvalue name="mesh_coordinate" type="Point" multiselect="false" usedinquery="0"/> + </inputvalues> + </transition> + + <transition id="timeseries_meshpoint_depth" description="timeseries_meshpoint_depth" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>timeseries_meshpoint_depth</queryID> + <dataname>measurementid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>timeseries_meshpoint_parameter</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="2"/> + </inputvalues> + </transition> + + <transition id="timeseries_meshpoint_parameter" description="timeseries_meshpoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>timeseries_mesh_parameter</queryID> + <dataname>parameterid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>timeseries_meshpoint_interval</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="measurementid" type="Integer" multiselect="false" usedinquery="0"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/> + </inputvalues> + </transition> + + <transition id="timeseries_meshpoint_interval" description="timeseries_interval" transition="de.intevation.gnv.transition.MinMaxTransition"> + <queryID>timeseries_mesh_interval</queryID> + <dataname>minvalue</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>timeseries_meshpoint_calculate_results</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="measurementid" type="Integer" multiselect="false" usedinquery="0"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/> + <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="0"/> + </inputvalues> + </transition> + + <transition id="timeseries_meshpoint_calculate_results" description="timeseries_interval" transition="de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition"> + <queryID>timeseries_mesh_chart_data</queryID> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/> + <inputvalue name="measurementid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="minvalue" type="Date" multiselect="false" usedinquery="1"/> + <inputvalue name="maxvalue" type="Date" multiselect="false" usedinquery="1"/> + </inputvalues> + <value-names> + <value-name name="feature" value="meshid"></value-name> + <value-name name="parameter" value="parameterid"></value-name> + <value-name name="measurement" value="measurementid"></value-name> + </value-names> + <outputsModes> + <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png"> + <parameters> + <inputvalue name="width" type="Integer" value="600"/> + <inputvalue name="height" type="Integer" value="400"/> + </parameters> + </outputsMode> + <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/> + <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/> + </outputsModes> + </transition> + + </transitions> + </artifact> + + + <artifact name="timeSeries"> + <transitions> + <transition id="timeseries_timeseriespoint" description="timeseries_timeseriespoint" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>timeseries_timeseriespoint</queryID> + <dataname>featureid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>timeseries_parameter</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="sourceid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + + <transition id="timeseries_parameter" description="timeseries_parameter" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>timeseries_parameter</queryID> + <dataname>parameterid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>timeseries_depth_height</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="featureid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + + <transition id="timeseries_depth_height" description="timeseries_depth_height" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>timeseries_depth_height</queryID> + <dataname>measurementid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>timeseries_interval</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="featureid" type="Integer" multiselect="false"/> + <inputvalue name="parameterid" type="Integer" multiselect="true"/> + </inputvalues> + </transition> + + <transition id="timeseries_interval" description="timeseries_interval" transition="de.intevation.gnv.transition.MinMaxTransition"> + <queryID>timeseries_interval</queryID> + <dataname>minvalue</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>timeseries_calculate_results</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="parameterid" type="Integer" multiselect="true"/> + <inputvalue name="measurementid" type="Integer" multiselect="true"/> + </inputvalues> + </transition> + + <transition id="timeseries_calculate_results" description="timeseries_interval" transition="de.intevation.gnv.transition.timeseries.TimeSeriesOutputTransition"> + <queryID>timeseries_chart_data</queryID> + <inputvalues> + <inputvalue name="parameterid" type="Integer" multiselect="true"/> + <inputvalue name="measurementid" type="Integer" multiselect="true"/> + <inputvalue name="minvalue" type="Date" multiselect="false"/> + <inputvalue name="maxvalue" type="Date" multiselect="false"/> + </inputvalues> + <outputsModes> + <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png"> + <parameters> + <inputvalue name="width" type="Integer" value="600"/> + <inputvalue name="height" type="Integer" value="400"/> + </parameters> + </outputsMode> + <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/> + <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/> + </outputsModes> + </transition> + + </transitions> + </artifact> + + <artifact name="verticalProfile"> + <transitions> + <transition id="verticalprofile_timeseriespoint" description="timeseries_timeseriespoint" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_point</queryID> + <dataname>featureid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_parameter</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="sourceid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + + <transition id="verticalprofile_parameter" description="timeseries_parameter" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_parameter</queryID> + <dataname>parameterid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_date</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="featureid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + + <transition id="verticalprofile_date" description="verticalprofile_date" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_date</queryID> + <dataname>dateid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_calculate_results</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="featureid" type="Integer" multiselect="false"/> + <inputvalue name="parameterid" type="Integer" multiselect="true"/> + </inputvalues> + </transition> + + <transition id="verticalprofile_calculate_results" description="verticalprofile_calculate_results" transition="de.intevation.gnv.transition.profile.vertical.VerticalProfileOutputTransition"> + <queryID>verticalprofile_chart_data</queryID> + <inputvalues> + <inputvalue name="featureid" type="Integer" multiselect="false"/> + <inputvalue name="parameterid" type="Integer" multiselect="true"/> + <inputvalue name="dateid" type="Date" multiselect="true"/> + </inputvalues> + <value-names> + <value-name name="feature" value="featureid"></value-name> + <value-name name="parameter" value="parameterid"></value-name> + <value-name name="measurement" value="dateid"></value-name> + </value-names> + <outputsModes> + <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png"> + <parameters> + <inputvalue name="width" type="Integer" value="600"/> + <inputvalue name="height" type="Integer" value="400"/> + </parameters> + </outputsMode> + <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/> + <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/> + </outputsModes> + </transition> + </transitions> + </artifact> + + <artifact name="verticalProfileMesh"> + <transitions> + <transition id="verticalprofile_mesh" description="verticalprofile_mesh" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_mesh</queryID> + <dataname>meshid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_mesh_coordinate</transition> + </reachableTransitions> + <inputvalues> + </inputvalues> + </transition> + + <transition id="verticalprofile_mesh_coordinate" description="verticalprofile_mesh_coordinate" transition="de.intevation.gnv.transition.SingleInputTransition"> + <dataname>mesh_coordinate</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_mesh_point</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + + <transition id="verticalprofile_mesh_point" description="verticalprofile_mesh_point" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_mesh_point</queryID> + <dataname>mesh_point</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_meshpoint_parameter</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false"/> + <inputvalue name="mesh_coordinate" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + + <transition id="verticalprofile_meshpoint_parameter" description="verticalprofile_meshpoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_mesh_parameter</queryID> + <dataname>parameterid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_mesh_date</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/> + </inputvalues> + </transition> + + <transition id="verticalprofile_mesh_date" description="verticalprofile_mesh_date" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_mesh_date</queryID> + <dataname>dateid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_mesh_calculate_results</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/> + <inputvalue name="parameterid" type="Integer" multiselect="true"/> + </inputvalues> + </transition> + + <transition id="verticalprofile_mesh_calculate_results" description="verticalprofile_mesh_calculate_results" transition="de.intevation.gnv.transition.profile.vertical.VerticalProfileOutputTransition"> + <queryID>verticalprofile_mesh_chart_data</queryID> + <inputvalues> + <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/> + <inputvalue name="dateid" type="Date" multiselect="true" usedinquery="1"/> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="2"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="2"/> + </inputvalues> + <value-names> + <value-name name="feature" value="meshid"></value-name> + <value-name name="parameter" value="parameterid"></value-name> + <value-name name="measurement" value="dateid"></value-name> + </value-names> + <outputsModes> + <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png"> + <parameters> + <inputvalue name="width" type="Integer" value="600"/> + <inputvalue name="height" type="Integer" value="400"/> + </parameters> + </outputsMode> + <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/> + <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/> + </outputsModes> + </transition> + </transitions> + </artifact> + + <artifact name="verticalProfileInstantaneousPoint"> + <transitions> + <transition id="verticalprofile_instantaneouspoint_series" description="verticalprofile_instantaneouspoint_series" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_instantaneouspoint_series</queryID> + <dataname>seriesid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_instantaneouspoint_point</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="sourceid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + <transition id="verticalprofile_instantaneouspoint_point" description="verticalprofile_instantaneouspoint_point" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_instantaneouspoint_point</queryID> + <dataname>instantaneouspoint_point</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_instantaneouspoint_parameter</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="seriesid" type="Integer" multiselect="false"/> + <inputvalue name="sourceid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + <transition id="verticalprofile_instantaneouspoint_parameter" description="verticalprofile_instantaneouspoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_instantaneouspoint_parameter</queryID> + <dataname>parameterid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>verticalprofile_instantaneouspoint_calculate_results</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="seriesid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="instantaneouspoint_point" type="Integer" multiselect="false" usedinquery="1"/> + </inputvalues> + </transition> + <transition id="verticalprofile_instantaneouspoint_calculate_results" description="verticalprofile_mesh_calculate_results" transition="de.intevation.gnv.transition.profile.vertical.VerticalProfileOutputTransition"> + <queryID>verticalprofile_instantaneouspoint_chart_data</queryID> + <inputvalues> + <inputvalue name="seriesid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="instantaneouspoint_point" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/> + </inputvalues> + <value-names> + <value-name name="feature" value="seriesid"></value-name> + <value-name name="parameter" value="parameterid"></value-name> + <value-name name="measurement" value="dateid"></value-name> + </value-names> + <outputsModes> + <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png"> + <parameters> + <inputvalue name="width" type="Integer" value="600"/> + <inputvalue name="height" type="Integer" value="400"/> + </parameters> + </outputsMode> + <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/> + <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/> + </outputsModes> + </transition> + </transitions> + </artifact> + + <artifact name="horizontalProfileInstantaneousPoint"> + <transitions> + <transition id="horizontalprofile_instantaneouspoint_vehicle" description="horizontalprofile_instantaneouspoint_vehicle" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>horizontalprofile_instantaneouspoint_vehicle</queryID> + <dataname>vehicleid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_instantaneouspoint_cruise</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="sourceid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + <transition id="horizontalprofile_instantaneouspoint_cruise" description="horizontalprofile_instantaneouspoint_cruise" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>horizontalprofile_instantaneouspoint_cruise</queryID> + <dataname>cruiseid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_instantaneouspoint_track</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="vehicleid" type="Integer" multiselect="false"/> + <inputvalue name="sourceid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + <transition id="horizontalprofile_instantaneouspoint_track" description="horizontalprofile_instantaneouspoint_track" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>horizontalprofile_instantaneouspoint_track</queryID> + <dataname>trackid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_instantaneouspoint_surveyinfo</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="1" /> + </inputvalues> + </transition> + <transition id="horizontalprofile_instantaneouspoint_surveyinfo" description="horizontalprofile_instantaneouspoint_surveyinfo" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>horizontalprofile_instantaneouspoint_surveyinfo</queryID> + <dataname>surveyid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_instantaneouspoint_parameter</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="trackid" type="Integer" multiselect="false" usedinquery="1" /> + </inputvalues> + </transition> + <transition id="horizontalprofile_instantaneouspoint_parameter" description="horizontalprofile_instantaneouspoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>horizontalprofile_instantaneouspoint_parameter</queryID> + <dataname>parameterid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_instantaneouspoint_depth</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="trackid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="surveyid" type="Integer" multiselect="false" usedinquery="1" /> + </inputvalues> + </transition> + <transition id="horizontalprofile_instantaneouspoint_depth" description="horizontalprofile_instantaneouspoint_depth" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>horizontalprofile_instantaneouspoint_depth</queryID> + <dataname>measurementid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_instantaneouspoint_calculate_results</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="trackid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="surveyid" type="Integer" multiselect="false" usedinquery="1" /> + <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="0" /> + </inputvalues> + </transition> + <transition id="horizontalprofile_instantaneouspoint_calculate_results" description="horizontalprofile_instantaneouspoint_calculate_results" transition="de.intevation.gnv.transition.profile.horizontal.HorizontalProfileOutputTransition"> + <queryID>horizontalprofile_instantaneouspoint_chart_data</queryID> + <inputvalues> + <inputvalue name="cruiseid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="trackid" type="Integer" multiselect="false" usedinquery="0" /> + <inputvalue name="surveyid" type="Integer" multiselect="false" usedinquery="1" /> + <inputvalue name="measurementid" type="Double" multiselect="true" usedinquery="1" /> + <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1" /> + </inputvalues> + <value-names> + <value-name name="feature" value="cruiseid"></value-name> + <value-name name="parameter" value="parameterid"></value-name> + <value-name name="measurement" value="measurementid"></value-name> + </value-names> + <outputsModes> + <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png"> + <parameters> + <inputvalue name="width" type="Integer" value="600"/> + <inputvalue name="height" type="Integer" value="400"/> + </parameters> + </outputsMode> + <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/> + <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/> + </outputsModes> + </transition> + </transitions> + </artifact> + + <artifact name="horizontalProfileMesh"> + <transitions> + <transition id="horizontalprofile_mesh" description="horizontalprofile_mesh" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_mesh</queryID> + <dataname>meshid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_mesh_coordinate</transition> + </reachableTransitions> + <inputvalues> + </inputvalues> + </transition> + + <transition id="horizontalprofile_mesh_coordinate" description="horizontalprofile_mesh_coordinate" transition="de.intevation.gnv.transition.SingleInputTransition"> + <dataname>mesh_coordinate</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_mesh_point</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + + <transition id="horizontalprofile_mesh_point" description="horizontalprofile_mesh_point" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_mesh_point</queryID> + <dataname>mesh_point</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_mesh_axis</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false"/> + <inputvalue name="mesh_coordinate" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + <transition id="horizontalprofile_mesh_axis" description="horizontalprofile_mesh_point" transition="de.intevation.gnv.transition.profile.horizontal.NorthSouthEastWestTransition"> + <dataname>axisid</dataname> + <data-multiselect>false</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_meshpoint_parameter</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false"/> + </inputvalues> + </transition> + <transition id="horizontalprofile_meshpoint_parameter" description="horizontalprofile_meshpoint_parameter" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_mesh_parameter</queryID> + <dataname>parameterid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_meshpoint_depth</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/> + <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="0"/> + </inputvalues> + </transition> + + + <transition id="horizontalprofile_meshpoint_depth" description="horizontalprofile_meshpoint_depth" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>horizontalprofile_meshpoint_depth</queryID> + <dataname>depthid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_mesh_date</transition>v + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="2"/> + <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="0"/> + <inputvalue name="parameterid" type="Integer" multiselect="true" useinquery="0"/> + </inputvalues> + </transition> + + <transition id="horizontalprofile_mesh_date" description="horizontalprofile_mesh_date" transition="de.intevation.gnv.transition.DefaultTransition"> + <queryID>verticalprofile_mesh_date</queryID> + <dataname>dateid</dataname> + <data-multiselect>true</data-multiselect> + <reachableTransitions> + <transition>horizontalprofile_mesh_calculate_results</transition> + </reachableTransitions> + <inputvalues> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="1"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="0"/> + <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="0"/> + <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="0"/> + <inputvalue name="depthid" type="Integer" multiselect="true" usedinquery="0"/> + </inputvalues> + </transition> + + <transition id="horizontalprofile_mesh_calculate_results" description="horizontalprofile_mesh_calculate_results" transition="de.intevation.gnv.transition.profile.horizontal.HorizontalProfileOutputTransition"> + <queryID>horizontalprofile_mesh_chart_data</queryID> + <inputvalues> + <inputvalue name="parameterid" type="Integer" multiselect="true" usedinquery="1"/> + <inputvalue name="dateid" type="Date" multiselect="true" usedinquery="1"/> + <inputvalue name="meshid" type="Integer" multiselect="false" usedinquery="2"/> + <inputvalue name="depthid" type="Integer" multiselect="true" usedinquery="1"/> + <inputvalue name="axisid" type="AttributeName" multiselect="false" usedinquery="2"/> + <inputvalue name="mesh_point" type="Integer" multiselect="false" usedinquery="1"/> + </inputvalues> + <value-names> + <value-name name="feature" value="meshid"></value-name> + <value-name name="parameter" value="parameterid"></value-name> + <value-name name="measurement" value="depthid"></value-name> + </value-names> + <outputsModes> + <outputsMode name="chart" description="Chartrepresentation of the Values" mime-type="image/png"> + <parameters> + <inputvalue name="width" type="Integer" value="600"/> + <inputvalue name="height" type="Integer" value="400"/> + </parameters> + </outputsMode> + <outputsMode name="csv" description="CSV-Export der Daten" mime-type="text/plain"/> + <outputsMode name="statistics" description="Statistik zu den Daten" mime-type="text/xml"/> + </outputsModes> + </transition> + </transitions> + </artifact> + + + + + + </artifacts> + <ehcache> + <configuration>src/test/ressources/ehcache.xml</configuration> + </ehcache> + <geo-backend> + <backend-configuration>../geo-backend/src/test/ressources/ArcSDEConnectionPoolTestCase.properties</backend-configuration> + <query-configuration>src/test/ressources/queries.properties</query-configuration> + </geo-backend> + <rest-server> + <port>8181</port> + </rest-server> + <!-- garbage collection of outdated artifacts --> + <cleaner> + <sleep-time>300000</sleep-time> + </cleaner> + <database> + <user></user> + <password></password> + <!--url>jdbc:h2:src/test/ressources/artifacts.db</url> + <driver>org.h2.Driver</driver> + <sql></sql> --> + </database> +</artifact-database>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/ehcache.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ehcache> + <defaultCache maxElementsInMemory="1000" + eternal="true" + overflowToDisk="false" + memoryStoreEvictionPolicy="FIFO" + /> +</ehcache> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:target name="horizontalProfile" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_00_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:data> + <art:input name="product" value="horizontalProfile" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:target name="horizontalprofile_instantaneouspoint_track" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_01_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:data> + <art:input name="vehicleid" value="8402" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:target name="horizontalprofile_instantaneouspoint_surveyinfo" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_02_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:data> + <art:input name="cruiseid" value="47" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:target name="horizontalprofile_instantaneouspoint_parameter" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_03_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:data> + <art:input name="trackid" value="1671" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:target name="horizontalprofile_instantaneouspoint_depth" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_04_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:data> + <art:input name="surveyid" value="2063" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:target name="horizontalprofile_instantaneouspoint_calculate_results" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_05_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:data> + <art:input name="parameterid" value="2" /> + <art:input name="parameterid" value="1" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:target name="horizontalprofile_instantaneouspoint_calculate_results" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="3637e455-944f-46ef-997d-8cd61d9ad2d3" /> + <art:hash value="5437874" /> + <art:data> + <art:input name="measurementid" value="-5.943" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_chart.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="c06ab8cd-8be9-47cf-8af1-8eb3c00d6604" /> + <art:hash value="27021384" /> + <art:out name="chart"> + <art:out value="image/png" /> + <art:params> + <art:input name="width" value="600" /> + <art:input name="height" value="400" /> + </art:params> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_csv.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="c06ab8cd-8be9-47cf-8af1-8eb3c00d6604" /> + <art:hash value="27021384" /> + <art:out name="csv"> + <art:out value="text/plain" /> + <art:params /> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_instantaneouspoint/horizontalprofile_step_06_out_statistics.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="c06ab8cd-8be9-47cf-8af1-8eb3c00d6604" /> + <art:hash value="27021384" /> + <art:out name="statistics"> + <art:out value="text/xml" /> + <art:params /> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:target name="horizontalProfile" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_01_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:data> + <art:input name="product" value="horizontalProfile" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="86a0e5c5-e98d-4c7d-93ff-76b099a2de4e" /> + <art:hash value="7390092" /> + <art:target name="horizontalprofile_mesh_point" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_02_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:data> + <art:input name="meshid" value="3" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="86a0e5c5-e98d-4c7d-93ff-76b099a2de4e" /> + <art:hash value="7390092" /> + <art:target name="horizontalprofile_mesh_axis" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_03_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:data /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:target name="horizontalprofile_meshpoint_parameter" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_04_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:data> + <art:input name="mesh_point" value="2003416" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:target name="horizontalprofile_meshpoint_depth" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_05_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:data> + <art:input name="axisid" value="JPOSITION" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:target name="horizontalprofile_mesh_date" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_06_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:data> + <art:input name="parameterid" value="2" /> + <art:input name="parameterid" value="1" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:target name="horizontalprofile_mesh_calculate_results" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_07_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:data> + <art:input name="depthid" value="1" /> + <art:input name="depthid" value="2" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:data> + <art:input name="dateid" value="2009.10.03 23:45:00" /> + <art:input name="dateid" value="2009.10.04 00:00:00" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_out_chart.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:out name="chart"> + <art:out value="image/png" /> + <art:params> + <art:input name="width" value="600" /> + <art:input name="height" value="400" /> + </art:params> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_out_csv.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:out name="csv"> + <art:out value="text/plain" /> + <art:params /> + </art:out> +</art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/horizontalProfile_mesh/horizontalprofile_step_08_out_statistics.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="1f6a63e2-c9d6-4ab1-830e-1effbc189d68" /> + <art:hash value="29647319" /> + <art:out name="statistics"> + <art:out value="text/xml" /> + <art:params /> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/lang/artifactMessages.properties Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,25 @@ +fis_marnet = Marnet +fis_imis = IMIS +fis_staun = STAUN +fis_modeldata = Modeldata +fis_delphin = Delphin +fis_thermosalinograph = Thermosalinograph +fis_chemusurvey = Chemusurvey + +timeSeries= Timeseries +verticalProfile = Verticalprofile +horizontalProfile = Horizontalprofile +featureid = Object +mesh_coordinate = Coordinate Value (x y) +mesh_point = Meshpoint +measurementid = Measurement depth +parameterid = Parameter +minvalue = Minvalue +maxvalue = Maxvalue +dateid = Measurement date +vehicleid = Ship +cruiseid = Cruise +trackid = Track +surveyid = Survey Info +axisid = Axis +depthid = Depth \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/lang/artifactMessages_de_DE.properties Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,25 @@ +fis_marnet = Marnet +fis_imis = IMIS +fis_staun = STAUN +fis_modeldata = Modeldaten +fis_delphin = Delphin +fis_thermosalinograph = Thermosalinograph +fis_chemusurvey = Chemusurvey + +timeSeries= Zeitserie +verticalProfile = Vertikalprofil +horizontalProfile = Horizontalprofil +featureid = ObjeKt +mesh_coordinate = Koordinaten Wert (x y) +mesh_point = Messpunkt +measurementid = Messtiefe +parameterid = Parameter +minvalue = Minimalwert +maxvalue = Maximalwert +dateid = Messdatum +vehicleid = Schiff +cruiseid = Reise +trackid = Track +surveyid = Messinformation +axisid = Achse +depthid = Tiefe \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/log.conf Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,4 @@ +.level=FINEST +handlers=java.util.logging.ConsoleHandler +java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter +java.util.logging.FileHandler.pattern=rest-%u-%g.log
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/log4j.properties Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 + +# A1 is set to be a ConsoleAppender. +log4j.appender.A1=org.apache.log4j.ConsoleAppender + +# A1 uses PatternLayout. +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/queries.properties Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,494 @@ +############################################# +############################################# +########## Zeitserie ############## +############################################# +############################################# + +timeseries_timeseriespoint=SELECT DISTINCT \ + tsp.FEATUREID KEY, \ + tsp.NAME VALUE \ + FROM MEDIAN.TIMESERIESPOINT tsp, \ + MEDIAN.MEASUREMENT mmt \ + WHERE tsp.FEATUREID = mmt.FEATUREID AND \ + mmt.SOURCEID = ? \ + order by tsp.name + +timeseries_parameter=SELECT DISTINCT \ + p.PARAMETERID KEY, \ + p.GERMANNAME VALUE \ + from MEDIAN.PARAMETER p \ + where p.PARAMETERID in \ + (select distinct \ + ts.PARAMETERID \ + from MEDIAN.TIMESERIES ts \ + where ts.TIMESERIESID in \ + (select distinct \ + tsv.TIMESERIESID \ + from MEDIAN.TIMESERIESVALUE tsv \ + where tsv.MEASUREMENTID in \ + (select m.MEASUREMENTID \ + from MEDIAN.MEASUREMENT m, \ + MEDIAN.TIMESERIESPOINT tsp \ + where m.FEATUREID = tsp.FEATUREID and \ + tsp.FEATUREID IN ( ? )\ + )\ + )\ + ) \ + ORDER BY p.GERMANNAME + +timeseries_depth_height=SELECT DISTINCT \ + m.MEASUREMENTID KEY, \ + m.ZLOCATION VALUE \ + from MEDIAN.MEASUREMENT m \ + where m.MEASUREMENTID in \ + (SELECT DISTINCT \ + t_v.MEASUREMENTID \ + from MEDIAN.TIMESERIESVALUE t_v \ + where t_v.TIMESERIESID in \ + (SELECT DISTINCT \ + t.TIMESERIESID \ + from MEDIAN.TIMESERIES t \ + where t.PARAMETERID in \ + (SELECT DISTINCT \ + p.PARAMETERID \ + from MEDIAN.PARAMETER p \ + where m.FEATUREID IN ( ? ) and \ + p.PARAMETERID IN (?)\ + )\ + )\ + )\ + ORDER BY m.ZLOCATION DESC + +timeseries_interval=select min(tv.TIMEVALUE) MIN, \ + max(tv.TIMEVALUE) MAX \ + from MEDIAN.TIMESERIES t , \ + MEDIAN.TIMESERIESVALUE tv \ + where tv.TIMESERIESID = t.TIMESERIESID AND \ + t.PARAMETERID IN ( ? ) AND \ + tv.MEASUREMENTID IN ( ? ) + +timeseries_chart_data=SELECT tv.TIMEVALUE XORDINATE, \ + tv.DATAVALUE YORDINATE, \ + t.PARAMETERID GROUP1, \ + tv.MEASUREMENTID GROUP2, \ + tv.TIMESERIESID GROUP3 \ + FROM MEDIAN.TIMESERIESVALUE tv, \ + MEDIAN.TIMESERIES t \ + WHERE tv.TIMESERIESID = t.TIMESERIESID AND \ + t.PARAMETERID IN ( ? ) AND \ + tv.MEASUREMENTID IN ( ? ) AND \ + tv.TIMEVALUE > ? AND \ + tv.TIMEVALUE < ? \ + ORDER BY tv.MEASUREMENTID , \ + tv.TIMESERIESID , \ + t.PARAMETERID , \ + tv.TIMEVALUE + +############################################# +############################################# +########## Zeitserie Mesh ############## +############################################# +############################################# + +timeseries_mesh = SELECT OBJECTID KEY, \ + m.NAME VALUE \ + FROM MEDIAN.MESH m \ + order by m.NAME +timeseries_meshpoint = SELECT FEATUREID KEY, \ + SHAPE VALUE \ + FROM MEDIAN.MESHPOINT mp , \ + MEDIAN.MESH m \ + WHERE m.OBJECTID = ? AND \ + mp.MESHID = m.MESHID AND \ + KPOSITION = 1 AND \ + rownum < 10 + +timeseries_meshpoint_depth = select mp.FEATUREID KEY, \ + -ml.UPPERZLOCATION || ' - '|| -ml.LOWERZLOCATION as VALUE \ + from MEDIAN.MESHLAYER ml, \ + MEDIAN.MESHPOINT mp \ + where ml.KPOSITION = mp.KPOSITION and \ + ml.MESHID = mp.MESHID and \ + mp.FEATUREID in \ + ( select FEATUREID \ + from MEDIAN.MESHPOINT mp, \ + MEDIAN.MESH m \ + where m.OBJECTID = ? AND \ + mp.MESHID = m.MESHID AND \ + IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) and \ + JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?)) \ + order by ml.UPPERZLOCATION desc + +timeseries_mesh_parameter=SELECT distinct \ + p.PARAMETERID KEY , \ + p.GERMANNAME VALUE \ + from MEDIAN.PARAMETER p, \ + MEDIAN.MESHSCALARVALUE msc, \ + MEDIAN.MESH m \ + where m.OBJECTID = ? AND \ + msc.PARTID = m.PARTIDMIN AND \ + msc.PARAMETERID = p.PARAMETERID \ + order by p.GERMANNAME +timeseries_mesh_interval=select /*+ parallel(TIMEVALUE,5) */ \ + min(TIMEVALUE) MIN, \ + max(TIMEVALUE) MAX \ + from MEDIAN.MESHSCALARVALUE msc , \ + MEDIAN.MESH m \ + where m.OBJECTID = ? AND \ + msc.PARTID >= m.PARTIDMIN AND \ + msc.PARTID <= m.PARTIDMAX + +timeseries_mesh_chart_data=select /*+ parallel(timevalue,10) */ \ + msv.TIMEVALUE XORDINATE, \ + msv.DATAVALUE YORDINATE, \ + msv.PARAMETERID GROUP1, \ + msv.FEATUREID GROUP2, \ + mp.FEATUREID GROUP3 \ + from MEDIAN.MESHSCALARVALUE msv , \ + MEDIAN.MESHPOINT mp, \ + MEDIAN.MESH m \ + where (m.OBJECTID = ? AND \ + msv.PARTID >= m.PARTIDMIN AND \ + msv.PARTID <= m.PARTIDMAX ) AND \ + msv.FEATUREID in ( ? ) AND \ + msv.PARAMETERID in ( ? ) AND \ + mp.FEATUREID in ( ? ) AND \ + msv.TIMEVALUE >= ? AND \ + msv.TIMEVALUE <= ? \ + order by mp.FEATUREID, \ + msv.FEATUREID, \ + msv.PARAMETERID, \ + msv.TIMEVALUE + +############################################# +############################################# +########## Vertikalprofil ############## +############################################# +############################################# + +verticalprofile_point=SELECT DISTINCT \ + tsp.FEATUREID KEY, \ + tsp.NAME VALUE \ + FROM MEDIAN.TIMESERIESPOINT tsp, \ + MEDIAN.MEASUREMENT mmt \ + WHERE tsp.FEATUREID = mmt.FEATUREID AND \ + mmt.SOURCEID = ? \ + order by tsp.name + +verticalprofile_parameter=SELECT DISTINCT \ + p.PARAMETERID KEY, \ + p.GERMANNAME VALUE \ + from MEDIAN.PARAMETER p, \ + MEDIAN.TIMESERIES ts, \ + MEDIAN.TIMESERIESVALUE tsv, \ + MEDIAN.MEASUREMENT m \ + where ts.PARAMETERID = p.PARAMETERID and \ + ts.TIMESERIESID = tsv.TIMESERIESID and \ + m.MEASUREMENTID = tsv.MEASUREMENTID and \ + m.FEATUREID = ? \ + ORDER BY p.GERMANNAME + +verticalprofile_date=select distinct \ + tsv.TIMEVALUE KEY, \ + tsv.TIMEVALUE VALUE \ + from MEDIAN.TIMESERIES ts , \ + MEDIAN.TIMESERIESVALUE tsv, \ + MEDIAN.MEASUREMENT m \ + where ts.TIMESERIESID = tsv.TIMESERIESID and \ + m.MEASUREMENTID = tsv.MEASUREMENTID and \ + m.FEATUREID = ? and \ + ts.PARAMETERID IN ( ? ) \ + order by tsv.TIMEVALUE + +verticalprofile_chart_data= SELECT m.ZLOCATION XORDINATE, \ + tsv.DATAVALUE YORDINATE, \ + ts.PARAMETERID GROUP1, \ + tsv.TIMEVALUE GROUP2, \ + 1 GROUP3 \ + from MEDIAN.TIMESERIES ts, \ + MEDIAN.TIMESERIESVALUE tsv, \ + MEDIAN.MEASUREMENT m \ + where ts.TIMESERIESID = tsv.TIMESERIESID and \ + m.MEASUREMENTID = tsv.MEASUREMENTID and \ + m.FEATUREID = ? and \ + ts.PARAMETERID IN ( ? ) AND \ + tsv.TIMEVALUE IN (?) \ + ORDER BY tsv.TIMEVALUE , \ + tsv.TIMESERIESID , \ + ts.PARAMETERID , \ + tsv.TIMEVALUE + +############################################# +############################################# +########## Vertikalprofil Mesh ############## +############################################# +############################################# + +verticalprofile_mesh = SELECT OBJECTID KEY, \ + m.NAME VALUE \ + FROM MEDIAN.MESH m \ + order by m.NAME + +verticalprofile_mesh_point = SELECT FEATUREID KEY, \ + SHAPE VALUE \ + FROM MEDIAN.MESHPOINT mp , \ + MEDIAN.MESH m \ + WHERE m.OBJECTID = ? AND \ + m.MESHID = mp.MESHID AND \ + mp.KPOSITION = 1 AND \ + rownum < 10 + +verticalprofile_mesh_parameter=SELECT distinct \ + p.PARAMETERID KEY , \ + p.GERMANNAME VALUE \ + from MEDIAN.PARAMETER p, \ + MEDIAN.MESHSCALARVALUE msc, \ + MEDIAN.MESH m \ + where m.OBJECTID = ? AND \ + m.PARTIDMIN = msc.PARTID AND \ + msc.PARAMETERID = p.PARAMETERID \ + order by p.GERMANNAME + +verticalprofile_mesh_date= select distinct \ + msv.TIMEVALUE KEY, \ + msv.TIMEVALUE VALUE \ + from MEDIAN.MESHSCALARVALUE msv , \ + MEDIAN.MESH m \ + where m.OBJECTID = ? AND \ + msv.PARTID >= m.PARTIDMIN AND \ + msv.PARTID <= m.PARTIDMAX \ + order by msv.TIMEVALUE + +verticalprofile_mesh_chart_data=select ml.UPPERZLOCATION XORDINATE, \ + msv.DATAVALUE YORDINATE, \ + msv.PARAMETERID GROUP1, \ + msv.TIMEVALUE GROUP2, \ + 1 GROUP3 \ + from MEDIAN.MESHLAYER ml, \ + MEDIAN.MESHPOINT mp, \ + MEDIAN.MESH m, \ + MEDIAN.MESHSCALARVALUE msv \ + where msv.FEATUREID = mp. FEATUREID AND \ + ml.KPOSITION = mp.KPOSITION and \ + ml.MESHID = mp.MESHID and \ + m.MESHID = mp.MESHID AND \ + m.PARTIDMIN <= msv.PARTID AND \ + m.PARTIDMAX >= msv.PARTID AND \ + msv.PARAMETERID in (?) AND \ + msv.TIMEVALUE in (?) AND \ + m.OBJECTID = ? AND \ + mp.FEATUREID in \ + ( select FEATUREID \ + from MEDIAN.MESHPOINT mp, \ + MEDIAN.MESH m \ + where m.OBJECTID = ? AND \ + mp.MESHID = m.MESHID AND \ + IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) and \ + JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?)) \ + order by msv.PARAMETERID, \ + msv.TIMEVALUE, \ + ml.UPPERZLOCATION + +############################################# +############################################# +##### Vertikalprofil InstantaneousPoint ##### +############################################# +############################################# + +verticalprofile_instantaneouspoint_series = SELECT DISTINCT \ + S.SERIESID KEY , \ + S.DESCRIPTION VALUE \ + FROM MEDIAN.SERIES S, \ + MEDIAN.INSTANTANEOUSPOINT I, \ + MEDIAN.MEASUREMENT M \ + WHERE S.SERIESID = I.SERIESID AND \ + I.POINTSPEC = 4 AND \ + I.FEATUREID = M.FEATUREID AND \ + M.SOURCEID= ? \ + ORDER BY S.DESCRIPTION + +verticalprofile_instantaneouspoint_point = SELECT DISTINCT \ + I.FEATUREID KEY, \ + to_char(I.TIMEVALUE,'DD.MM.YYYY HH24:MI') || ' - '|| I.SHAPE VALUE, \ + I.TIMEVALUE \ + FROM MEDIAN.INSTANTANEOUSPOINT I, \ + MEDIAN.MEASUREMENT M \ + WHERE I.SERIESID = ? AND \ + I.POINTSPEC = 4 AND \ + I.FEATUREID = M.FEATUREID AND \ + M.SOURCEID = ? \ + ORDER BY I.TIMEVALUE + +verticalprofile_instantaneouspoint_parameter = SELECT DISTINCT \ + P.PARAMETERID KEY , \ + P.GERMANNAME VALUE \ + FROM MEDIAN.PARAMETER P, \ + MEDIAN.INSTANTANEOUSPOINT IP, \ + MEDIAN.MEASUREMENT M, \ + MEDIAN.MEASUREDSCALARVALUE MSV \ + WHERE IP.FEATUREID = M.FEATUREID AND \ + M.MEASUREMENTID = MSV.MEASUREMENTID AND \ + MSV.PARAMETERID = P.PARAMETERID AND \ + IP.FEATUREID = ? \ + ORDER BY P.GERMANNAME + +verticalprofile_instantaneouspoint_chart_data = SELECT M.ZLOCATION XORDINATE, \ + MSV.DATAVALUE YORDINATE, \ + MSV.PARAMETERID GROUP1, \ + IP.TIMEVALUE GROUP2, \ + 1 GROUP3 \ + FROM MEDIAN.INSTANTANEOUSPOINT IP, \ + MEDIAN.MEASUREMENT M, \ + MEDIAN.MEASUREDSCALARVALUE MSV \ + WHERE IP.FEATUREID = M.FEATUREID AND \ + M.MEASUREMENTID = MSV.MEASUREMENTID AND \ + IP.FEATUREID = ? AND \ + MSV.PARAMETERID in (?) \ + ORDER BY IP.TIMEVALUE, \ + MSV.PARAMETERID, \ + M.ZLOCATION + +############################################# +############################################# +#### Horizontalprofil InstantaneousPoint #### +############################################# +############################################# +horizontalprofile_instantaneouspoint_vehicle = SELECT DISTINCT \ + V.VEHICLEID KEY, \ + V.NAME VALUE \ + FROM MEDIAN.VEHICLE V, \ + MEDIAN.CRUISE C, \ + MEDIAN.TRACK T, \ + MEDIAN.SURVEYINFO S, \ + MEDIAN.INSTANTANEOUSPOINT I, \ + MEDIAN.MEASUREMENT M \ + WHERE V.VEHICLEID = C.VEHICLEID AND \ + C.CRUISEID = T.CRUISEID AND \ + T.TRACKID = S.TRACKID AND \ + S.SURVEYID = I.SURVEYID AND \ + I.FEATUREID = M.FEATUREID AND \ + M.SOURCEID = ? \ + ORDER BY V.NAME +horizontalprofile_instantaneouspoint_cruise = SELECT DISTINCT \ + C.CRUISEID KEY , \ + C.NAME VALUE \ + FROM MEDIAN.CRUISE C, \ + MEDIAN.TRACK T, \ + MEDIAN.SURVEYINFO S, \ + MEDIAN.INSTANTANEOUSPOINT I, \ + MEDIAN.MEASUREMENT M \ + WHERE C.CRUISEID = T.CRUISEID AND \ + T.TRACKID = S.TRACKID AND \ + S.SURVEYID = I.SURVEYID AND \ + I.FEATUREID = M.FEATUREID AND \ + C.VEHICLEID = ? AND \ + M.SOURCEID = ? AND \ + C.NAME IS NOT NULL \ + ORDER BY C.NAME +horizontalprofile_instantaneouspoint_track= SELECT \ + T.TRACKID KEY , \ + to_char(T.STARTDATE,'DD.MM.YYYY HH24:MI') || ' - '|| to_char(T.ENDDATE,'DD.MM.YYYY HH24:MI') || ' - '|| T.NAME VALUE \ + FROM MEDIAN.TRACK T \ + WHERE T.CRUISEID = ? \ + ORDER BY T.STARTDATE, \ + T.ENDDATE, \ + T.NAME +horizontalprofile_instantaneouspoint_surveyinfo = SELECT \ + SURVEYID KEY , \ + to_char(STARTDATE,'DD.MM.YYYY HH24:MI') || ' - '|| to_char(ENDDATE,'DD.MM.YYYY HH24:MI') || ' - '|| DESCRIPTION VALUE \ + FROM MEDIAN.SURVEYINFO \ + WHERE TRACKID = ? \ + ORDER BY STARTDATE, \ + ENDDATE, \ + DESCRIPTION +horizontalprofile_instantaneouspoint_parameter = SELECT DISTINCT \ + P.PARAMETERID KEY , \ + P.GERMANNAME VALUE \ + FROM MEDIAN.PARAMETER P , \ + MEDIAN.MEASUREMENT M , \ + MEDIAN.INSTANTANEOUSPOINT IP , \ + MEDIAN.MEASUREDSCALARVALUE MSV \ + WHERE P.PARAMETERID = MSV.PARAMETERID AND \ + MSV.MEASUREMENTID = M.MEASUREMENTID AND \ + M.FEATUREID = IP.FEATUREID AND \ + IP.SURVEYID = ? \ + ORDER BY P.GERMANNAME +horizontalprofile_instantaneouspoint_depth = SELECT DISTINCT \ + M.ZLOCATION KEY, \ + M.ZLOCATION VALUE \ + FROM MEDIAN.MEASUREMENT M , \ + MEDIAN.INSTANTANEOUSPOINT IP \ + WHERE M.FEATUREID = IP.FEATUREID AND \ + IP.SURVEYID = ? \ + ORDER BY M.ZLOCATION +horizontalprofile_instantaneouspoint_chart_data = SELECT MSV.OBJECTID XORDINATE_XCOORD , \ + MSV.OBJECTID XORDINATE_YCOORD , \ + MSV.DATAVALUE YORDINATE , \ + MSV.PARAMETERID GROUP1 , \ + ZLOCATION GROUP2 , \ + 1 GROUP3 \ + FROM MEDIAN.INSTANTANEOUSPOINT IP, \ + MEDIAN.MEASUREMENT M, \ + MEDIAN.MEASUREDSCALARVALUE MSV \ + WHERE IP.FEATUREID = M.FEATUREID AND \ + M.MEASUREMENTID = MSV.MEASUREMENTID AND \ + IP.SURVEYID = ? AND \ + M.ZLOCATION IN (?) AND \ + MSV.PARAMETERID in (?) \ + ORDER BY MSV.PARAMETERID, \ + M.ZLOCATION + +############################################# +############################################# +########### Horizontalprofil MESH ########### +############################################# +############################################# +horizontalprofile_meshpoint_depth = SELECT DISTINCT \ + mp.KPOSITION KEY, \ + -ml.UPPERZLOCATION || ' - '|| -ml.LOWERZLOCATION VALUE \ + from MEDIAN.MESHLAYER ml, \ + MEDIAN.MESHPOINT mp \ + where ml.KPOSITION = mp.KPOSITION and \ + ml.MESHID = mp.MESHID and \ + mp.FEATUREID in \ + ( select FEATUREID \ + from MEDIAN.MESHPOINT mp, \ + MEDIAN.MESH m \ + where m.OBJECTID = ? AND \ + mp.MESHID = m.MESHID AND \ + IPOSITION = (select IPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?) and \ + JPOSITION = (select JPOSITION from MEDIAN.MESHPOINT where FEATUREID = ?)) \ + order by mp.KPOSITION + +horizontalprofile_mesh_chart_data = select mp.IPOSITION XORDINATE_XCOORD, mp.JPOSITION XORDINATE_YCOORD, \ + msv.DATAVALUE YORDINATE, \ + msv.PARAMETERID GROUP1, \ + msv.TIMEVALUE GROUP2, \ + mp.KPOSITION GROUP3 \ + from MEDIAN.MESHLAYER ml, \ + MEDIAN.MESHPOINT mp, \ + MEDIAN.MESH m, \ + MEDIAN.MESHSCALARVALUE msv \ + where msv.FEATUREID = mp. FEATUREID AND \ + ml.KPOSITION = mp.KPOSITION and \ + ml.MESHID = mp.MESHID and \ + m.MESHID = mp.MESHID AND \ + m.PARTIDMIN <= msv.PARTID AND \ + m.PARTIDMAX >= msv.PARTID AND \ + msv.PARAMETERID in (?) AND \ + msv.TIMEVALUE in (?) AND \ + m.OBJECTID = ? AND \ + mp.FEATUREID in \ + ( select FEATUREID \ + from MEDIAN.MESHPOINT mp, \ + MEDIAN.MESH m \ + where m.OBJECTID = ? AND \ + mp.MESHID = m.MESHID AND \ + KPOSITION in ( ? ) and \ + ? = (select ? from MEDIAN.MESHPOINT where FEATUREID = ?)) \ + order by mp.KPOSITION, \ + msv.TIMEVALUE, \ + msv.PARAMETERID, \ + mp.JPOSITION , \ + mp.IPOSITION + \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_01_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:target name="timeSeriess"/> +</art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_01_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:data> + <art:input name="product" value="timeSeries"/> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_02_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:target name="timeseries_depth_height"/> +</art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_02_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:data> + <art:input name="featureid" value="100006"/> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_03_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:target name="timeseries_interval"/> +</art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_03_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:data> + <art:input name="parameterid" value="54"/> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_04_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:target name="timeseries_calculate_results"/> +</art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_04_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:data> + <art:input name="measurementid" value="500042"/> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_05_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action + xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:data> + <art:input name="minvalue" value="2001.03.16 16:29:00"/> + <art:input name="maxvalue" value="2008.12.31 23:29:00"/> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries/timeseries_step_05_out.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out"/> + <art:uuid value="dd87ce50-9bbe-11de-8a39-0800200c9a66"/> + <art:hash value="8392d409b5518044465ac8e9b7daf5ef"/> + <art:out name="chart"> + <art:params> + <!-- out params copied from describe --> + </art:params> + </art:out> +</art:action> +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_01_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:target name="timeSeriesMesh" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_01_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:data> + <art:input name="product" value="timeSeries" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_02_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:target name="timeseries_meshpoint" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_02_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:data> + <art:input name="meshid" value="1" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_03_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:target name="timeseries_meshpoint_depth" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_03_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:data> + <art:input name="mesh_coordinate" value="6.5 58.1" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_04_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:target name="timeseries_meshpoint_parameter" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_04_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:data> + <art:input name="mesh_point" value="3021827" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_05_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:target name="timeseries_meshpoint_interval" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_05_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:data> + <art:input name="measurementid" value="3043872" /> + <art:input name="measurementid" value="3060353" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_06_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:target name="timeseries_meshpoint_calculate_results" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_06_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:data> + <art:input name="parameterid" value="2" /> + <art:input name="parameterid" value="1" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_07_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:data> + <art:input name="maxvalue" value="2009.10.02 00:00:00" /> + <art:input name="minvalue" value="2009.09.17 00:15:00" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_07_out_chart.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:out name="chart"> + <art:out value="image/png" /> + <art:params> + <art:input name="width" value="600" /> + <art:input name="height" value="400" /> + </art:params> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_07_out_csv.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:out name="csv"> + <art:out value="text/plain" /> + <art:params /> + </art:out> +</art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/timeseries_mesh/timeseries_step_07_out_statistics.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="1e9f6583-9073-4409-aac1-432ad06d7ce1" /> + <art:hash value="29913235" /> + <art:out name="statistics"> + <art:out value="text/xml" /> + <art:params /> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_01_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" /> + <art:hash value="18171662" /> + <art:target name="verticalProfile" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_01_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" /> + <art:hash value="18171662" /> + <art:data> + <art:input name="product" value="verticalProfile" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_02_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" /> + <art:hash value="18171662" /> + <art:target name="verticalprofile_date" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_02_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" /> + <art:hash value="18171662" /> + <art:data> + <art:input name="featureid" value="100011" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_03_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="b47ab4ca-ffa7-4e4d-8212-0769e39418a2" /> + <art:hash value="11096221" /> + <art:target name="verticalprofile_calculate_results" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_03_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" /> + <art:hash value="18171662" /> + <art:data> + <art:input name="parameterid" value="2" /> + <art:input name="parameterid" value="31" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_04_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="b47ab4ca-ffa7-4e4d-8212-0769e39418a2" /> + <art:hash value="11096221" /> + <art:data> + <art:input name="dateid" value="2008.12.09 00:00:00" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_04_out_chart.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="b47ab4ca-ffa7-4e4d-8212-0769e39418a2" /> + <art:hash value="11096221" /> + <art:out name="chart"> + <art:out value="image/png" /> + <art:params> + <art:input name="width" value="600" /> + <art:input name="height" value="400" /> + </art:params> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_04_out_csv.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="b47ab4ca-ffa7-4e4d-8212-0769e39418a2" /> + <art:hash value="11096221" /> + <art:out name="csv"> + <art:out value="text/plain" /> + <art:params /> + </art:out> +</art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile/verticalprofile_step_04_out_statistics.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="b47ab4ca-ffa7-4e4d-8212-0769e39418a2" /> + <art:hash value="11096221" /> + <art:out name="statistics"> + <art:out value="text/xml" /> + <art:params /> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" /> + <art:hash value="18171662" /> + <art:target name="verticalProfile" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_01_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="4319eb60-5419-4ce9-80b2-3ffac5b50146" /> + <art:hash value="18171662" /> + <art:data> + <art:input name="product" value="verticalProfile" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" /> + <art:hash value="9390720" /> + <art:target name="verticalprofile_instantaneouspoint_parameter" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_02_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" /> + <art:hash value="9390720" /> + <art:data> + <art:input name="seriesid" value="184" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" /> + <art:hash value="9390720" /> + <art:target name="verticalprofile_instantaneouspoint_calculate_results" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_03_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" /> + <art:hash value="9390720" /> + <art:data> + <art:input name="instantaneouspoint_point" value="4371899" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" /> + <art:hash value="9390720" /> + <art:data> + <art:input name="parameterid" value="2" /> + <art:input name="parameterid" value="30" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_out_chart.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" /> + <art:hash value="9390720" /> + <art:out name="chart"> + <art:out value="image/png" /> + <art:params> + <art:input name="width" value="600" /> + <art:input name="height" value="400" /> + </art:params> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_out_csv.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"><art:type name="out"/><art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3"/><art:hash value="9390720"/><art:out name="csv"><art:out value="text/plain"/><art:params/></art:out></art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_instantaneouspoint/verticalprofile_step_04_out_statistics.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="793c935e-a3f3-44ce-a8f1-3d05459ca3d3" /> + <art:hash value="9390720" /> + <art:out name="statistics"> + <art:out value="text/xml" /> + <art:params /> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:target name="verticalProfile" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_01_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:data> + <art:input name="product" value="verticalProfile" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:target name="verticalprofile_mesh_point" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_02_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:data> + <art:input name="meshid" value="1" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:target name="verticalprofile_meshpoint_parameter" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_03_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:data /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:target name="verticalprofile_mesh_date" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_04_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:data> + <art:input name="mesh_point" value="3002488" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_advance.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="advance" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:target name="verticalprofile_mesh_calculate_results" /> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_05_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:data> + <art:input name="parameterid" value="2" /> + <art:input name="parameterid" value="1" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_feed.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="feed" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:data> + <art:input name="dateid" value="2009.10.01 00:00:00" /> + </art:data> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_out_chart.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:out name="chart"> + <art:out value="image/png" /> + <art:params> + <art:input name="width" value="600" /> + <art:input name="height" value="400" /> + </art:params> + </art:out> +</art:action> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_out_csv.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:out name="csv"> + <art:out value="text/plain" /> + <art:params /> + </art:out> +</art:action>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gnv-artifacts/src/test/ressources/verticalprofile_mesh/verticalprofile_step_06_out_statistics.xml Fri Sep 28 12:13:41 2012 +0200 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<art:action xmlns:art="http://www.intevation.de/2009/artifacts"> + <art:type name="out" /> + <art:uuid value="041fd0b2-5d77-49a8-b19f-5f3f553bda5d" /> + <art:hash value="31343478" /> + <art:out name="statistics"> + <art:out value="text/xml" /> + <art:params /> + </art:out> +</art:action> \ No newline at end of file