All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.intellij.diagnostic.AttachmentFactory Maven / Gradle / Ivy

Go to download

A packaging of the IntelliJ Community Edition platform-impl library. This is release number 1 of trunk branch 142.

The newest version!
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()));
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy