From e481e6c99b006bce17149da8c4a1b3e5db650e87 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Wed, 16 Apr 2025 12:35:09 +0200 Subject: [PATCH 1/8] feat: create utility init a new File #90 --- CHANGELOG.md | 5 +++++ .../main/java/org/fugerit/java/core/io/FileIO.java | 12 ++++++++++++ .../test/org/fugerit/java/core/io/TestFileIO.java | 12 ++++++++++++ 3 files changed, 29 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78f1764e..54791adc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- FileIO.newFile() create utility init a new File + + ## [8.6.7] - 2025-05-09 ### Added diff --git a/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java b/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java index 5785cea8..aaf3f0a6 100644 --- a/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java +++ b/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java @@ -28,6 +28,18 @@ @Slf4j public class FileIO { + public static File newFile( String baseDir, String fileName ) { + return baseDir == null ? new File( fileName ) :new File( baseDir, fileName ); + } + + public static File newFile( String baseDir, String fileName, boolean mustAlreadyExists ) throws IOException { + File file = newFile( baseDir, fileName ); + if ( mustAlreadyExists && !file.exists() ) { + throw new IOException( String.format( "File [%s] does not exist", file.getCanonicalPath() ) ); + } + return file; + } + public static boolean isInTmpFolder( File tempFile ) throws IOException { return isInTmpFolder( tempFile.getCanonicalPath() ); } diff --git a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java index 4a6cc73f..251b8e46 100644 --- a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java +++ b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java @@ -20,4 +20,16 @@ public void testIsInTmpFolderKo() throws IOException { Assert.assertFalse(FileIO.isInTmpFolder( new File( "/" ) )); } + @Test + public void testNewFile() throws IOException { + String baseDir = "target/"; + String fileName = "not-exists.txt"; + String fileNameExists = "classes"; + File file = FileIO.newFile( baseDir, fileName ); + Assert.assertTrue( file.getPath().endsWith( fileName ) ); + Assert.assertThrows( IOException.class, () -> FileIO.newFile( baseDir, fileName, Boolean.TRUE ) ); + Assert.assertTrue( FileIO.newFile( baseDir, fileName, Boolean.FALSE ).getPath().endsWith( fileName ) ); + Assert.assertTrue( FileIO.newFile( baseDir, fileNameExists, Boolean.TRUE ).getPath().endsWith( fileNameExists ) ); + } + } From b81f30e7f706e8857e9523ebd9df04eb0349bcd5 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Wed, 16 Apr 2025 12:48:16 +0200 Subject: [PATCH 2/8] feat: create utility init a new File #90 (coverage) --- .../src/test/java/test/org/fugerit/java/core/io/TestFileIO.java | 1 + 1 file changed, 1 insertion(+) diff --git a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java index 251b8e46..ae868223 100644 --- a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java +++ b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java @@ -27,6 +27,7 @@ public void testNewFile() throws IOException { String fileNameExists = "classes"; File file = FileIO.newFile( baseDir, fileName ); Assert.assertTrue( file.getPath().endsWith( fileName ) ); + Assert.assertTrue( FileIO.newFile( null, fileName ).getPath().endsWith( fileName ) ); Assert.assertThrows( IOException.class, () -> FileIO.newFile( baseDir, fileName, Boolean.TRUE ) ); Assert.assertTrue( FileIO.newFile( baseDir, fileName, Boolean.FALSE ).getPath().endsWith( fileName ) ); Assert.assertTrue( FileIO.newFile( baseDir, fileNameExists, Boolean.TRUE ).getPath().endsWith( fileNameExists ) ); From 3a75c90005b88bb7f15a17b56ef8e40cef96e83b Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Wed, 16 Apr 2025 12:55:10 +0200 Subject: [PATCH 3/8] feat: create utility init a new File #90 (coverage) --- .../java/org/fugerit/java/core/io/FileIO.java | 9 ++++----- .../org/fugerit/java/core/io/TestFileIO.java | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java b/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java index aaf3f0a6..abd62bdb 100644 --- a/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java +++ b/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java @@ -50,18 +50,17 @@ public static boolean isInTmpFolder( String tempFilePath ) throws IOException { } public static boolean createFullFile( File file ) throws IOException { - boolean created = true; + boolean created = Boolean.TRUE; if ( file.exists() ) { - created = false; + return Boolean.FALSE; } else { if ( file.isDirectory() ) { - created = file.mkdirs(); + return file.mkdirs(); } else { file.getParentFile().mkdirs(); - created = file.createNewFile(); + return file.createNewFile(); } } - return created; } /* diff --git a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java index ae868223..0d18da32 100644 --- a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java +++ b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java @@ -33,4 +33,24 @@ public void testNewFile() throws IOException { Assert.assertTrue( FileIO.newFile( baseDir, fileNameExists, Boolean.TRUE ).getPath().endsWith( fileNameExists ) ); } + + @Test + public void testCreateFullFile() throws IOException { + String baseDir0 = "target"; + String baseDir1 = "target/path/"; + String fileName = "not-exists.txt"; + String fileNameExists = "classes"; + File file0 = FileIO.newFile( baseDir0, fileName ); + File file1 = FileIO.newFile( baseDir1, fileName ); + File file2 = FileIO.newFile( baseDir0, fileNameExists ); + file0.delete(); + file1.delete(); + file1.getParentFile().delete(); + file2.delete(); + Assert.assertTrue( FileIO.createFullFile( file0 ) ); + Assert.assertTrue( FileIO.createFullFile( file1 ) ); + Assert.assertFalse( FileIO.createFullFile( file0 ) ); + Assert.assertFalse( FileIO.createFullFile( file2 ) ); + } + } From 477691b46cae5dd9f0cc4fa2dcef992f1cc492cb Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Wed, 16 Apr 2025 13:01:37 +0200 Subject: [PATCH 4/8] feat: create utility init a new File #90 (coverage) --- .../src/test/java/test/org/fugerit/java/core/io/TestFileIO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java index 0d18da32..19d8f32d 100644 --- a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java +++ b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java @@ -38,7 +38,7 @@ public void testNewFile() throws IOException { public void testCreateFullFile() throws IOException { String baseDir0 = "target"; String baseDir1 = "target/path/"; - String fileName = "not-exists.txt"; + String fileName = "not-exists-alt.txt"; String fileNameExists = "classes"; File file0 = FileIO.newFile( baseDir0, fileName ); File file1 = FileIO.newFile( baseDir1, fileName ); From eab480032b51a832f046b8d3586e759acd714196 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Wed, 16 Apr 2025 13:07:20 +0200 Subject: [PATCH 5/8] feat: create utility init a new File #90 (sonar issue) --- fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java | 1 - .../src/test/java/test/org/fugerit/java/core/io/TestFileIO.java | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java b/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java index abd62bdb..a28414a2 100644 --- a/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java +++ b/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java @@ -50,7 +50,6 @@ public static boolean isInTmpFolder( String tempFilePath ) throws IOException { } public static boolean createFullFile( File file ) throws IOException { - boolean created = Boolean.TRUE; if ( file.exists() ) { return Boolean.FALSE; } else { diff --git a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java index 19d8f32d..477e49f7 100644 --- a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java +++ b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java @@ -47,6 +47,7 @@ public void testCreateFullFile() throws IOException { file1.delete(); file1.getParentFile().delete(); file2.delete(); + Assert.assertTrue( FileIO.createFullFile( new File( baseDir1 ) ) ); Assert.assertTrue( FileIO.createFullFile( file0 ) ); Assert.assertTrue( FileIO.createFullFile( file1 ) ); Assert.assertFalse( FileIO.createFullFile( file0 ) ); From 59423cb4e75dc4faf308fdc06eb216acdf2d5051 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Wed, 16 Apr 2025 13:43:28 +0200 Subject: [PATCH 6/8] feat: create utility init a new File #90 (javadoc) --- .../java/org/fugerit/java/core/io/FileIO.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java b/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java index a28414a2..8a769c98 100644 --- a/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java +++ b/fj-core/src/main/java/org/fugerit/java/core/io/FileIO.java @@ -28,10 +28,32 @@ @Slf4j public class FileIO { + /** + * Creates a new File from a base dir and file name. + * + * If the baseDir is null, only file name is used. + * + * @param baseDir the parent folder + * @param fileName the file name + * @return the File + */ public static File newFile( String baseDir, String fileName ) { return baseDir == null ? new File( fileName ) :new File( baseDir, fileName ); } + /** + * Creates a new File from a base dir and file name. + * + * If the baseDir is null, only file name is used. + * + * Optionally mustAlreadyExists flag can be set. + * + * @param baseDir the parent folder + * @param fileName the file name + * @param mustAlreadyExists true if final file existence should be checked (if the path does not exist a IOException is thrown) + * @return the File + * @throws IOException in case of issues + */ public static File newFile( String baseDir, String fileName, boolean mustAlreadyExists ) throws IOException { File file = newFile( baseDir, fileName ); if ( mustAlreadyExists && !file.exists() ) { From 849ec6715d4f091d7cbf5844f37776d17cfd4570 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Wed, 16 Apr 2025 13:58:17 +0200 Subject: [PATCH 7/8] feat: create utility init a new File #90 (fix test) --- .../test/java/test/org/fugerit/java/core/io/TestFileIO.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java index 477e49f7..e0eb8b86 100644 --- a/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java +++ b/fj-core/src/test/java/test/org/fugerit/java/core/io/TestFileIO.java @@ -36,7 +36,7 @@ public void testNewFile() throws IOException { @Test public void testCreateFullFile() throws IOException { - String baseDir0 = "target"; + String baseDir0 = "target/"; String baseDir1 = "target/path/"; String fileName = "not-exists-alt.txt"; String fileNameExists = "classes"; @@ -47,11 +47,11 @@ public void testCreateFullFile() throws IOException { file1.delete(); file1.getParentFile().delete(); file2.delete(); - Assert.assertTrue( FileIO.createFullFile( new File( baseDir1 ) ) ); Assert.assertTrue( FileIO.createFullFile( file0 ) ); Assert.assertTrue( FileIO.createFullFile( file1 ) ); Assert.assertFalse( FileIO.createFullFile( file0 ) ); Assert.assertFalse( FileIO.createFullFile( file2 ) ); + Assert.assertFalse( FileIO.createFullFile( new File( baseDir1 ) ) ); } } From a4bbc2d0b1b86393d8cb151db9df5c3cb53b8936 Mon Sep 17 00:00:00 2001 From: "Matteo Franci a.k.a. Fugerit" Date: Wed, 16 Apr 2025 14:05:06 +0200 Subject: [PATCH 8/8] feat: create utility init a new File #90 (codacy issue) --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54791adc..e9965e84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - FileIO.newFile() create utility init a new File - ## [8.6.7] - 2025-05-09 ### Added