From 7d2fd46a7e4532e73d86c42beab62136de1e4a3a Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sun, 16 Jun 2019 15:06:56 +0200 Subject: [PATCH 1/4] Added a method to check if a file exists --- .../connector/actor/FileSystemActor.scala | 14 ++++++++++++++ .../requirement/service/file/FileConnector.scala | 2 ++ .../service/file/impl/FileOutputImpl.scala | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala b/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala index 36d78ad2..c99cbdc6 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala @@ -64,6 +64,13 @@ class FileSystemActor extends Actor { } catch { case _: Exception => sender ! false } + case Exists(pathInResources) => + try { + Source.fromFile(fixPath(pathInResources)).close() + sender ! true + } catch { + case _: Exception => sender ! false + } } private def fixPath(path: String): File = { @@ -124,4 +131,11 @@ object FileSystemActor { */ case class CreateDirectory(folderName: String) extends ActorMessage + /** + * Send a Exists-Object to the FileSystemActor to check if a file exists + * + * @param pathInResources the relative Path in the resource folder + */ + case class Exists(pathInResources: String) extends ActorMessage + } diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/FileConnector.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/FileConnector.scala index 0158ecdb..861dac8c 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/FileConnector.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/FileConnector.scala @@ -34,6 +34,8 @@ class FileConnector(override val sourceIdentifier: String) extends Connector(sou def createDirectory(folderName: String): Boolean = fileActor.??[Boolean](5){CreateDirectory(folderName)}.get + def exists(pathInResources: String): Boolean = fileActor.??[Boolean](5){Exists(pathInResources)}.get + override def start(): Boolean = { logger info s"Started file connector! Source identifier is: '$sourceIdentifier'." true diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/impl/FileOutputImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/impl/FileOutputImpl.scala index 7ff78099..1bcc913e 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/impl/FileOutputImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/impl/FileOutputImpl.scala @@ -35,6 +35,10 @@ class FileOutputImpl extends OutputImpl[FileConnector] with FileOutput with With sourceConnector.get.createDirectory(folderName) } + override def exists(pathInResources: String): Boolean = { + sourceConnector.get.exists(pathInResources) + } + override def start() = true } From 79e6cf96cc6146ef2a9403fc8617c71031f6daaa Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sun, 16 Jun 2019 22:47:47 +0200 Subject: [PATCH 2/4] Changed exists method to include testing if a folder exists --- .../chatoverflow/connector/actor/FileSystemActor.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala b/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala index c99cbdc6..d9060496 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala @@ -66,8 +66,7 @@ class FileSystemActor extends Actor { } case Exists(pathInResources) => try { - Source.fromFile(fixPath(pathInResources)).close() - sender ! true + sender ! fixPath(pathInResources).exists } catch { case _: Exception => sender ! false } From 3636e47812091251815a28b1390d71d9c2a5cd80 Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sun, 16 Jun 2019 22:56:48 +0200 Subject: [PATCH 3/4] Added a method to delete files and folders --- .../connector/actor/FileSystemActor.scala | 15 ++++++++++++++- .../requirement/service/file/FileConnector.scala | 2 ++ .../service/file/impl/FileOutputImpl.scala | 4 ++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala b/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala index d9060496..c485ca22 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala @@ -70,6 +70,12 @@ class FileSystemActor extends Actor { } catch { case _: Exception => sender ! false } + case Delete(pathInResources) => + try{ + sender ! fixPath(pathInResources).delete + } catch { + case _: Exception => sender ! false + } } private def fixPath(path: String): File = { @@ -131,10 +137,17 @@ object FileSystemActor { case class CreateDirectory(folderName: String) extends ActorMessage /** - * Send a Exists-Object to the FileSystemActor to check if a file exists + * Send a Exists-Object to the FileSystemActor to check if a file or folder exists * * @param pathInResources the relative Path in the resource folder */ case class Exists(pathInResources: String) extends ActorMessage + /** + * Send a Delete-Object to the FileSystemActor to remove a file or folder + * + * @param pathInResources the relative Path in the resource folder + */ + case class Delete(pathInResources: String) extends ActorMessage + } diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/FileConnector.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/FileConnector.scala index 861dac8c..a01e9506 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/FileConnector.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/FileConnector.scala @@ -36,6 +36,8 @@ class FileConnector(override val sourceIdentifier: String) extends Connector(sou def exists(pathInResources: String): Boolean = fileActor.??[Boolean](5){Exists(pathInResources)}.get + def delete(pathInResources: String): Boolean = fileActor.??[Boolean](5){Delete(pathInResources)}.get + override def start(): Boolean = { logger info s"Started file connector! Source identifier is: '$sourceIdentifier'." true diff --git a/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/impl/FileOutputImpl.scala b/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/impl/FileOutputImpl.scala index 1bcc913e..3126ed1e 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/impl/FileOutputImpl.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/requirement/service/file/impl/FileOutputImpl.scala @@ -39,6 +39,10 @@ class FileOutputImpl extends OutputImpl[FileConnector] with FileOutput with With sourceConnector.get.exists(pathInResources) } + override def delete(pathInResources: String): Boolean = { + sourceConnector.get.delete(pathInResources) + } + override def start() = true } From d699a4cbbeb28a06c036f0986af8841decc1aa6d Mon Sep 17 00:00:00 2001 From: derNiklaas Date: Sun, 16 Jun 2019 23:02:53 +0200 Subject: [PATCH 4/4] Fixed a bug where you couldn't create a folder inside of a folder that did not exists --- .../chatoverflow/connector/actor/FileSystemActor.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala b/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala index c485ca22..514b09bb 100644 --- a/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala +++ b/src/main/scala/org/codeoverflow/chatoverflow/connector/actor/FileSystemActor.scala @@ -60,7 +60,7 @@ class FileSystemActor extends Actor { } case CreateDirectory(folderName) => try { - sender ! fixPath(folderName).mkdir() + sender ! fixPath(folderName).mkdirs() } catch { case _: Exception => sender ! false }