blob: 9e107edcc1405171bae8959393715bf9047f5ed3 [file] [log] [blame]
package com.intellij.diagnostic;
import com.intellij.openapi.diagnostic.Attachment;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
/**
* @author yole
*/
public class AttachmentFactory {
private static final String ERROR_MESSAGE_PATTERN = "[[[Can't get file contents: {0}]]]";
public static Attachment createAttachment(Document document) {
VirtualFile file = FileDocumentManager.getInstance().getFile(document);
return new Attachment(file != null ? file.getPath() : "unknown.txt", document.getText());
}
public static Attachment createAttachment(@NotNull VirtualFile file) {
return new Attachment(file.getPresentableUrl(), getBytes(file),
file.getFileType().isBinary() ? "File is binary" : LoadTextUtil.loadText(file).toString());
}
public static Attachment createAttachment(@NotNull File file, boolean isBinary) {
byte[] bytes = getBytes(file);
return new Attachment(file.getPath(), bytes, isBinary ? "File is binary" : new String(bytes));
}
private static byte[] getBytes(File file) {
try {
return FileUtil.loadFileBytes(file);
}
catch (IOException e) {
return Attachment.getBytes(MessageFormat.format(ERROR_MESSAGE_PATTERN, e.getMessage()));
}
}
private static byte[] getBytes(VirtualFile file) {
try {
return file.contentsToByteArray();
}
catch (IOException e) {
return Attachment.getBytes(MessageFormat.format(ERROR_MESSAGE_PATTERN, e.getMessage()));
}
}
}