| /* ========================================================================== |
| * Copyright 2006 Mevenide Team |
| * |
| * 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.idea.maven.execution; |
| |
| import com.intellij.openapi.progress.ProgressIndicator; |
| import com.intellij.openapi.progress.ProgressManager; |
| import org.jetbrains.annotations.Nullable; |
| import org.jetbrains.idea.maven.project.MavenConsole; |
| import org.jetbrains.idea.maven.project.MavenGeneralSettings; |
| import org.jetbrains.idea.maven.server.MavenServerConsole; |
| |
| import java.text.MessageFormat; |
| |
| public abstract class MavenExecutor { |
| final MavenRunnerParameters myParameters; |
| private final String myCaption; |
| protected MavenConsole myConsole; |
| private String myAction; |
| |
| private boolean stopped = true; |
| private boolean cancelled = false; |
| private int exitCode = 0; |
| |
| public MavenExecutor(MavenRunnerParameters parameters, |
| String caption, |
| MavenConsole console) { |
| myParameters = parameters; |
| myCaption = caption; |
| myConsole = console; |
| } |
| |
| public String getCaption() { |
| return myCaption; |
| } |
| |
| public MavenConsole getConsole() { |
| return myConsole; |
| } |
| |
| public void setAction(@Nullable final String action) { |
| myAction = action; |
| } |
| |
| public boolean isStopped() { |
| return stopped; |
| } |
| |
| void start() { |
| stopped = false; |
| } |
| |
| void stop() { |
| stopped = true; |
| myConsole.setOutputPaused(false); |
| } |
| |
| boolean isCancelled() { |
| return cancelled; |
| } |
| |
| public void cancel() { |
| cancelled = true; |
| stop(); |
| } |
| |
| protected void setExitCode(int exitCode) { |
| this.exitCode = exitCode; |
| } |
| |
| void displayProgress() { |
| final ProgressIndicator indicator = ProgressManager.getInstance().getProgressIndicator(); |
| if (indicator != null) { |
| indicator.setText(MessageFormat.format("{0} {1}", myAction != null ? myAction : RunnerBundle.message("maven.running"), |
| myParameters.getWorkingDirPath())); |
| indicator.setText2(myParameters.getGoals().toString()); |
| } |
| } |
| |
| protected boolean printExitSummary() { |
| if (isCancelled()) { |
| myConsole.systemMessage(MavenServerConsole.LEVEL_INFO, RunnerBundle.message("maven.execution.aborted"), null); |
| return false; |
| } |
| else if (exitCode == 0) { |
| myConsole.systemMessage(MavenServerConsole.LEVEL_INFO, RunnerBundle.message("maven.execution.finished"), null); |
| return true; |
| } |
| else { |
| myConsole |
| .systemMessage(MavenServerConsole.LEVEL_ERROR, RunnerBundle.message("maven.execution.terminated.abnormally", exitCode), null); |
| return false; |
| } |
| } |
| |
| public abstract boolean execute(@Nullable ProgressIndicator indicator); |
| } |