java.nio.file.Files and Charset SCL API with <Exception> effect 83/883/4
authorjsimomaa <jani.simomaa@gmail.com>
Wed, 23 Aug 2017 18:00:42 +0000 (21:00 +0300)
committerJani Simomaa <jani.simomaa@semantum.fi>
Thu, 24 Aug 2017 09:39:00 +0000 (12:39 +0300)
refs #7448

Change-Id: I6c4a5307ae5a0ce6c346e1afe80f97b90464c3c6

bundles/org.simantics.scl.runtime/scl/Charset.scl [new file with mode: 0644]
bundles/org.simantics.scl.runtime/scl/Files.scl [new file with mode: 0644]

diff --git a/bundles/org.simantics.scl.runtime/scl/Charset.scl b/bundles/org.simantics.scl.runtime/scl/Charset.scl
new file mode 100644 (file)
index 0000000..fd881ac
--- /dev/null
@@ -0,0 +1,14 @@
+import "Prelude"
+
+importJava "java.nio.charset.Charset" where
+    data Charset
+
+    forName :: String -> Charset
+
+    name :: Charset -> String
+
+instance Show Charset where
+    show charset = name charset
+
+importJava "java.nio.charset.StandardCharsets" where
+    UTF_8 :: Charset
\ No newline at end of file
diff --git a/bundles/org.simantics.scl.runtime/scl/Files.scl b/bundles/org.simantics.scl.runtime/scl/Files.scl
new file mode 100644 (file)
index 0000000..ed41388
--- /dev/null
@@ -0,0 +1,139 @@
+import "Stream"
+import "Vector"
+import "Charset"
+
+importJava "java.nio.file.Path" where
+    data Path
+
+importJava "java.nio.file.Paths" where
+    
+    @JavaName "get"
+    paths :: String -> Vector String -> Path
+
+path :: String -> Path
+path path = paths path (vector [])
+
+importJava "java.nio.file.OpenOption" where
+    data OpenOption
+
+importJava "java.nio.file.StandardOpenOption" where
+    READ :: OpenOption
+    WRITE :: OpenOption
+    APPEND :: OpenOption
+    TRUNCATE_EXISTING :: OpenOption
+    CREATE :: OpenOption
+    CREATE_NEW :: OpenOption
+    DELETE_ON_CLOSE :: OpenOption
+    SPARSE :: OpenOption
+    SYNC :: OpenOption
+    DSYNC :: OpenOption
+
+importJava "java.nio.file.CopyOption" where
+    data CopyOption
+
+importJava "java.nio.file.LinkOption" where
+    data LinkOption
+
+importJava "java.nio.file.StandardCopyOption" where
+    REPLACE_EXISTING :: CopyOption
+    COPY_ATTRIBUTES :: CopyOption
+    ATOMIC_MOVE :: CopyOption
+
+importJava "java.nio.file.LinkOption" where
+    NOFOLLOW_LINKS :: CopyOption // OpenOption
+
+importJava "java.nio.file.attribute.FileAttribute" where
+    data FileAttribute
+
+importJava "java.nio.file.Files" where
+    @JavaName newInputStream
+    newInputStreamWithOpenOptions :: Path -> Vector OpenOption -> <Proc, Exception> InputStream 
+
+    @JavaName newOutputStream
+    newOutputStreamWithOpenOptions :: Path -> Vector OpenOption -> <Proc, Exception> OutputStream
+
+    @JavaName createFile
+    createFileWithFileAttributes :: Path -> Vector FileAttribute -> <Proc, Exception> Path
+
+    @JavaName createDirectory
+    createDirectoryWithFileAttributes :: Path -> Vector FileAttribute -> <Proc, Exception> Path
+
+    @JavaName createDirectories
+    createDirectoriesWithFileAttributes :: Path -> Vector FileAttribute -> <Proc, Exception> Path
+
+    @JavaName createTempFile
+    createTempFileWithFileAttributes :: Path -> String -> String -> Vector FileAttribute -> <Proc, Exception> Path
+
+    delete :: Path -> <Proc, Exception> ()
+
+    deleteIfExists :: Path -> <Proc, Exception> Boolean
+    
+    @JavaName copy
+    copyWithCopyOptions :: Path -> Path -> Vector CopyOption -> <Proc, Exception> Path
+
+    @JavaName move
+    moveWithCopyOptions :: Path -> Path -> Vector CopyOption -> <Proc, Exception> Path
+
+    size :: Path -> <Proc, Exception> Long
+
+    @JavaName exists
+    existsWithLinkOptions :: Path -> Vector LinkOption -> <Proc> Boolean
+
+    @JavaName notExists
+    notExistsWithLinkOptions :: Path -> Vector LinkOption -> <Proc> Boolean
+
+    isReadable :: Path -> <Proc> Boolean
+
+    isWritable :: Path -> <Proc> Boolean
+
+    isExecutable :: Path -> <Proc> Boolean
+
+    // Simupedia has BufferedReader.scl module which contains BufferedReader
+    // newBufferedReader :: Path -> Charset -> <Proc> BufferedReader
+    // newBufferedReader :: Path -> <Proc> BufferedReader
+
+    @JavaName copy
+    copyInputStreamWithCopyOptions :: InputStream -> Path -> Vector CopyOption -> <Proc, Exception> Long
+
+    @JavaName copy
+    copyToOutputStream :: Path -> OutputStream -> <Proc, Exception> Long 
+
+    readAllBytes :: Path -> <Proc, Exception> Vector Byte
+
+    @JavaName readAllLines
+    readAllLinesWithCharset :: Path -> Charset -> <Proc, Exception> [String]
+
+    readAllLines :: Path -> <Proc, Exception> [String]
+
+    @JavaName write
+    writeBytesWithOpenOptions :: Path -> Vector Byte -> Vector OpenOption -> <Proc, Exception> Path
+
+newInputStream :: Path -> <Proc, Exception> InputStream
+newInputStream path = newInputStreamWithOpenOptions path (vector [])
+
+newOutputStream :: Path -> <Proc, Exception> OutputStream
+newOutputStream path = newOutputStreamWithOpenOptions path (vector [])
+
+createFile :: Path -> <Proc, Exception> Path
+createFile path = createFileWithFileAttributes path (vector [])
+
+createDirectory :: Path -> <Proc, Exception> Path
+createDirectory path = createDirectoryWithFileAttributes path (vector [])
+
+createDirectories :: Path -> <Proc, Exception> Path
+createDirectories path = createDirectoriesWithFileAttributes path (vector [])
+
+createTempFile :: Path -> String -> String -> <Proc, Exception> Path
+createTempFile dir prefix suffix = createTempFileWithFileAttributes dir prefix suffix (vector [])
+
+copy :: Path -> Path -> <Proc, Exception> Path
+copy source target = copyWithCopyOptions source target (vector [])
+
+move :: Path -> Path -> <Proc, Exception> Path
+move source target = moveWithCopyOptions source target (vector [])
+
+exists :: Path -> <Proc> Boolean
+exists path = existsWithLinkOptions path (vector [])
+
+notExists :: Path -> <Proc> Boolean
+notExists path = notExistsWithLinkOptions path (vector [])