├── .gitattributes
├── .gitignore
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.txt
├── README.md
├── Samples
├── CSharpExamples
│ ├── CSharpExamples.sln
│ └── ImportObservationFile
│ │ ├── ImportObsDemo.cs
│ │ ├── ImportObservationFile.csproj
│ │ ├── Program.cs
│ │ └── ServiceModel
│ │ └── ImportStatus.cs
├── DotNetSdk
│ ├── DotNetSdkExamples.sln
│ ├── LabFileImporter
│ │ ├── App.config
│ │ ├── Context.cs
│ │ ├── CsvWriter.cs
│ │ ├── DualLogger.cs
│ │ ├── ExeHelper.cs
│ │ ├── ExpectedException.cs
│ │ ├── FileUploader.cs
│ │ ├── FodyWeavers.xml
│ │ ├── FodyWeavers.xsd
│ │ ├── ImportClient.cs
│ │ ├── ImportResultResponse.cs
│ │ ├── ImportStatus.cs
│ │ ├── Importer.cs
│ │ ├── LabFileImporter.csproj
│ │ ├── LabFileLoader.cs
│ │ ├── MainForm.Designer.cs
│ │ ├── MainForm.cs
│ │ ├── MainForm.resx
│ │ ├── ObservationV2.cs
│ │ ├── Option.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── Resources.Designer.cs
│ │ │ └── Resources.resx
│ │ ├── Readme.md
│ │ ├── Samples.ico
│ │ ├── Screenshot.png
│ │ ├── log4net.config
│ │ └── packages.config
│ ├── NWFWMD-LabFileImporter
│ │ ├── App.config
│ │ ├── Context.cs
│ │ ├── CsvWriter.cs
│ │ ├── DualLogger.cs
│ │ ├── ExeHelper.cs
│ │ ├── ExpectedException.cs
│ │ ├── FileUploader.cs
│ │ ├── FodyWeavers.xml
│ │ ├── FodyWeavers.xsd
│ │ ├── ImportClient.cs
│ │ ├── ImportResultResponse.cs
│ │ ├── ImportStatus.cs
│ │ ├── Importer.cs
│ │ ├── LabFileLoader.cs
│ │ ├── MainForm.Designer.cs
│ │ ├── MainForm.cs
│ │ ├── MainForm.resx
│ │ ├── NWFWMD-LabFileImporter.csproj
│ │ ├── ObservationV2.cs
│ │ ├── Option.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── Resources.Designer.cs
│ │ │ └── Resources.resx
│ │ ├── Readme.md
│ │ ├── Samples.ico
│ │ ├── Screenshot.png
│ │ ├── log4net.config
│ │ └── packages.config
│ ├── ObservationReportExporter
│ │ ├── App.config
│ │ ├── Context.cs
│ │ ├── ExeHelper.cs
│ │ ├── ExpectedException.cs
│ │ ├── Exporter.cs
│ │ ├── ExtraApis
│ │ │ ├── Samples
│ │ │ │ └── GetExchangeConfigurations.cs
│ │ │ └── TimeSeries
│ │ │ │ ├── DeleteAttachmentById.cs
│ │ │ │ └── HackTags.cs
│ │ ├── FilenameGenerator.cs
│ │ ├── FodyWeavers.xml
│ │ ├── FodyWeavers.xsd
│ │ ├── ObservationReportExporter.csproj
│ │ ├── Option.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Readme.md
│ │ ├── SingleInstanceGuard.cs
│ │ ├── log4net.config
│ │ └── packages.config
│ ├── ObservationValidator
│ │ ├── App.config
│ │ ├── ComparisonSymbol.cs
│ │ ├── Context.cs
│ │ ├── DoubleHelper.cs
│ │ ├── FilePathHelper.cs
│ │ ├── LastRunTimeKeeper.cs
│ │ ├── ObservationValidator.csproj
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── README.md
│ │ ├── Rule.cs
│ │ ├── RuleReader.cs
│ │ ├── ValidationResult.cs
│ │ ├── ValidationRules.txt
│ │ ├── Validator.cs
│ │ └── packages.config
│ ├── SamplesObservationExporter
│ │ ├── App.config
│ │ ├── Context.cs
│ │ ├── ExeHelper.cs
│ │ ├── ExpectedException.cs
│ │ ├── Exporter.cs
│ │ ├── FodyWeavers.xml
│ │ ├── FodyWeavers.xsd
│ │ ├── Option.cs
│ │ ├── Program.cs
│ │ ├── ProgressBarReporter.cs
│ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ ├── Readme.md
│ │ ├── Samples.ico
│ │ ├── SamplesObservationExporter.csproj
│ │ ├── log4net.config
│ │ └── packages.config
│ ├── SamplesPlannedSpecimenInstantiator
│ │ ├── App.config
│ │ ├── Config.cs
│ │ ├── CursorWait.cs
│ │ ├── ExeHelper.cs
│ │ ├── FodyWeavers.xml
│ │ ├── MainForm.Designer.cs
│ │ ├── MainForm.cs
│ │ ├── MainForm.resx
│ │ ├── PrivateApis
│ │ │ ├── GetUserTokens.cs
│ │ │ └── PostSpecimensFromPlannedActivity.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── Resources.Designer.cs
│ │ │ ├── Resources.resx
│ │ │ ├── Settings.Designer.cs
│ │ │ └── Settings.settings
│ │ ├── Readme.md
│ │ ├── Samples.ico
│ │ ├── SamplesPlannedSpecimenInstantiator.csproj
│ │ ├── Screenshot.png
│ │ ├── log4net.config
│ │ └── packages.config
│ └── SondeFileImporter
│ │ ├── App.config
│ │ ├── Config.ini
│ │ ├── Config
│ │ ├── ConfigException.cs
│ │ ├── ConfigLoader.cs
│ │ ├── ConfigNames.cs
│ │ └── Context.cs
│ │ ├── ExampleDataFiles
│ │ ├── Sonde file example.Converted.csv
│ │ └── Sonde file example.csv
│ │ ├── FileManagement
│ │ ├── FileHelper.cs
│ │ ├── FileInfoSet.cs
│ │ └── SondeFileManager.cs
│ │ ├── Importer
│ │ └── Importer.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ └── AssemblyInfo.cs
│ │ ├── Readme.md
│ │ ├── ServiceClient
│ │ ├── ImportClient.cs
│ │ ├── ImportResult.cs
│ │ ├── ImportResultResponse.cs
│ │ └── ImportStatus.cs
│ │ ├── SondeFileImporter.csproj
│ │ ├── Transform
│ │ ├── ColumnConstants.cs
│ │ ├── DataTableExtensions.cs
│ │ ├── SamplesFileTemplate.csv
│ │ └── SondeFileConverter.cs
│ │ └── packages.config
├── Java
│ └── API Examples
│ │ ├── Readme.md
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── ai
│ │ └── aqsamples
│ │ └── apiexamples
│ │ ├── AqSamplesClient.java
│ │ ├── ObservedPropertyExample.java
│ │ └── dtos
│ │ ├── ObservedProperty.java
│ │ └── UnitGroup.java
└── R
│ ├── Readme.md
│ └── samples_client.R
├── TimeSeries
├── PublicApis
│ ├── FieldDataPlugins
│ │ └── Readme.md
│ ├── Python
│ │ ├── ApprovalReport
│ │ │ ├── Readme.md
│ │ │ ├── approval_report.py
│ │ │ └── timeseries_client.py
│ │ ├── Readme.md
│ │ ├── WindRose
│ │ │ ├── AQTS-WindRose.py
│ │ │ ├── Readme.md
│ │ │ └── timeseries_client.py
│ │ ├── images
│ │ │ └── WindRose.png
│ │ ├── setup.py
│ │ └── timeseries_client.py
│ ├── R
│ │ ├── .gitignore
│ │ ├── ExtremeValueAnalysis
│ │ │ ├── Readme.md
│ │ │ ├── app.R
│ │ │ └── timeseries_client.R
│ │ ├── FloodFrequencyAnalysis
│ │ │ ├── AQTS-FFA-curves.R
│ │ │ ├── Readme.md
│ │ │ └── timeseries_client.R
│ │ ├── FlowDurationCurve
│ │ │ ├── AQTS-FDC.r
│ │ │ ├── Readme.md
│ │ │ └── timeseries_client.R
│ │ ├── IntensityDurationFrequency
│ │ │ ├── AQTS-IDF-curves.R
│ │ │ ├── Gumplot-idf.R
│ │ │ ├── Readme.md
│ │ │ ├── idf-analysis.R
│ │ │ └── timeseries_client.R
│ │ ├── Readme.md
│ │ ├── ShinyCorrelator
│ │ │ ├── Readme.md
│ │ │ ├── app.R
│ │ │ └── timeseries_client.R
│ │ ├── ShinyFlowDurationCurve
│ │ │ ├── Readme.md
│ │ │ ├── app.R
│ │ │ └── timeseries_client.R
│ │ ├── WDTF
│ │ │ ├── Readme.md
│ │ │ ├── config_file.json
│ │ │ ├── data_frame_mapping.json
│ │ │ ├── timeseries_client.R
│ │ │ └── wdtfExport_v4.R
│ │ ├── WindRose
│ │ │ ├── AQTS-WindRose.R
│ │ │ ├── Readme.md
│ │ │ ├── timeseries_client.R
│ │ │ └── wind_rose_ggplot.R
│ │ ├── images
│ │ │ ├── ExtremeValueAnalysis.png
│ │ │ ├── FD-Curve.png
│ │ │ ├── FD-Hydrograph.png
│ │ │ ├── FFA-Curve.png
│ │ │ ├── IDF-Distributions.png
│ │ │ ├── IDF-Plot.png
│ │ │ ├── ShinyCorrelator.png
│ │ │ ├── ShinyFlowDuration.png
│ │ │ ├── StageVsDischarge.png
│ │ │ └── WindRose.png
│ │ └── timeseries_client.R
│ ├── SdkExamples
│ │ ├── AppendPoints
│ │ │ ├── App.config
│ │ │ ├── AppendPoints.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── ChangeVisitApprovals
│ │ │ ├── App.config
│ │ │ ├── ApprovalChanger.cs
│ │ │ ├── ChangeVisitApprovals.csproj
│ │ │ ├── Context.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── Option.cs
│ │ │ ├── PrivateApis.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Readme.md
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ │ ├── ExcelCsvExtractor
│ │ │ ├── App.config
│ │ │ ├── Context.cs
│ │ │ ├── ExcelCsvExtractor.csproj
│ │ │ ├── ExpectedException.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── FodyWeavers.xsd
│ │ │ ├── Option.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Readme.md
│ │ │ ├── Splitter.cs
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ │ ├── ExternalProcessor
│ │ │ ├── App.config
│ │ │ ├── ExternalProcessor.csproj
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── packages.config
│ │ ├── LocationDeleter
│ │ │ ├── App.config
│ │ │ ├── Context.cs
│ │ │ ├── Deleter.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── InternalLibraries
│ │ │ │ ├── AQService.Common.dll
│ │ │ │ ├── AQSystemMLib.dll
│ │ │ │ ├── CommunicationShared.dll
│ │ │ │ ├── Newtonsoft.Json.dll
│ │ │ │ └── Notes.txt
│ │ │ ├── LegacyServiceClient.cs
│ │ │ ├── LocationDeleter.csproj
│ │ │ ├── Option.cs
│ │ │ ├── PrivateApis.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── RatingModelIdentifier.cs
│ │ │ ├── RatingModelIdentifierParser.cs
│ │ │ ├── Readme.md
│ │ │ ├── TimeSeriesIdentifier.cs
│ │ │ ├── TimeSeriesIdentifierParser.cs
│ │ │ ├── VisitIdentifier.cs
│ │ │ ├── VisitIdentifierParser.cs
│ │ │ ├── delete-all-the-things.jpg
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ │ ├── NEM12PreProcessor
│ │ │ ├── App.config
│ │ │ ├── Context.cs
│ │ │ ├── EmbeddedResource.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── FodyWeavers.xsd
│ │ │ ├── NEM12PreProcessor.csproj
│ │ │ ├── Option.cs
│ │ │ ├── Parser.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Readme.md
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ │ ├── PointZilla
│ │ │ ├── App.config
│ │ │ ├── AquariusClientExtensions.cs
│ │ │ ├── CommandType.cs
│ │ │ ├── Context.cs
│ │ │ ├── CreateMode.cs
│ │ │ ├── CsvWriter.cs
│ │ │ ├── DbClient
│ │ │ │ ├── DbClientBase.cs
│ │ │ │ ├── DbClientFactory.cs
│ │ │ │ ├── DbType.cs
│ │ │ │ ├── IDbClient.cs
│ │ │ │ ├── MySqlClient.cs
│ │ │ │ ├── OdbcClient.cs
│ │ │ │ ├── PostgresDbClient.cs
│ │ │ │ └── SqlServerClient.cs
│ │ │ ├── DoubleHelper.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── Field.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── Formats.cs
│ │ │ ├── IntervalExtensions.cs
│ │ │ ├── Option.cs
│ │ │ ├── PointReaders
│ │ │ │ ├── CsvNotesReader.cs
│ │ │ │ ├── CsvReader.cs
│ │ │ │ ├── CsvReaderBase.cs
│ │ │ │ ├── DbPointsReader.cs
│ │ │ │ ├── ExternalPointsReader.cs
│ │ │ │ ├── IPointReader.cs
│ │ │ │ ├── MetadataLookup.cs
│ │ │ │ ├── PointReaderBase.cs
│ │ │ │ └── PointSummarizer.cs
│ │ │ ├── PointZilla.csproj
│ │ │ ├── PointZilla.png
│ │ │ ├── PointsAppender.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── QualifiersParser.cs
│ │ │ ├── Readme.md
│ │ │ ├── SaveNotesMode.cs
│ │ │ ├── TextGenerator.cs
│ │ │ ├── TimeSeriesCreator.cs
│ │ │ ├── TimeSeriesIdentifier.cs
│ │ │ ├── TimeSeriesIdentifierParser.cs
│ │ │ ├── TimezoneHelper.cs
│ │ │ ├── VectorFont.cs
│ │ │ ├── WaveformGenerator.cs
│ │ │ ├── WaveformType.cs
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ │ ├── Readme.md
│ │ ├── SdkExamples.sln
│ │ ├── SharpShooterReportsRunner
│ │ │ ├── App.config
│ │ │ ├── AquariusChart.cs
│ │ │ ├── Context.cs
│ │ │ ├── DataSetBase.cs
│ │ │ ├── DateTimeParser.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── ExternalDataSet.cs
│ │ │ ├── ExternalLibraries
│ │ │ │ ├── Dundas
│ │ │ │ │ └── DundasWinChart.dll
│ │ │ │ └── Perpetuum
│ │ │ │ │ ├── ComponentFactory.Krypton.Docking.dll
│ │ │ │ │ ├── ComponentFactory.Krypton.Navigator.dll
│ │ │ │ │ ├── ComponentFactory.Krypton.Ribbon.dll
│ │ │ │ │ ├── ComponentFactory.Krypton.Toolkit.dll
│ │ │ │ │ ├── ComponentFactory.Krypton.Workspace.dll
│ │ │ │ │ ├── PerpetuumSoft.Charts.dll
│ │ │ │ │ ├── PerpetuumSoft.Framework.Export.dll
│ │ │ │ │ ├── PerpetuumSoft.Framework.Model.dll
│ │ │ │ │ ├── PerpetuumSoft.Framework.dll
│ │ │ │ │ ├── PerpetuumSoft.Instrumentation.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.Export.Csv.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.Export.Excel.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.Export.ExcelXml.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.Export.Html.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.Export.OpenXML.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.Export.Pdf.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.Export.Rtf.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.MSChart.dll
│ │ │ │ │ ├── PerpetuumSoft.Reporting.dll
│ │ │ │ │ ├── PerpetuumSoft.Writers.Excel.dll
│ │ │ │ │ ├── PerpetuumSoft.Writers.Flash.dll
│ │ │ │ │ ├── PerpetuumSoft.Writers.Pdf.dll
│ │ │ │ │ ├── PerpetuumSoft.Writers.Svg.dll
│ │ │ │ │ └── itextsharp.dll
│ │ │ ├── GroupBy.cs
│ │ │ ├── Option.cs
│ │ │ ├── PrivateApis.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── RatingModel.cs
│ │ │ ├── RatingModelLoader.cs
│ │ │ ├── Readme.md
│ │ │ ├── ReportRunner.cs
│ │ │ ├── SharpShooterReportsRunner.csproj
│ │ │ ├── TimeSeries.cs
│ │ │ └── packages.config
│ │ ├── SosExporter
│ │ │ ├── App.config
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Readme.md
│ │ │ ├── SosExporter.csproj
│ │ │ ├── docker-proxy
│ │ │ │ ├── Readme.md
│ │ │ │ ├── docker-compose
│ │ │ │ │ ├── docker-compose.yml
│ │ │ │ │ └── nginx-proxy.conf
│ │ │ │ └── images
│ │ │ │ │ ├── ActivateHydrologyProfile.png
│ │ │ │ │ ├── AddTheAdminCredentials.png
│ │ │ │ │ ├── AdditionalQualifiers.png
│ │ │ │ │ ├── AdminLoginScreen.png
│ │ │ │ │ ├── AdminProfilesSubMenu.png
│ │ │ │ │ ├── AdvanceToFinalSetupWizardScreen.png
│ │ │ │ │ ├── AqtsQualifierExample.png
│ │ │ │ │ ├── ClickHereToBeginSetup.png
│ │ │ │ │ ├── ClickStartInLowerRightCorner.png
│ │ │ │ │ ├── CompleteButNotComplete.png
│ │ │ │ │ ├── ConfigureCorrectedOrRawPoints.png
│ │ │ │ │ ├── ConfigureExtendedAttributeFilters.png
│ │ │ │ │ ├── ConfigureLimitQualifiers.png
│ │ │ │ │ ├── ConfigureProxyPollingIntervals.png
│ │ │ │ │ ├── EnterAqtsUrlAndCredentials.png
│ │ │ │ │ ├── FilterByPublishFlag.png
│ │ │ │ │ ├── OldSosExporterExtendedAttributeSetup.png
│ │ │ │ │ └── SelectProxyInMemory.png
│ │ │ └── docker
│ │ │ │ ├── AdminProfilesMenu.png
│ │ │ │ ├── ClickHereToStartInstallation.png
│ │ │ │ ├── ConfirmDataSourceStep.png
│ │ │ │ ├── DisableTransactionalCheckbox.png
│ │ │ │ ├── DockerSetup.md
│ │ │ │ ├── FinishInstall.png
│ │ │ │ ├── HydrologyProfileEnabled.png
│ │ │ │ ├── InstallStartPage.png
│ │ │ │ ├── ProfileConfigurationList.png
│ │ │ │ ├── SelectDataSource.png
│ │ │ │ ├── SelectTransactionalSecurityTab.png
│ │ │ │ ├── SetupCompleted.png
│ │ │ │ ├── StartButton.png
│ │ │ │ └── docker-compose
│ │ │ │ ├── .gitignore
│ │ │ │ ├── docker-compose.yml
│ │ │ │ └── nginx-proxy.conf
│ │ ├── TimeSeriesChangeMonitor
│ │ │ ├── App.config
│ │ │ ├── ChangeEventType.cs
│ │ │ ├── Context.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── Monitor.cs
│ │ │ ├── Option.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Readme.md
│ │ │ ├── TimeSeriesChangeMonitor.csproj
│ │ │ ├── TimeSeriesIdentifier.cs
│ │ │ ├── TimeSeriesIdentifierParser.cs
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ │ ├── TotalDischargeExternalProcessor
│ │ │ ├── App.config
│ │ │ ├── Config.cs
│ │ │ ├── Config.json
│ │ │ ├── ConfigLoader.cs
│ │ │ ├── Context.cs
│ │ │ ├── EventIntervalDetector.cs
│ │ │ ├── ExeHelper.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── ExternalProcessor.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── Option.cs
│ │ │ ├── Point.cs
│ │ │ ├── Processor.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Readme.md
│ │ │ ├── TimeSeriesIdentifier.cs
│ │ │ ├── TimeSeriesIdentifierParser.cs
│ │ │ ├── TotalDischargeExternalProcessor.csproj
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ │ ├── UserImporter
│ │ │ ├── App.config
│ │ │ ├── ExeHelper.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── Helpers
│ │ │ │ ├── CsvAuthenticationTypeConverter.cs
│ │ │ │ ├── CsvBoolConverter.cs
│ │ │ │ └── CsvFileReaderWriter.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Readme.md
│ │ │ ├── Records
│ │ │ │ ├── AuthenticationType.cs
│ │ │ │ └── UserRecord.cs
│ │ │ ├── UserImporter.cs
│ │ │ ├── UserImporter.csproj
│ │ │ ├── UserImporterContext.cs
│ │ │ ├── UserMapper.cs
│ │ │ ├── UserRecordValidator.cs
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ │ └── WaterWatchPreProcessor
│ │ │ ├── App.config
│ │ │ ├── Context.cs
│ │ │ ├── Dtos
│ │ │ ├── SavedState.cs
│ │ │ └── WaterWatch
│ │ │ │ ├── Alarm.cs
│ │ │ │ ├── Config.cs
│ │ │ │ ├── DisplayInfo.cs
│ │ │ │ ├── GetMeasurementsRequest.cs
│ │ │ │ ├── GetMeasurementsResponse.cs
│ │ │ │ ├── GetSensorsRequest.cs
│ │ │ │ ├── LatestData.cs
│ │ │ │ ├── Measurement.cs
│ │ │ │ ├── ReferenceLine.cs
│ │ │ │ └── Sensor.cs
│ │ │ ├── EmbeddedResource.cs
│ │ │ ├── ExpectedException.cs
│ │ │ ├── Exporter.cs
│ │ │ ├── Filters
│ │ │ ├── Filter.cs
│ │ │ ├── IFilter.cs
│ │ │ └── RegexFilter.cs
│ │ │ ├── FodyWeavers.xml
│ │ │ ├── Option.cs
│ │ │ ├── OutputMode.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ └── AssemblyInfo.cs
│ │ │ ├── Readme.md
│ │ │ ├── WaterWatchPreProcessor.csproj
│ │ │ ├── images
│ │ │ ├── ConnectConnector.png
│ │ │ ├── ConnectDataSetRule.png
│ │ │ ├── ConnectExportRuleProfile.png
│ │ │ ├── ConnectInboundConnectionProcessing.png
│ │ │ ├── ConnectInboundConnectionRule.png
│ │ │ ├── ConnectLocation.png
│ │ │ ├── ConnectSchedule.png
│ │ │ ├── ConnectTextFileExtractionRule.png
│ │ │ ├── ScadaDataloggerConfig.png
│ │ │ ├── ScadaObjectTree.png
│ │ │ ├── ScadaSensorConfig.png
│ │ │ ├── ScadaSensorExport.png
│ │ │ └── ScadaSensorHistoric.png
│ │ │ ├── log4net.config
│ │ │ └── packages.config
│ └── TableauConnector
│ │ ├── AQDC_DataPhase2.js
│ │ ├── AQDC_InteractivePhase2.js
│ │ ├── AQDC_Stylesheet.css
│ │ ├── AQUARIUSConnector2.html
│ │ ├── Logo_Time-Series-Tag.jpg
│ │ ├── Readme.html
│ │ ├── Readme.md
│ │ └── web.config
└── SampleFiles
│ └── FieldData
│ ├── Plugin
│ ├── CrossSectionSurvey
│ │ ├── CrossSectionSample.csv
│ │ ├── CrossSectionSampleWithPointOrder.csv
│ │ └── Readme.md
│ ├── PocketGauger
│ │ ├── PGData.zip
│ │ └── Readme.md
│ └── StageDischarge
│ │ ├── Readme.md
│ │ └── StageDischargeSample.csv
│ ├── Readme.md
│ └── Stock
│ ├── AquaCalc
│ ├── AquaCalcSample.csv
│ └── Readme.md
│ ├── FlowTracker
│ ├── FlowTrackerSample.dis
│ └── Readme.md
│ ├── HFC
│ ├── HfcSample.MQ1
│ └── Readme.md
│ ├── RiverSurveyor
│ ├── Readme.md
│ └── RiverSurveyorSample.dis
│ ├── Scottech
│ ├── Readme.md
│ └── ScottechSample.glr
│ ├── USGS
│ ├── Readme.md
│ └── UsgsHydroMLSample.xml
│ └── WinRiver
│ ├── Readme.md
│ └── WinRiverSample.xml
├── WebPortal
└── Python
│ └── DownloadCsv
│ ├── Readme.md
│ └── download_csv.py
├── appveyor.yml
└── images
├── AQTSTableauConnector.png
└── aquatic-informatics.svg
/.gitignore:
--------------------------------------------------------------------------------
1 | #Ignore thumbnails created by windows
2 | Thumbs.db
3 | #Ignore generated Python code
4 | *.pyc
5 | venv/
6 | #Ignore merge conflict files
7 | *.orig
8 | #Ignore some common Java cruft
9 | .idea
10 | *.iml
11 | target
12 | #Ignore some MyGet cruft
13 | [Bb]uild/
14 | msbuild.log
15 | #Ignore build output and Visual Studio temp file
16 | *.obj
17 | *.exe
18 | *.dll
19 | *.pdb
20 | *.user
21 | *.aps
22 | *.pch
23 | *.vspscc
24 | *_i.c
25 | *_p.c
26 | *_h.h
27 | *_i.h
28 | *.ncb
29 | *.suo
30 | *.tlb
31 | *.tlh
32 | *.bak
33 | *.cache
34 | *.ilk
35 | *.log
36 | *.log.*
37 | *.lib
38 | *.sbr
39 | [Bb]in/
40 | [Oo]bj/
41 | [Dd]ebug*/
42 | [Rr]elease*/
43 | _[Rr]eSharper*/
44 | [Tt]est[Rr]esult*/
45 | # MIDL generated file
46 | dlldata.c
47 | # Build log files
48 | *_Release_Log.txt
49 | *_Debug_Log.txt
50 | # intended to globally catch Visual Studio intellisense files. SQL Server files are overridden by .gitignore files in their own directory
51 | *.sdf
52 | *.opensdf
53 | ipch/
54 | [Dd]eploy/
55 | # Ignore NuGet Packages
56 | *.nupkg
57 | # Ignore the packages folder
58 | **/packages/*
59 | # except build/, which is used as an MSBuild target.
60 | !**/packages/build/
61 | # Uncomment if necessary however generally it will be regenerated when needed
62 | #!**/packages/repositories.config
63 | .vs/
64 | TestResult.xml
65 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # CONTRIBUTING
2 |
3 | Contributions are always welcome, no matter how large or small. Before contributing,
4 | please read the [code of conduct](CODE_OF_CONDUCT.md).
5 |
6 | ## Pull Requests
7 |
8 | We actively welcome your pull requests.
9 |
10 | 1. Fork the repo and create your branch from `master`.
11 | 2. Raise a pull request
12 |
13 | ## License
14 |
15 | By contributing to the Aquarius Examples repo, you agree that your contributions will be licensed
16 | under its [Apache 2.0 license](LICENSE.txt).
17 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AQUARIUS Examples Repo
2 |
3 | [](https://ci.appveyor.com/project/SystemsAdministrator/examples/branch/master)
4 |
5 | The **AQUARIUS Examples** repository contains example projects demonstrating various integration techniques with the [AQUARIUS Platform](http://aquaticinformatics.com/products/) of environmental monitoring products.
6 |
7 | 
8 |
9 | * [AQUARIUS Time-Series](http://aquaticinformatics.com/products/aquarius-time-series/)
10 | * [AQUARIUS Samples](http://aquaticinformatics.com/products/aquarius-samples/)
11 | * [AQUARIUS WebPortal](http://aquaticinformatics.com/products/aquarius-webportal/)
12 |
13 | ## Repo organization
14 |
15 | This repo is not a standard software git repository, with one branch building the latest-and-greatest version of the software.
16 |
17 | Instead, this repo is organized as a series of stand-alone project folders.
18 |
19 | Each project folder includes a README file that describes how to get started using the project.
20 |
21 | ## Getting Help
22 |
23 | See the [Wiki](https://github.com/AquaticInformatics/Examples/wiki) for an outline of the example projects.
24 |
25 | ## Contributing
26 |
27 | Contributions are always welcome, no matter how large or small. Before contributing, please read the [code of conduct](CODE_OF_CONDUCT.md).
28 |
29 | See [Contributing](CONTRIBUTING.md).
30 |
31 |
--------------------------------------------------------------------------------
/Samples/CSharpExamples/CSharpExamples.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 17
4 | VisualStudioVersion = 17.0.31903.59
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImportObservationFile", "ImportObservationFile\ImportObservationFile.csproj", "{155BDCCA-6CC2-4D86-8053-F333C913958F}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(SolutionProperties) = preSolution
14 | HideSolutionNode = FALSE
15 | EndGlobalSection
16 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
17 | {155BDCCA-6CC2-4D86-8053-F333C913958F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
18 | {155BDCCA-6CC2-4D86-8053-F333C913958F}.Debug|Any CPU.Build.0 = Debug|Any CPU
19 | {155BDCCA-6CC2-4D86-8053-F333C913958F}.Release|Any CPU.ActiveCfg = Release|Any CPU
20 | {155BDCCA-6CC2-4D86-8053-F333C913958F}.Release|Any CPU.Build.0 = Release|Any CPU
21 | EndGlobalSection
22 | EndGlobal
23 |
--------------------------------------------------------------------------------
/Samples/CSharpExamples/ImportObservationFile/ImportObservationFile.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net6.0
6 | enable
7 | enable
8 | C# example to use Samples API to import observation csv files
9 | Aquatic Informatics ULC
10 | Aquatic Informatics ULC
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Samples/CSharpExamples/ImportObservationFile/Program.cs:
--------------------------------------------------------------------------------
1 | /*
2 | * This is a CSharp .NET 6.0 console project that shows how to call Samples API to upload csv files
3 | * to import observations.
4 | * The example code is for demo only.
5 | * The author is not responsible for any consequence of using the code.
6 | */
7 |
8 | //Get the URL of Samples and API token:
9 |
10 | using ImportObservationFile;
11 |
12 | Console.WriteLine("Please enter your Samples URL (example: https://myorg.aqsamples.ca/):");
13 | var url = Console.ReadLine();
14 | ArgumentNullException.ThrowIfNull(url,nameof(url));
15 |
16 | Console.WriteLine("Please enter the auth token. You can get one from https://[your_aqsamples_url/api/:");
17 | var token = Console.ReadLine();
18 | ArgumentNullException.ThrowIfNull(token, nameof(token));
19 |
20 | Console.WriteLine("Please enter the full path of a valid observation csv file. Refer to the help manual to create one:");
21 | var csvFileFullPath = Console.ReadLine();
22 | ArgumentNullException.ThrowIfNull(csvFileFullPath, nameof(csvFileFullPath));
23 | if (!File.Exists(csvFileFullPath)) throw new ArgumentException($"File not found: {csvFileFullPath}");
24 |
25 | try
26 | {
27 | ImportObsDemo.Run(url, token, csvFileFullPath);
28 | }
29 | catch (Exception e)
30 | {
31 | Console.WriteLine(e);
32 | }
33 |
34 | Console.WriteLine("Demo finished.");
35 |
--------------------------------------------------------------------------------
/Samples/CSharpExamples/ImportObservationFile/ServiceModel/ImportStatus.cs:
--------------------------------------------------------------------------------
1 |
2 | namespace ImportObservationFile.ServiceModel
3 | {
4 | ///
5 | ///ImportProcessorTransactionStatus will have these values:
6 | /// PENDING,
7 | /// IN_PROGRESS,
8 | /// COMPLETED,
9 | /// COMPLETED_WITH_ERRORS,
10 | /// BAD_REQUEST,
11 | /// SYSTEM_ERROR
12 | ///
13 | ///
14 | ///
15 | public record ImportStatus(string Id, string ImportProcessorTransactionStatus);
16 | }
17 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/ExeHelper.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.IO;
3 | using System.Reflection;
4 |
5 | namespace LabFileImporter
6 | {
7 | public class ExeHelper
8 | {
9 | // ReSharper disable once PossibleNullReferenceException
10 | public static string ExeFullPath => Path.GetFullPath(Assembly.GetEntryAssembly().Location);
11 | public static string ExeDirectory => Path.GetDirectoryName(ExeFullPath);
12 | public static string ExeVersion => FileVersionInfo.GetVersionInfo(ExeFullPath).FileVersion;
13 | public static string ExeName => Path.GetFileNameWithoutExtension(ExeFullPath);
14 | public static string ExeNameAndVersion => $"{ExeName} (v{ExeVersion})";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/ExpectedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace LabFileImporter
4 | {
5 | public class ExpectedException : Exception
6 | {
7 | public ExpectedException(string message)
8 | : base(message)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/ImportResultResponse.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | // ReSharper disable InconsistentNaming
4 |
5 | using System.Collections.Generic;
6 | using Aquarius.Samples.Client.ServiceModel;
7 |
8 | namespace LabFileImporter
9 | {
10 | public class ImportResultResponse
11 | {
12 | public int SuccessCount { get; set; }
13 | public int SkippedCount { get; set; }
14 | public int ErrorCount { get; set; }
15 | public int NewCount { get; set; }
16 | public int UpdateCount { get; set; }
17 | public int ExpectedCount { get; set; }
18 | public string InvalidRowsCsvUrl { get; set; }
19 | public string SummaryReportText { get; set; }
20 | public List ImportJobErrors { get; set; }
21 | public List ErrorImportItems { get; set; }
22 | }
23 |
24 | public class ImportErrorItem
25 | {
26 | public Dictionary> Errors { get; set; }
27 | public string RowId { get; set; }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/ImportStatus.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 |
4 | namespace LabFileImporter
5 | {
6 | public class ImportStatus
7 | {
8 | public HttpStatusCode HttpStatusCode { get; set; }
9 | public Uri ResultUri { get; set; }
10 |
11 | //If API is changed to not return redirect, we are still OK if result Uri is returned:
12 | public bool IsImportFinished => HttpStatusCode == HttpStatusCode.Redirect || ResultUri != null;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/Option.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace LabFileImporter
4 | {
5 | public class Option
6 | {
7 | public string Key { get; set; }
8 | public string Description { get; set; }
9 | public Action Setter { get; set; }
10 | public Func Getter { get; set; }
11 |
12 | public string UsageText()
13 | {
14 | if (string.IsNullOrEmpty(Key) && string.IsNullOrEmpty(Description))
15 | return string.Empty; // Omits a blank line
16 |
17 | var key = string.IsNullOrEmpty(Key) ? SeparatorLine : "-" + Key.PadRight(KeyWidth);
18 |
19 | var defaultValue = Getter != null ? Getter() : string.Empty;
20 |
21 | if (!string.IsNullOrEmpty(defaultValue))
22 | defaultValue = $" [default: {defaultValue}]";
23 |
24 | return $"{key} {Description}{defaultValue}";
25 | }
26 |
27 | private const int KeyWidth = 24;
28 | private static readonly string SeparatorLine = string.Empty.PadRight(KeyWidth + 1, '=');
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("LabFileImporter")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("LabFileImporter")]
13 | [assembly: AssemblyCopyright("Copyright © 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("d061d5a5-bb33-4689-8f86-b5a8d06ca879")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/Samples.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/Samples/DotNetSdk/LabFileImporter/Samples.ico
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/Screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/Samples/DotNetSdk/LabFileImporter/Screenshot.png
--------------------------------------------------------------------------------
/Samples/DotNetSdk/LabFileImporter/log4net.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/ExeHelper.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.IO;
3 | using System.Reflection;
4 |
5 | namespace NWFWMDLabFileImporter
6 | {
7 | public class ExeHelper
8 | {
9 | // ReSharper disable once PossibleNullReferenceException
10 | public static string ExeFullPath => Path.GetFullPath(Assembly.GetEntryAssembly().Location);
11 | public static string ExeDirectory => Path.GetDirectoryName(ExeFullPath);
12 | public static string ExeVersion => FileVersionInfo.GetVersionInfo(ExeFullPath).FileVersion;
13 | public static string ExeName => Path.GetFileNameWithoutExtension(ExeFullPath);
14 | public static string ExeNameAndVersion => $"{ExeName} (v{ExeVersion})";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/ExpectedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace NWFWMDLabFileImporter
4 | {
5 | public class ExpectedException : Exception
6 | {
7 | public ExpectedException(string message)
8 | : base(message)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/ImportResultResponse.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | // ReSharper disable InconsistentNaming
4 |
5 | using System.Collections.Generic;
6 | using Aquarius.Samples.Client.ServiceModel;
7 |
8 | namespace NWFWMDLabFileImporter
9 | {
10 | public class ImportResultResponse
11 | {
12 | public int SuccessCount { get; set; }
13 | public int SkippedCount { get; set; }
14 | public int ErrorCount { get; set; }
15 | public int NewCount { get; set; }
16 | public int UpdateCount { get; set; }
17 | public int ExpectedCount { get; set; }
18 | public string InvalidRowsCsvUrl { get; set; }
19 | public string SummaryReportText { get; set; }
20 | public List ImportJobErrors { get; set; }
21 | public List ErrorImportItems { get; set; }
22 | }
23 |
24 | public class ImportErrorItem
25 | {
26 | public Dictionary> Errors { get; set; }
27 | public string RowId { get; set; }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/ImportStatus.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 |
4 | namespace NWFWMDLabFileImporter
5 | {
6 | public class ImportStatus
7 | {
8 | public HttpStatusCode HttpStatusCode { get; set; }
9 | public Uri ResultUri { get; set; }
10 |
11 | //If API is changed to not return redirect, we are still OK if result Uri is returned:
12 | public bool IsImportFinished => HttpStatusCode == HttpStatusCode.Redirect || ResultUri != null;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/Option.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace NWFWMDLabFileImporter
4 | {
5 | public class Option
6 | {
7 | public string Key { get; set; }
8 | public string Description { get; set; }
9 | public Action Setter { get; set; }
10 | public Func Getter { get; set; }
11 |
12 | public string UsageText()
13 | {
14 | if (string.IsNullOrEmpty(Key) && string.IsNullOrEmpty(Description))
15 | return string.Empty; // Omits a blank line
16 |
17 | var key = string.IsNullOrEmpty(Key) ? SeparatorLine : "-" + Key.PadRight(KeyWidth);
18 |
19 | var defaultValue = Getter != null ? Getter() : string.Empty;
20 |
21 | if (!string.IsNullOrEmpty(defaultValue))
22 | defaultValue = $" [default: {defaultValue}]";
23 |
24 | return $"{key} {Description}{defaultValue}";
25 | }
26 |
27 | private const int KeyWidth = 24;
28 | private static readonly string SeparatorLine = string.Empty.PadRight(KeyWidth + 1, '=');
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("LabFileImporter")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("LabFileImporter")]
13 | [assembly: AssemblyCopyright("Copyright © 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("d061d5a5-bb33-4689-8f86-b5a8d06ca879")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/Samples.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/Samples/DotNetSdk/NWFWMD-LabFileImporter/Samples.ico
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/Screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/Samples/DotNetSdk/NWFWMD-LabFileImporter/Screenshot.png
--------------------------------------------------------------------------------
/Samples/DotNetSdk/NWFWMD-LabFileImporter/log4net.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/Context.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace ObservationReportExporter
5 | {
6 | public class Context
7 | {
8 | public string SamplesServer { get; set; }
9 | public string SamplesApiToken { get; set; }
10 | public string TimeSeriesServer { get; set; }
11 | public string TimeSeriesUsername { get; set; }
12 | public string TimeSeriesPassword { get; set; }
13 | public string ExportTemplateName { get; set; }
14 | public string AttachmentFilename { get; set; } = FilenameGenerator.DefaultAttachmentFilename;
15 | public bool DryRun { get; set; }
16 | public bool DeleteExistingAttachments { get; set; } = true;
17 |
18 | public Dictionary AttachmentTags { get; } =
19 | new Dictionary(StringComparer.InvariantCultureIgnoreCase);
20 | public List LocationIds { get; } = new List();
21 | public List LocationGroupIds { get; } = new List();
22 | public List AnalyticalGroupIds { get; } = new List();
23 | public List ObservedPropertyIds { get; } = new List();
24 | public DateTimeOffset? ExportTime { get; set; }
25 | public DateTimeOffset? StartTime { get; set; }
26 | public DateTimeOffset? EndTime { get; set; }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/ExeHelper.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.IO;
3 | using System.Reflection;
4 |
5 | namespace ObservationReportExporter
6 | {
7 | public class ExeHelper
8 | {
9 | // ReSharper disable once PossibleNullReferenceException
10 | public static string ExeFullPath => Path.GetFullPath(Assembly.GetEntryAssembly().Location);
11 | public static string ExeDirectory => Path.GetDirectoryName(ExeFullPath);
12 | public static string ExeVersion => FileVersionInfo.GetVersionInfo(ExeFullPath).FileVersion;
13 | public static string ExeName => Path.GetFileNameWithoutExtension(ExeFullPath);
14 | public static string ExeNameAndVersion => $"{ExeName} (v{ExeVersion})";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/ExpectedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ObservationReportExporter
4 | {
5 | public class ExpectedException : Exception
6 | {
7 | public ExpectedException(string message)
8 | : base(message)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/ExtraApis/Samples/GetExchangeConfigurations.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Aquarius.Samples.Client.ServiceModel;
3 | using ServiceStack;
4 |
5 | namespace ObservationReportExporter.ExtraApis.Samples
6 | {
7 | [Route("/v1/exchangeconfigurations", HttpMethods.Get)]
8 | public class GetExchangeConfigurations : IReturn
9 | {
10 | }
11 |
12 | public class SearchResultsExchangeConfigurations
13 | {
14 | public int TotalCount { get; set; }
15 | public List DomainObjects { get; set; } = new List();
16 |
17 | }
18 |
19 | public class ExchangeConfiguration
20 | {
21 | public string Id { get; set; }
22 | public string CustomId { get; set; }
23 | public string Type { get; set; }
24 | public string Description { get; set; }
25 |
26 | public List SamplingLocationMappings { get; set; } = new List();
27 | }
28 |
29 | public class SamplingLocationMapping
30 | {
31 | public string Id { get; set; }
32 | public SamplingLocation SamplingLocation { get; set; }
33 | public string ExternalLocation { get; set; }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/ExtraApis/TimeSeries/DeleteAttachmentById.cs:
--------------------------------------------------------------------------------
1 | using ServiceStack;
2 |
3 | namespace ObservationReportExporter.ExtraApis.TimeSeries
4 | {
5 | [Route("/attachments/{Id}", HttpMethods.Delete)]
6 | public class DeleteAttachmentById : IReturnVoid
7 | {
8 | public string Id { get; set; }
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/Option.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ObservationReportExporter
4 | {
5 | public class Option
6 | {
7 | public string Key { get; set; }
8 | public string Description { get; set; }
9 | public Action Setter { get; set; }
10 | public Func Getter { get; set; }
11 |
12 | public string UsageText()
13 | {
14 | if (string.IsNullOrEmpty(Key) && string.IsNullOrEmpty(Description))
15 | return string.Empty; // Omits a blank line
16 |
17 | var key = string.IsNullOrEmpty(Key) ? SeparatorLine : "-" + Key.PadRight(KeyWidth);
18 |
19 | var defaultValue = Getter != null ? Getter() : string.Empty;
20 |
21 | if (!string.IsNullOrEmpty(defaultValue))
22 | defaultValue = $" [default: {defaultValue}]";
23 |
24 | return $"{key} {Description}{defaultValue}";
25 | }
26 |
27 | private const int KeyWidth = 26;
28 | private static readonly string SeparatorLine = string.Empty.PadRight(KeyWidth + 1, '=');
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationReportExporter/log4net.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationValidator/ComparisonSymbol.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace ObservationValidator
4 | {
5 | public static class ComparisonSymbol
6 | {
7 | public const string GreaterThan = ">";
8 | public const string LessThan = "<";
9 | public const string GreaterOrEqual = ">=";
10 | public const string LessOrEqual = "<=";
11 | public const string Equal = "=";
12 |
13 | public static IReadOnlyList AllSymbols =
14 | new List
15 | {
16 | GreaterThan,
17 | LessThan,
18 | GreaterOrEqual,
19 | LessOrEqual,
20 | Equal
21 | };
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationValidator/Context.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ObservationValidator
4 | {
5 | public class Context
6 | {
7 | public static readonly string PredefinedFlag = "InvalidValue";
8 | public static readonly int DefaultBatchSize = 100;
9 |
10 | public Context()
11 | {
12 | Flag = PredefinedFlag;
13 | BatchSize = DefaultBatchSize;
14 | }
15 |
16 | public string SamplesAuthToken { get; set; }
17 | public string SamplesApiBaseUrl { get; set; }
18 | public string Flag { get; set; }
19 | public int BatchSize { get; set; }
20 | public DateTimeOffset LastRunStartTimeUtc { get; set; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationValidator/FilePathHelper.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Reflection;
4 |
5 | namespace ObservationValidator
6 | {
7 | public static class FilePathHelper
8 | {
9 | public static string GetFullPathOfFileInExecutableFolder(string fileName)
10 | {
11 | var exeDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
12 | if (string.IsNullOrWhiteSpace(exeDirectory))
13 | {
14 | throw new ArgumentException("Failed to get the directory of the executable.");
15 | }
16 |
17 | return Path.Combine(exeDirectory, fileName);
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationValidator/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | [assembly: AssemblyTitle("Samples Observation Validator")]
4 | [assembly: AssemblyDescription("Validates results of observations and set quality flags.")]
5 | [assembly: AssemblyCompany("Aquatic Informatics Inc.")]
6 | [assembly: AssemblyProduct("AQUARIUS")]
7 | [assembly: AssemblyCopyright("Copyright © 2018")]
8 |
9 | [assembly: AssemblyVersion("1.0.0.0")]
10 | [assembly: AssemblyFileVersion("1.0.0.0")]
11 |
12 | [assembly: log4net.Config.XmlConfigurator(Watch = true)]
13 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationValidator/Rule.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 |
4 | namespace ObservationValidator
5 | {
6 | public class Rule
7 | {
8 | public string LeftParam { get; }
9 | public string ComparisonSymbol { get; }
10 | public string RightParam { get; }
11 |
12 | public Rule(string left, string comparisonSymbol, string right)
13 | {
14 | if (string.IsNullOrWhiteSpace(left))
15 | {
16 | throw new ArgumentNullException(nameof(left),
17 | "Parameter name on the left side of a rule cannot be empty.");
18 | }
19 |
20 | if (string.IsNullOrWhiteSpace(right))
21 | {
22 | throw new ArgumentNullException(nameof(left),
23 | "Parameter name on the right side of a rule cannot be empty.");
24 | }
25 |
26 | ValidateComparisonSymbolOrThrow(comparisonSymbol);
27 |
28 | LeftParam = left;
29 | RightParam = right;
30 | ComparisonSymbol = comparisonSymbol;
31 | }
32 |
33 | private void ValidateComparisonSymbolOrThrow(string symbol)
34 | {
35 | if (string.IsNullOrWhiteSpace(symbol) ||
36 | !ObservationValidator.ComparisonSymbol.AllSymbols.Contains(symbol))
37 | {
38 | throw new ArgumentException($"Invalid comparison symbol: {symbol}.");
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationValidator/ValidationResult.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace ObservationValidator
5 | {
6 | public class ValidationResult
7 | {
8 | public HashSet ProcessedSpecimenNames => new HashSet();
9 | public int ProcessedSpecimenCount { get; set; }
10 | public int ExaminedObservationsCount { get; set; }
11 | public int InvalidObservationsTotal { get; set; }
12 | public Exception FatalException { get; set; }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationValidator/ValidationRules.txt:
--------------------------------------------------------------------------------
1 | # Observations that match the following rules are determined as valid.
2 | # The format of the rule: ParamNameLeft ComparisonSymbol ParamNameRight
3 | # - ParamName is case sensitive. Cannot be null or empty string. Should not contain comparison symbols.
4 | # - 5 Supported comparison symbols: >, <, >=, <=, =
5 | # - One rule per line.
6 | # - Example: Ammonium Nitrogen < Total Nitrogen
7 | # Use # at the line start to indicate a comment line.
8 | # Empty lines are ignored.
9 | # More examples:
10 | # Nitrate < Total N
11 | # 4-4'-DDT < 4-4'-DDD
12 | # Nitrate 1 >= Total N 1
13 | # Nitrate 2<= Total N2
14 | # Nitrate 3 = Total N3
15 |
16 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/ObservationValidator/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesObservationExporter/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesObservationExporter/Context.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using NodaTime;
4 |
5 | namespace SamplesObservationExporter
6 | {
7 | public class Context
8 | {
9 | public string ServerUrl { get; set; }
10 | public string ApiToken { get; set; }
11 | public string CsvOutputPath { get; set; }
12 | public bool Overwrite { get; set; }
13 | public Offset UtcOffset { get; set; } = Offset.FromTicks(DateTimeOffset.Now.Offset.Ticks);
14 | public List LocationIds { get; } = new List();
15 | public List AnalyticalGroupIds { get; } = new List();
16 | public List ObservedPropertyIds { get; } = new List();
17 | public List ProjectIds { get; } = new List();
18 | public DateTimeOffset? StartTime { get; set; }
19 | public DateTimeOffset? EndTime { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesObservationExporter/ExeHelper.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.IO;
3 | using System.Reflection;
4 |
5 | namespace SamplesObservationExporter
6 | {
7 | public class ExeHelper
8 | {
9 | // ReSharper disable once PossibleNullReferenceException
10 | public static string ExeFullPath => Path.GetFullPath(Assembly.GetEntryAssembly().Location);
11 | public static string ExeDirectory => Path.GetDirectoryName(ExeFullPath);
12 | public static string ExeVersion => FileVersionInfo.GetVersionInfo(ExeFullPath).FileVersion;
13 | public static string ExeName => Path.GetFileNameWithoutExtension(ExeFullPath);
14 | public static string ExeNameAndVersion => $"{ExeName} (v{ExeVersion})";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesObservationExporter/ExpectedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SamplesObservationExporter
4 | {
5 | public class ExpectedException : Exception
6 | {
7 | public ExpectedException(string message)
8 | : base(message)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesObservationExporter/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesObservationExporter/Option.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace SamplesObservationExporter
4 | {
5 | public class Option
6 | {
7 | public string Key { get; set; }
8 | public string Description { get; set; }
9 | public Action Setter { get; set; }
10 | public Func Getter { get; set; }
11 |
12 | public string UsageText()
13 | {
14 | if (string.IsNullOrEmpty(Key) && string.IsNullOrEmpty(Description))
15 | return string.Empty; // Omits a blank line
16 |
17 | var key = string.IsNullOrEmpty(Key) ? SeparatorLine : "-" + Key.PadRight(KeyWidth);
18 |
19 | var defaultValue = Getter != null ? Getter() : string.Empty;
20 |
21 | if (!string.IsNullOrEmpty(defaultValue))
22 | defaultValue = $" [default: {defaultValue}]";
23 |
24 | return $"{key} {Description}{defaultValue}";
25 | }
26 |
27 | private const int KeyWidth = 24;
28 | private static readonly string SeparatorLine = string.Empty.PadRight(KeyWidth + 1, '=');
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesObservationExporter/Samples.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/Samples/DotNetSdk/SamplesObservationExporter/Samples.ico
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesObservationExporter/log4net.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Config.cs:
--------------------------------------------------------------------------------
1 | namespace SamplesPlannedSpecimenInstantiator
2 | {
3 | public class Config
4 | {
5 | public string Server { get; set; }
6 | public string ApiToken { get; set; }
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/CursorWait.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace SamplesPlannedSpecimenInstantiator
5 | {
6 | public class CursorWait : IDisposable
7 | {
8 | public CursorWait(bool appStarting = false, bool applicationCursor = false)
9 | {
10 | // Wait
11 | Cursor.Current = appStarting ? Cursors.AppStarting : Cursors.WaitCursor;
12 | if (applicationCursor) Application.UseWaitCursor = true;
13 | }
14 |
15 | public void Dispose()
16 | {
17 | // Reset
18 | Cursor.Current = Cursors.Default;
19 | Application.UseWaitCursor = false;
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/ExeHelper.cs:
--------------------------------------------------------------------------------
1 | using System.Diagnostics;
2 | using System.IO;
3 | using System.Reflection;
4 |
5 | namespace SamplesPlannedSpecimenInstantiator
6 | {
7 | public class ExeHelper
8 | {
9 | // ReSharper disable once PossibleNullReferenceException
10 | public static string ExeFullPath => Path.GetFullPath(Assembly.GetEntryAssembly().Location);
11 | public static string ExeDirectory => Path.GetDirectoryName(ExeFullPath);
12 | public static string ExeVersion => FileVersionInfo.GetVersionInfo(ExeFullPath).FileVersion;
13 | public static string ExeName => Path.GetFileNameWithoutExtension(ExeFullPath);
14 | public static string ExeNameAndVersion => $"{ExeName} (v{ExeVersion})";
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/PrivateApis/GetUserTokens.cs:
--------------------------------------------------------------------------------
1 | using Aquarius.Samples.Client.ServiceModel;
2 | using ServiceStack;
3 |
4 | namespace SamplesPlannedSpecimenInstantiator.PrivateApis
5 | {
6 | [Route("/v1/usertokens")]
7 | public class GetUserTokens : IReturn
8 | {
9 | }
10 |
11 | public class UserTokensResponse
12 | {
13 | public User User { get; set; }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/PrivateApis/PostSpecimensFromPlannedActivity.cs:
--------------------------------------------------------------------------------
1 | using Aquarius.Samples.Client.ServiceModel;
2 | using ServiceStack;
3 |
4 | namespace SamplesPlannedSpecimenInstantiator.PrivateApis
5 | {
6 | [Route("/v1/fieldvisits/{VisitId}/activityfromplannedactivity", "POST")]
7 | public class PostSpecimensFromPlannedActivity : IReturn
8 | {
9 | public string VisitId { get; set; } // Hack for ambiguous DTO in the Platform SDK. This separates the path parameter from the body parameter
10 | public string Id { get; set; }
11 | public ActivityTemplate ActivityTemplate { get; set; }
12 | public string Instruction { get; set; }
13 | public PlannedActivityActivityType? ActivityType { get; set; }
14 | public MediumType? Medium { get; set; }
15 | public CollectionMethod CollectionMethod { get; set; }
16 | public string HashForFieldsThatRequireUniqueness { get; set; }
17 | public AuditAttributes AuditAttributes { get; set; }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SamplesTripScheduler")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("SamplesTripScheduler")]
13 | [assembly: AssemblyCopyright("Copyright © 2019")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("c491945b-f4fd-4501-b8d6-b1cf671762f5")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace SamplesPlannedSpecimenInstantiator.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.4.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Readme.md:
--------------------------------------------------------------------------------
1 | # Samples Planned Specimen Instantiator
2 |
3 | Download the [latest SamplesPlannedSpecimenInstantiator.exe release here](../../../../../releases/latest)
4 |
5 | This Windows GUI tool will:
6 |
7 | - Retrieve all field trips with a field visit with a "Planned" status
8 | - Allow you to select multiple field visits
9 | - Change the selected field visits to "In Progress" and instantiate each specimen in the visit
10 |
11 | Once the planned specimens are instantiated, the Samples UI can be used to export and deliver a report of planned specimens to laboratories.
12 |
13 | 
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Samples.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Samples.ico
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/Screenshot.png
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SamplesPlannedSpecimenInstantiator/log4net.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/Config/ConfigException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.Serialization;
3 |
4 | namespace SondeFileImporter.Config
5 | {
6 | public class ConfigException : Exception
7 | {
8 | public ConfigException()
9 | {
10 | }
11 |
12 | public ConfigException(string message) : base(message)
13 | {
14 | }
15 |
16 | public ConfigException(string message, Exception innerException) : base(message, innerException)
17 | {
18 | }
19 |
20 | protected ConfigException(SerializationInfo info, StreamingContext context) : base(info, context)
21 | {
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/Config/ConfigNames.cs:
--------------------------------------------------------------------------------
1 | namespace SondeFileImporter.Config
2 | {
3 | public static class ConfigNames
4 | {
5 | public const string SondeFileFolder = "SondeFileFolder";
6 | public const string ArchiveFolder = "ArchiveFolder";
7 |
8 | public const string SamplesApiBaseUrl = "SamplesApiBaseUrl";
9 | public const string SamplesAuthToken = "SamplesAuthToken";
10 | public const string DefaultUtcOffset = "DefaultUtcOffset";
11 | public const string ArchiveWhenFileNumberIsLargerThan = "ArchiveWhenFileNumberIsLargerThan";
12 |
13 | public const string MappingSection = "Mapping_Section";
14 | public const string HeaderMappingSection = "[Header_" + MappingSection + "]";
15 | public const string HeaderPropertyIdMappingSection = "[Header_PropertyId_" + MappingSection + "]";
16 | public const string PropertyIdUnitMappingSection = "[PropertyId_Unit_" + MappingSection + "]";
17 |
18 | public const string PlaceHolderYourAccount = "your_account";
19 | public const string PlaceHolderYourToken = "your_samples_auth_token";
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/ExampleDataFiles/Sonde file example.csv:
--------------------------------------------------------------------------------
1 | Date,Time,Site,Unit ID,User ID,°C,mmHg,DO %,DO mg/L,SPC-uS/cm,pH,pH mV,DEP m,Batt V,Lat,Lon,Date Time,Sample ID
2 | 5/20/2019,8:30:08,Cn,,JBG,27.57,760.4,51.6,4.07,124,7.25,-61.6,0.261,0,28.56602,-81.344,5/20/19 8:30,Cn20190520
3 | 5/20/2019,8:31:07,Cn,,JBG,27.54,760.5,50.3,3.97,124,7.03,-48.5,0.497,0,28.56604,-81.34399,5/20/19 8:31,Cn20190520
4 | 5/20/2019,8:32:02,Cn,,JBG,27.46,760.4,46.2,3.65,124,6.83,-37.2,1,0,28.56602,-81.34398,5/20/19 8:32,Cn20190520
5 | 5/20/2019,8:33:03,Cn,,JBG,25.96,760.4,4.2,0.34,122,6.52,-19,2.005,0,28.56603,-81.34398,5/20/19 8:33,Cn20190520
6 | 5/20/2019,8:33:51,Cn,,JBG,21.49,760.4,3.7,0.32,128,6.35,-9.3,3,0,28.56604,-81.344,5/20/19 8:33,Cn20190520
7 | 5/20/2019,8:34:44,Cn,,JBG,18.61,760.3,3.3,0.31,146,6.23,-2.6,4.002,0,28.56603,-81.34401,5/20/19 8:34,Cn20190520
8 | 5/20/2019,8:35:30,Cn,,JBG,17.66,760.4,3.2,0.3,151,6.19,-0.6,5.006,0,28.56603,-81.34401,5/20/19 8:35,Cn20190520
9 | 5/20/2019,8:36:44,Cn,,JBG,17.54,760.4,3,0.28,216,6.07,5.9,5.996,0,28.56603,-81.34399,5/20/19 8:36,Cn20190520
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/FileManagement/FileInfoSet.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | namespace SondeFileImporter.FileManagement
5 | {
6 | public class FileInfoSet
7 | {
8 | public FileInfoSet(FileInfo originalFileInfo)
9 | {
10 | OriginalSondeFile = originalFileInfo ?? throw new ArgumentNullException(nameof(originalFileInfo));
11 | }
12 |
13 | public FileInfo OriginalSondeFile { get; set; }
14 | public FileInfo ProcessingSondeFile { get; set; }
15 | public FileInfo ConvertedSamplesFile { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | [assembly: AssemblyTitle("Sonde File Importer")]
4 | [assembly: AssemblyDescription("Transforms sonde files to Samples observation csv file format and upload the file to Samples server.")]
5 | [assembly: AssemblyCompany("Aquatic Informatics Inc.")]
6 | [assembly: AssemblyVersion("1.0.0.0")]
7 | [assembly: AssemblyFileVersion("1.0.0.0")]
8 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/ServiceClient/ImportResult.cs:
--------------------------------------------------------------------------------
1 | namespace SondeFileImporter.ServiceClient
2 | {
3 | public class ImportResult
4 | {
5 | public ImportResultResponse ResultResponse { get; set; } = new ImportResultResponse();
6 |
7 | public ImportStatus ImportStatus { get; set; } = new ImportStatus();
8 |
9 | public bool HasErrors => ResultResponse.errorCount > 0;
10 | public int SuccessCount => ResultResponse.successCount;
11 | public int UpdateCount => ResultResponse.updateCount;
12 | public int ErrorCount => ResultResponse.errorCount;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/ServiceClient/ImportResultResponse.cs:
--------------------------------------------------------------------------------
1 |
2 |
3 | // ReSharper disable InconsistentNaming
4 |
5 | namespace SondeFileImporter.ServiceClient
6 | {
7 | public class ImportResultResponse
8 | {
9 | public int successCount { get; set; }
10 | public int skippedCount { get; set; }
11 | public int errorCount { get; set; }
12 | public int newCount { get; set; }
13 | public int updateCount { get; set; }
14 | public int expectedCount { get; set; }
15 | public string invalidRowsCsvUrl { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/ServiceClient/ImportStatus.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Net;
3 |
4 | namespace SondeFileImporter.ServiceClient
5 | {
6 | public class ImportStatus
7 | {
8 | public HttpStatusCode HttpStatusCode { get; set; }
9 | public Uri ResultUri { get; set; }
10 |
11 | //If API is changed to not return redirect, we are still OK if result Uri is returned:
12 | public bool IsImportFinished => HttpStatusCode == HttpStatusCode.Redirect || ResultUri != null;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/Transform/ColumnConstants.cs:
--------------------------------------------------------------------------------
1 | namespace SondeFileImporter.Transform
2 | {
3 | public static class ColumnConstants
4 | {
5 | public const string PropertyId = "Observed Property ID";
6 | public const string DepthUnit = "Depth Unit";
7 | public const string ResultValue = "Result Value";
8 | public const string ResultUnit = "Result Unit";
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Samples/DotNetSdk/SondeFileImporter/Transform/SamplesFileTemplate.csv:
--------------------------------------------------------------------------------
1 | Observation ID,Location ID,Observed Property ID,Observed DateTime,Analyzed DateTime,Depth,Depth Unit,Data Classification,Result Value,Result Unit,Result Status,Result Grade,Medium,Sample ID,Collection Method,Field: Device ID,Field: Device Type,Field: Comment,Lab: Specimen Name,Lab: Analysis Method,Lab: Detection Condition,Lab: Limit Type,Lab: MDL,Lab: MRL,Lab: Quality Flag,Lab: Received DateTime,Lab: Prepared DateTime,Lab: Sample Fraction,Lab: From Laboratory,Lab: Sample ID,Lab: Dilution Factor,Lab: Comment,QC: Type,QC: Source Sample ID
2 |
--------------------------------------------------------------------------------
/Samples/Java/API Examples/Readme.md:
--------------------------------------------------------------------------------
1 | # Using the Samples API from Java
2 |
3 | [**Download** this project folder](https://minhaskamal.github.io/DownGit/#/home?url=https:%2F%2Fgithub.com%2FAquaticInformatics%2FExamples%2Ftree%2Fmaster%2FSamples%2FJava%2FAPI%20Examples)
4 |
5 | Requires:
6 | - Java 8
7 | - Maven 4
8 |
--------------------------------------------------------------------------------
/Samples/Java/API Examples/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | AqSamplesApiExamples
8 | AqSamplesApiExamples
9 | 1.0-SNAPSHOT
10 |
11 |
12 | org.jboss.resteasy
13 | resteasy-client
14 | 4.6.0.Final
15 |
16 |
17 | org.jboss.resteasy
18 | resteasy-jackson-provider
19 | 3.0.19.Final
20 |
21 |
22 |
23 |
24 |
25 | org.apache.maven.plugins
26 | maven-compiler-plugin
27 |
28 | 1.8
29 | 1.8
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/Samples/Java/API Examples/src/main/java/ai/aqsamples/apiexamples/dtos/UnitGroup.java:
--------------------------------------------------------------------------------
1 | package ai.aqsamples.apiexamples.dtos;
2 |
3 | import org.codehaus.jackson.annotate.JsonIgnoreProperties;
4 |
5 | @JsonIgnoreProperties(ignoreUnknown = true)
6 | public class UnitGroup {
7 |
8 | private String id;
9 | private String customId;
10 | private boolean supportsConversion;
11 |
12 | public String getId() {
13 | return id;
14 | }
15 |
16 | public void setId(String id) {
17 | this.id = id;
18 | }
19 |
20 | public String getCustomId() {
21 | return customId;
22 | }
23 |
24 | public void setCustomId(String customId) {
25 | this.customId = customId;
26 | }
27 |
28 | public boolean isSupportsConversion() {
29 | return supportsConversion;
30 | }
31 |
32 | public void setSupportsConversion(boolean supportsConversion) {
33 | this.supportsConversion = supportsConversion;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Samples/R/Readme.md:
--------------------------------------------------------------------------------
1 | # An AQUARIUS Samples client for R
2 |
3 | ```R
4 | # Better finish writing this
5 | ```
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/FieldDataPlugins/Readme.md:
--------------------------------------------------------------------------------
1 | ## Moved
2 |
3 | Check out these newer repos for field data plugin development:
4 |
5 | - https://github.com/AquaticInformatics/aquarius-field-data-framework
6 | - https://github.com/AquaticInformatics/flowtracker2-field-data-plugin
7 | - https://github.com/AquaticInformatics/stage-discharge-readings-field-data-plugin
8 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/Python/images/WindRose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/Python/images/WindRose.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/Python/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup
2 |
3 | setup(
4 | name="aquarius-timeseries-client",
5 | py_modules=["timeseries_client"],
6 | version="0.1",
7 | description="Python client for Aquarius TimeSeries API",
8 | long_description=open("README.md").read(),
9 | long_description_content_type="text/markdown",
10 | url="https://github.com/AquaticInformatics/Examples",
11 | install_requires=(
12 | "requests",
13 | "pyrfc3339"
14 | )
15 | )
16 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/.gitignore:
--------------------------------------------------------------------------------
1 | # Ignore common R cruft files
2 | .RHistory
3 | rsconnect/
4 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/WDTF/Readme.md:
--------------------------------------------------------------------------------
1 | WDTF Project
2 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/ExtremeValueAnalysis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/ExtremeValueAnalysis.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/FD-Curve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/FD-Curve.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/FD-Hydrograph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/FD-Hydrograph.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/FFA-Curve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/FFA-Curve.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/IDF-Distributions.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/IDF-Distributions.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/IDF-Plot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/IDF-Plot.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/ShinyCorrelator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/ShinyCorrelator.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/ShinyFlowDuration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/ShinyFlowDuration.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/StageVsDischarge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/StageVsDischarge.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/R/images/WindRose.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/R/images/WindRose.png
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/AppendPoints/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/AppendPoints/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("AppendPoints")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("AppendPoints")]
13 | [assembly: AssemblyCopyright("Copyright © 2017")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("e2d7b054-9b51-4f15-b0aa-1a3565d0bad4")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/AppendPoints/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ChangeVisitApprovals/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ChangeVisitApprovals/Context.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace ChangeVisitApprovals
5 | {
6 | public class Context
7 | {
8 | public string Server { get; set; }
9 | public string Username { get; set; } = "admin";
10 | public string Password { get; set; } = "admin";
11 | public string SessionToken { get; set; }
12 | public int? ApprovalLevel { get; set; }
13 | public string ApprovalName { get; set; }
14 | public bool SkipConfirmation { get; set; }
15 | public bool DryRun { get; set; }
16 | public List Locations { get; set; } = new List();
17 | public DateTimeOffset? VisitsBefore { get; set; }
18 | public DateTimeOffset? VisitsAfter { get; set; }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ChangeVisitApprovals/ExpectedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ChangeVisitApprovals
4 | {
5 | public class ExpectedException : Exception
6 | {
7 | public ExpectedException(string message)
8 | : base(message)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ChangeVisitApprovals/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ChangeVisitApprovals/Option.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ChangeVisitApprovals
4 | {
5 | public class Option
6 | {
7 | public string Key { get; set; }
8 | public string Description { get; set; }
9 | public Action Setter { get; set; }
10 | public Func Getter { get; set; }
11 |
12 | public string UsageText()
13 | {
14 | var defaultValue = Getter();
15 |
16 | if (!string.IsNullOrEmpty(defaultValue))
17 | defaultValue = $" [default: {defaultValue}]";
18 |
19 | return $"{Key,-20} {Description}{defaultValue}";
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ChangeVisitApprovals/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | [assembly: AssemblyTitle("ChangeVisitApprovals")]
4 | [assembly: AssemblyDescription("")]
5 | [assembly: AssemblyConfiguration("")]
6 | [assembly: AssemblyCompany("")]
7 | [assembly: AssemblyProduct("ChangeVisitApprovals")]
8 | [assembly: AssemblyCopyright("Copyright © 2019")]
9 | [assembly: AssemblyTrademark("")]
10 | [assembly: AssemblyCulture("")]
11 | [assembly: AssemblyVersion("1.0.0.0")]
12 | [assembly: AssemblyFileVersion("1.0.0.0")]
13 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ChangeVisitApprovals/log4net.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExcelCsvExtractor/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExcelCsvExtractor/Context.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace ExcelCsvExtractor
4 | {
5 | public class Context
6 | {
7 | public string ExcelPath { get; set; }
8 | public List Sheets { get; } = new List();
9 | public string OutputPath { get; set; }
10 | public bool Overwrite { get; set; }
11 | public string DateTimeFormat { get; set; }
12 | public bool TrimEmptyColumns { get; set; } = true;
13 | public string ColumnSeparator { get; set; } = ",";
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExcelCsvExtractor/ExpectedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExcelCsvExtractor
4 | {
5 | public class ExpectedException : Exception
6 | {
7 | public ExpectedException(string message)
8 | : base(message)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExcelCsvExtractor/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExcelCsvExtractor/Option.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace ExcelCsvExtractor
4 | {
5 | public class Option
6 | {
7 | public string Key { get; set; }
8 | public string Description { get; set; }
9 | public Action Setter { get; set; }
10 | public Func Getter { get; set; }
11 |
12 | public string UsageText()
13 | {
14 | if (string.IsNullOrEmpty(Key) && string.IsNullOrEmpty(Description))
15 | return string.Empty; // Omits a blank line
16 |
17 | var key = string.IsNullOrEmpty(Key) ? SeparatorLine : "-" + Key.PadRight(KeyWidth);
18 |
19 | var defaultValue = Getter != null ? Getter() : string.Empty;
20 |
21 | if (!string.IsNullOrEmpty(defaultValue))
22 | defaultValue = $" [default: {defaultValue}]";
23 |
24 | return $"{key} {Description}{defaultValue}";
25 | }
26 |
27 | private const int KeyWidth = 24;
28 | private static readonly string SeparatorLine = string.Empty.PadRight(KeyWidth + 1, '=');
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExcelCsvExtractor/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("ExcelCsvExtractor")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("ExcelCsvExtractor")]
13 | [assembly: AssemblyCopyright("Copyright © 2022")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("657dc627-59d4-4910-b723-c7be8a70b43b")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExternalProcessor/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExternalProcessor/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("ExternalProcessor")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("ExternalProcessor")]
13 | [assembly: AssemblyCopyright("Copyright © 2017")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("b89a2d41-323b-4e48-ae24-357e215596d8")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/ExternalProcessor/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/Context.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | namespace LocationDeleter
5 | {
6 | public class Context
7 | {
8 | public string Server { get; set; }
9 | public string Username { get; set; } = "admin";
10 | public string Password { get; set; } = "admin";
11 | public string SessionToken { get; set; }
12 | public bool SkipConfirmation { get; set; }
13 | public bool DryRun { get; set; }
14 | public bool RecreateLocations { get; set; }
15 | public List LocationsToDelete { get; set; } = new List();
16 | public List TimeSeriesToDelete { get; set; } = new List();
17 | public List RatingModelsToDelete { get; set; } = new List();
18 | public List VisitsToDelete { get; set; } = new List();
19 | public DateTimeOffset? VisitsBefore { get; set; }
20 | public DateTimeOffset? VisitsAfter { get; set; }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/ExpectedException.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace LocationDeleter
4 | {
5 | public class ExpectedException : Exception
6 | {
7 | public ExpectedException(string message)
8 | : base(message)
9 | {
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/AQService.Common.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/AQService.Common.dll
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/AQSystemMLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/AQSystemMLib.dll
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/CommunicationShared.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/CommunicationShared.dll
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AquaticInformatics/examples/fa417675042ea1f1d08358f2c42244e7c4baac23/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/InternalLibraries/Notes.txt:
--------------------------------------------------------------------------------
1 | These internal libraries are provided as-is, with no external support from AquaticInformatics.
2 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/Option.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace LocationDeleter
4 | {
5 | public class Option
6 | {
7 | public string Key { get; set; }
8 | public string Description { get; set; }
9 | public Action Setter { get; set; }
10 | public Func Getter { get; set; }
11 |
12 | public string UsageText()
13 | {
14 | var defaultValue = Getter();
15 |
16 | if (!string.IsNullOrEmpty(defaultValue))
17 | defaultValue = $" [default: {defaultValue}]";
18 |
19 | return $"{Key,-20} {Description}{defaultValue}";
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 |
3 | [assembly: AssemblyTitle("LocationDeleter")]
4 | [assembly: AssemblyDescription("")]
5 | [assembly: AssemblyConfiguration("")]
6 | [assembly: AssemblyCompany("")]
7 | [assembly: AssemblyProduct("LocationDeleter")]
8 | [assembly: AssemblyCopyright("Copyright © 2018")]
9 | [assembly: AssemblyTrademark("")]
10 | [assembly: AssemblyCulture("")]
11 | [assembly: AssemblyVersion("1.0.0.0")]
12 | [assembly: AssemblyFileVersion("1.0.0.0")]
13 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/RatingModelIdentifier.cs:
--------------------------------------------------------------------------------
1 | namespace LocationDeleter
2 | {
3 | public class RatingModelIdentifier
4 | {
5 | public string InputParameter { get; set; }
6 | public string OutputParameter { get; set; }
7 | public string Label { get; set; }
8 | public string Location { get; set; }
9 | public string Identifier { get; set; }
10 |
11 | public static bool TryParse(string text, out RatingModelIdentifier ratingModelIdentifier)
12 | {
13 | ratingModelIdentifier = RatingModelIdentifierParser.ParseIdentifier(text);
14 |
15 | return ratingModelIdentifier != null;
16 | }
17 |
18 | public override string ToString()
19 | {
20 | return Identifier;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/TimeSeries/PublicApis/SdkExamples/LocationDeleter/RatingModelIdentifierParser.cs:
--------------------------------------------------------------------------------
1 | using System.Text.RegularExpressions;
2 |
3 | namespace LocationDeleter
4 | {
5 | public static class RatingModelIdentifierParser
6 | {
7 | public static string ParseLocationIdentifier(string ratingModelIdentifier)
8 | {
9 | var match = IdentifierRegex.Match(ratingModelIdentifier);
10 |
11 | if (!match.Success)
12 | throw new ExpectedException($"Can't parse '{ratingModelIdentifier}' as rating model identifier. Expecting -.