| /* |
| * Copyright 2000-2014 JetBrains s.r.o. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.jetbrains.plugins.gradle.tooling; |
| |
| import org.gradle.api.Project; |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.Nullable; |
| |
| import java.io.File; |
| |
| /** |
| * @author Vladislav.Soroka |
| * @since 5/13/2014 |
| */ |
| public class ErrorMessageBuilder { |
| public static final String GROUP_TAG = "<ij_msg_gr>"; |
| public static final String NAV_TAG = "<ij_nav>"; |
| public static final String EOL_TAG = "<eol>"; |
| |
| @NotNull private final Project myProject; |
| @Nullable private final Exception myException; |
| @NotNull private final String myGroup; |
| @Nullable private String myDescription; |
| |
| private ErrorMessageBuilder(@NotNull Project project, @Nullable Exception exception, @NotNull String group) { |
| myProject = project; |
| myException = exception; |
| myGroup = group; |
| } |
| |
| public static ErrorMessageBuilder create(@NotNull Project project, @NotNull String group) { |
| return new ErrorMessageBuilder(project, null, group); |
| } |
| |
| public static ErrorMessageBuilder create(@NotNull Project project, @Nullable Exception exception, @NotNull String group) { |
| return new ErrorMessageBuilder(project, exception, group); |
| } |
| |
| public ErrorMessageBuilder withDescription(@NotNull String description) { |
| myDescription = description; |
| return this; |
| } |
| |
| public String build() { |
| String group = myGroup.replaceAll("\r\n|\n\r|\n|\r", " "); |
| final File projectBuildFile = myProject.getBuildFile(); |
| return ( |
| GROUP_TAG + group + GROUP_TAG + |
| (projectBuildFile != null ? (NAV_TAG + projectBuildFile.getPath() + NAV_TAG) : "") + |
| ( |
| "<i>" + |
| "<b>" + myProject + ((myDescription != null) ? ": " + myDescription : "") + "</b>" + |
| (myException != null ? "\nDetails: " + getErrorMessage(myException) : "") + |
| "</i>" |
| ).replaceAll("\r\n|\n\r|\n|\r", EOL_TAG) |
| ); |
| } |
| |
| |
| private static String getErrorMessage(@NotNull Throwable e) { |
| StringBuilder buf = new StringBuilder(); |
| Throwable cause = e; |
| while (cause != null) { |
| if (buf.length() != 0) { |
| buf.append("\nCaused by: "); |
| } |
| buf.append(cause.getClass().getName()).append(": ").append(cause.getMessage()); |
| cause = cause.getCause(); |
| } |
| return buf.toString(); |
| } |
| } |