package de.metanome.backend.algorithm_loading;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
/**
* Uploads file to directory passed as argument
*/
public class FileUpload {
/**
* Function to upload file to directory passed as argument
*
* @param uploadedInputStream InputStream of file send
* @param fileDetail additional MetaData about uploaded file
* @param targetDirectory directory were file should be stored
* @return if file already existed
**/
public boolean writeFileToDisk(InputStream uploadedInputStream,
FormDataContentDisposition fileDetail,
String targetDirectory) throws IOException {
int read = 0;
byte[] bytes = new byte[1024];
String filepath = targetDirectory + fileDetail.getFileName();
/*If file already exists delete for cases like algorithm gets
reuploaded because of changes to the algorithm or inputfile
*/
boolean file_exist = Files.deleteIfExists(Paths.get(filepath));
File f = new File(filepath);
OutputStream out = new FileOutputStream(new File(filepath));
while ((read = uploadedInputStream.read(bytes)) != -1)
{
out.write(bytes, 0, read);
}
out.flush();
out.close();
/* Returns information if file already existed to prevent adding algorithm / inputfile again to databse which is not possible due to key constraints */
return file_exist;
}
}