package ru.codeinside.gses.webui.form;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.util.IoUtil;
import ru.codeinside.gses.activiti.FileValue;
import ru.codeinside.gses.activiti.forms.types.AttachmentType;
import ru.codeinside.gses.activiti.ftarchive.AttachmentFileValue;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
public class StartEventAttachmentConverter implements AttachmentConverter {
private DataAccumulator dataAccumulator;
StartEventAttachmentConverter(DataAccumulator dataAccumulator) {
this.dataAccumulator = dataAccumulator;
}
@Override
public Object convertAttachment(CommandContext commandContext, Object modelValue) {
if (modelValue instanceof AttachmentFileValue) {
AttachmentFileValue attachmentFileValue = (AttachmentFileValue) modelValue;
modelValue = attachmentFileValue.getAttachment().getId() + AttachmentType.SUFFIX;
} else if (modelValue instanceof FileValue) {
FileValue fileValue = (FileValue) modelValue;
TmpAttachment attachment = createTmpAttachment(fileValue.getMimeType(), fileValue.getFileName(), new ByteArrayInputStream(fileValue.getContent()));
dataAccumulator.setAttachment(attachment);
modelValue = attachment.getId() + AttachmentType.SUFFIX;
}
return modelValue;
}
public static TmpAttachment createTmpAttachment(String attachmentType, String attachmentName, InputStream content) {
TmpAttachment attachment = new TmpAttachment();
attachment.setType(attachmentType);
attachment.setName(attachmentName);
byte[] contentBytes = IoUtil.readInputStream(content, attachmentName);
attachment.setContent(contentBytes);
return attachment;
}
}