blob: 45cfd6cfb6d15d113ae29b38e93de2598606c42b [file] [log] [blame]
// Copyright 2008-2010 Victor Iacoban
//
// 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.zmlx.hg4idea.action;
import com.intellij.notification.NotificationListener;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vcs.VcsNotifier;
import com.intellij.xml.util.XmlStringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.zmlx.hg4idea.execution.HgCommandResult;
import java.util.List;
public final class HgCommandResultNotifier {
private final Project myProject;
private static final Logger LOG = Logger.getInstance(HgCommandResultNotifier.class);
public HgCommandResultNotifier(Project project) {
myProject = project;
}
public void notifyError(@Nullable HgCommandResult result, @NotNull String failureTitle, @NotNull String failureDescription) {
notifyError(result, failureTitle, failureDescription, null);
}
public void notifyError(@Nullable HgCommandResult result,
@NotNull String failureTitle,
@NotNull String failureDescription,
@Nullable NotificationListener listener) {
List<String> err;
String errorMessage;
if (StringUtil.isEmptyOrSpaces(failureDescription)) {
failureDescription = failureTitle;
}
if (result == null) {
errorMessage = failureDescription;
} else {
err = result.getErrorLines();
if (err.isEmpty()) {
LOG.assertTrue(!StringUtil.isEmptyOrSpaces(failureDescription),
"Failure title, failure description and errors log can not be empty at the same time");
errorMessage = failureDescription;
} else if (failureDescription.isEmpty()) {
errorMessage = XmlStringUtil.wrapInHtml(StringUtil.join(err, "<br>"));
} else {
errorMessage = XmlStringUtil.wrapInHtml(failureDescription + "<br>" + StringUtil.join(err, "<br>"));
}
}
VcsNotifier.getInstance(myProject).notifyError(failureTitle, errorMessage, listener);
}
}