package cz.abclinuxu.datoveschranky.common.impl;
import cz.abclinuxu.datoveschranky.common.interfaces.AttachmentStorer;
import cz.abclinuxu.datoveschranky.common.entities.Attachment;
import cz.abclinuxu.datoveschranky.common.entities.content.FileContent;
import cz.abclinuxu.datoveschranky.common.entities.MessageEnvelope;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* Ukládá přílohy do souboru.
*
* @author Vaclav Rosecky <xrosecky 'at' gmail 'dot' com>
*/
public class FileAttachmentStorer implements AttachmentStorer {
protected File directory = null;
/**
* Soubory se budou ukládat do adresáře dir.
*
* @param dir adresář, do kterého se mají ukládat soubory
*/
public FileAttachmentStorer(File dir) {
if (!dir.isDirectory()) {
throw new IllegalArgumentException(String.format("%s neni adresarem.", dir.getAbsolutePath()));
}
this.directory = dir;
}
public OutputStream store(MessageEnvelope envelope, Attachment attachment) throws IOException {
String name = name(envelope, attachment);
File output = new File(directory, name);
attachment.setContents(new FileContent(output));
return new FileOutputStream(output);
}
protected String name(MessageEnvelope envelope, Attachment attachment) {
String prefix = envelope.getMessageID();
String description = attachment.getDescription();
return prefix + "_" + description;
}
}