diff --git a/CHANGELOG.md b/CHANGELOG.md index e18c6edca8..2ce6c91e71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Add safety factor sRated calculation [#629](https://github.com/ie3-institute/simona/issues/629) - Re-implemented ResultEventListener in akka typed [#343](https://github.com/ie3-institute/simona/issues/343) +- More expressive failure message upon setting up Primary Service with wrong time pattern [#475](https://github.com/ie3-institute/simona/issues/475) ### Changed - Adapted to changed data source in PSDM [#435](https://github.com/ie3-institute/simona/issues/435) diff --git a/input/samples/vn_simona/vn_simona.conf b/input/samples/vn_simona/vn_simona.conf index dfb9dfa903..a92ee4c117 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 a4b7ee6078..233c85febe 100644 --- a/src/main/scala/edu/ie3/simona/service/primary/PrimaryServiceWorker.scala +++ b/src/main/scala/edu/ie3/simona/service/primary/PrimaryServiceWorker.scala @@ -35,8 +35,10 @@ 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.nio.file.Path import java.time.ZonedDateTime +import java.time.format.DateTimeParseException import java.util.UUID import scala.jdk.CollectionConverters._ import scala.jdk.OptionConverters.RichOptional @@ -78,15 +80,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) }