From c3991a8ece57be53cf8ee1008190a2f991667cf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D1=82=D1=80=D0=B0=D1=85=D0=BE=D0=B2=20=D0=AF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B0=D0=B2=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81?= =?UTF-8?q?=D0=B0=D0=BD=D0=B4=D1=80=D0=BE=D0=B2=D0=B8=D1=87?= Date: Thu, 12 Dec 2024 11:22:09 +0500 Subject: [PATCH] homework_7 --- .../homework_7/src/main/scala/Breakfast.scala | 19 ++++++++++++++-- .../src/main/scala/ResuourceTraining.scala | 22 +++++++++++++++---- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/homeworks/homework_7/src/main/scala/Breakfast.scala b/homeworks/homework_7/src/main/scala/Breakfast.scala index 973c3d0..30bb64c 100644 --- a/homeworks/homework_7/src/main/scala/Breakfast.scala +++ b/homeworks/homework_7/src/main/scala/Breakfast.scala @@ -32,10 +32,25 @@ object Breakfast extends ZIOAppDefault { def makeBreakfast(eggsFiringTime: Duration, waterBoilingTime: Duration, saladInfoTime: SaladInfoTime, - teaBrewingTime: Duration): ZIO[Any, Throwable, Map[String, LocalDateTime]] = ??? + teaBrewingTime: Duration): ZIO[Any, Throwable, Map[String, LocalDateTime]] = for { + eggs <- (ZIO.sleep(eggsFiringTime) *> ZIO.succeed(LocalDateTime.now())).fork + water <- (ZIO.sleep(waterBoilingTime) *> ZIO.succeed(LocalDateTime.now())).fork + salad <- (ZIO.sleep(saladInfoTime.cucumberTime) *> + ZIO.sleep(saladInfoTime.tomatoTime) *> + ZIO.succeed(LocalDateTime.now())).fork + waterTime <- water.join + teaTime <- ZIO.sleep(teaBrewingTime) *> ZIO.succeed(LocalDateTime.now()) + eggsTime <- eggs.join + saladTime <- salad.join + } yield Map( + "eggs" -> eggsTime, + "water" -> waterTime, + "saladWithSourCream" -> saladTime, + "tea" -> teaTime + ) override def run: ZIO[Any with ZIOAppArgs with Scope, Any, Any] = ZIO.succeed(println("Done")) -} +} \ No newline at end of file diff --git a/homeworks/homework_7/src/main/scala/ResuourceTraining.scala b/homeworks/homework_7/src/main/scala/ResuourceTraining.scala index 625d2e3..1303261 100644 --- a/homeworks/homework_7/src/main/scala/ResuourceTraining.scala +++ b/homeworks/homework_7/src/main/scala/ResuourceTraining.scala @@ -13,9 +13,23 @@ import java.io.{BufferedReader, BufferedWriter, FileReader, FileWriter} object ResuourceTraining extends ZIOAppDefault { - def readData(filePath: String): IO[Throwable, String] = ??? - - def writeData(filePath: String, data: String): ZIO[Any, Nothing, Unit] = ??? + def readData(filePath: String): IO[Throwable, String] = { + ZIO.acquireReleaseWith(ZIO.attempt( + new BufferedReader(new FileReader(filePath)) + ))(reader => ZIO.succeed(reader.close()))( + reader => ZIO.succeed(reader.readLine())) + } + + def writeData(filePath: String, data: String): ZIO[Any, Nothing, Unit] = { + ZIO.acquireReleaseWith(ZIO.attempt(new BufferedWriter(new FileWriter(filePath))))( + writer => ZIO.attempt(writer.close()).orDie + )( + writer => ZIO.attempt { + writer.write(data) + writer.flush() + } + ).orDie + } override def run: ZIO[Any with ZIOAppArgs with Scope, Any, Any] = ZIO.succeed("Done") -} +} \ No newline at end of file