From baadd698ce99de05b9234db06d2071168d2b272e Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 1 Mar 2023 15:51:43 +0100 Subject: [PATCH] more expressive primary service init failure --- CHANGELOG.md | 1 + input/samples/vn_simona/vn_simona.conf | 1 + .../primary/PrimaryServiceWorker.scala | 35 ++++++++++++++----- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 15f99093eb..6ae481fa46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added Dependabot updates to sphinx/readthedocs dependencies [#448](https://github.com/ie3-institute/simona/issues/448) - Check for grid validity with PSDM `ValidationUtils` [#460](https://github.com/ie3-institute/simona/issues/460) - Enhancing dev's guide [#363](https://github.com/ie3-institute/simona/issues/363) +- More expressive failure message upon setting up Primary Service with wrong time pattern [#475](https://github.com/ie3-institute/simona/issues/475) ### Changed - Re-organizing test resources into their respective packages [#105](https://github.com/ie3-institute/simona/issues/105) diff --git a/input/samples/vn_simona/vn_simona.conf b/input/samples/vn_simona/vn_simona.conf index 666aeaf75c..1dbf4491a4 100644 --- a/input/samples/vn_simona/vn_simona.conf +++ b/input/samples/vn_simona/vn_simona.conf @@ -28,6 +28,7 @@ simona.input.primary.csvParams = { directoryPath: "input/samples/vn_simona/fullGrid" csvSep: "," isHierarchic: false + timePattern: "yyyy-MM-dd'T'HH:mm:ss[.S[S][S]]'Z'" } simona.input.grid.datasource.id = "csv" simona.input.grid.datasource.csvParams = { diff --git a/src/main/scala/edu/ie3/simona/service/primary/PrimaryServiceWorker.scala b/src/main/scala/edu/ie3/simona/service/primary/PrimaryServiceWorker.scala index 7d25630cac..b818114cf1 100644 --- a/src/main/scala/edu/ie3/simona/service/primary/PrimaryServiceWorker.scala +++ b/src/main/scala/edu/ie3/simona/service/primary/PrimaryServiceWorker.scala @@ -35,7 +35,9 @@ import edu.ie3.simona.service.{ServiceStateData, SimonaService} import edu.ie3.simona.util.TickUtil.{RichZonedDateTime, TickLong} import edu.ie3.util.scala.collection.immutable.SortedDistinctSeq +import java.io.IOException import java.time.ZonedDateTime +import java.time.format.DateTimeParseException import java.util.UUID import scala.jdk.CollectionConverters._ import scala.jdk.OptionConverters.RichOptional @@ -77,15 +79,30 @@ final case class PrimaryServiceWorker[V <: Value]( Try { /* Set up source and acquire information */ val factory = new TimeBasedSimpleValueFactory(valueClass, timePattern) - val source = new CsvTimeSeriesSource( - csvSep, - directoryPath, - fileNamingStrategy, - timeSeriesUuid, - filePath, - valueClass, - factory - ) + val source = Try( + new CsvTimeSeriesSource( + csvSep, + directoryPath, + fileNamingStrategy, + timeSeriesUuid, + filePath, + valueClass, + factory + ) + ) match { + case Failure(exc: DateTimeParseException) => + throw new IOException( + s"Could not initiate the time series source. Parsing ${exc.getParsedString} failed with timepattern: $timePattern. The time pattern can be configured in the configuration.", + exc + ) + case Failure(exc) => + throw new IOException( + s"Could not initiate the time series source.", + exc + ) + case Success(source) => + source + } (source, simulationStart) }