diff --git a/kop-common-lib/pom.xml b/kop-common-lib/pom.xml index 16cda10b1fb445050a3b90798b8293c6e7cb959a..408d548c463afcd517e80bde937ee7dc4ea8f5a9 100644 --- a/kop-common-lib/pom.xml +++ b/kop-common-lib/pom.xml @@ -40,6 +40,7 @@ <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <mockito.version>4.8.1</mockito.version> + </properties> <dependencyManagement> diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/TempFileUtils.java b/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/TempFileUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..d68ee7f708b29fe81cf1d455a8df01ec3562fe61 --- /dev/null +++ b/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/TempFileUtils.java @@ -0,0 +1,74 @@ +package de.itvsh.kop.common.binaryfile; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; + +import org.apache.commons.io.FileUtils; + +import de.itvsh.kop.common.errorhandling.TechnicalException; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class TempFileUtils { + static final String TMP_FILE_PREFIX = "filecached-inputstream"; + static final String TMP_FILE_SUFFIX = ".ozg-cloud.tmp"; + + private static final String ERROR_MSG = "Error writing file to temp file."; + + public static File writeTmpFile(InputStream contentStream) { + try { + var tmpFile = createTmpFile(); + + Files.copy(contentStream, tmpFile, StandardCopyOption.REPLACE_EXISTING); + contentStream.close(); + return tmpFile.toFile(); + } catch (IOException e) { + throw new TechnicalException(ERROR_MSG, e); + } + } + + public static File writeTmpFile(String stringData) { + try { + Path tmpFile = createTmpFile(); + + try (var writer = new FileWriter(tmpFile.toFile())) { + writer.write(stringData); + writer.flush(); + } + + return tmpFile.toFile(); + } catch (IOException e) { + throw new TechnicalException(ERROR_MSG, e); + } + } + + public static File writeTmpFile(byte[] data) { + try { + Path tmpFile = createTmpFile(); + + FileUtils.writeByteArrayToFile(tmpFile.toFile(), data); + + return tmpFile.toFile(); + } catch (IOException e) { + throw new TechnicalException(ERROR_MSG, e); + } + + } + + public static Path createTmpFile() { + try { + var tmpFile = Files.createTempFile(TMP_FILE_PREFIX, TMP_FILE_SUFFIX); + tmpFile.toFile().deleteOnExit(); + return tmpFile; + } catch (IOException e) { + throw new TechnicalException("Error creating temporary file.", e); + } + + } +}