package com.intellij.flex.uiDesigner;
import com.intellij.diagnostic.AttachmentFactory;
import com.intellij.diagnostic.LogMessageEx;
import com.intellij.openapi.diagnostic.Attachment;
import com.intellij.openapi.diagnostic.IdeaLoggingEvent;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.ExceptionUtil;
import org.jetbrains.annotations.Nullable;
public final class LogMessageUtil {
public static final Logger LOG = Logger.getInstance(DesignerApplicationManager.class);
public static StringBuilder appendLineNumber(StringBuilder builder, ProblemDescriptor problemDescriptor) {
return builder.append(" (line: ").append(problemDescriptor.getLineNumber()).append(')');
}
public static String createMxmlTitle(@Nullable VirtualFile file) {
return file == null
? FlashUIDesignerBundle.message("problem.opening.mxml.document")
: FlashUIDesignerBundle.message("problem.opening.0", file.getName());
}
public static String createBalloonText(@Nullable VirtualFile file) {
return file == null
? FlashUIDesignerBundle.message("problem.opening.mxml.document")
: FlashUIDesignerBundle.message("problem.opening.balloon.text", file.getName());
}
@Nullable
public static Attachment createAttachment(@Nullable VirtualFile file) {
return file == null ? null : AttachmentFactory.createAttachment(file);
}
public static IdeaLoggingEvent createEvent(String userMessage, Throwable e, ProblemDescriptor problemDescriptor) {
final String message = appendLineNumber(new StringBuilder(userMessage), problemDescriptor).toString();
return LogMessageEx.createEvent(message, ExceptionUtil.getThrowableText(e), createMxmlTitle(problemDescriptor.getFile()), message,
createAttachment(problemDescriptor.getFile()));
}
public static IdeaLoggingEvent createEvent(String userMessage, String technicalMessage, @Nullable VirtualFile file) {
return LogMessageEx.createEvent(userMessage, technicalMessage, createMxmlTitle(file), createBalloonText(file), createAttachment(file));
}
public static IdeaLoggingEvent createEvent(Throwable e, @Nullable VirtualFile file) {
return createEvent(e.getMessage(), ExceptionUtil.getThrowableText(e), file);
}
public static void processInternalError(Throwable e, @Nullable VirtualFile mxmlFile) {
LOG.error(createEvent(e, mxmlFile));
}
public static void processInternalError(Throwable e) {
processInternalError(e, null);
}
}