no message
This commit is contained in:
117
src/_VisualDVM/Passes/All/Run.java
Normal file
117
src/_VisualDVM/Passes/All/Run.java
Normal file
@@ -0,0 +1,117 @@
|
||||
package _VisualDVM.Passes.All;
|
||||
import Common.Utils.Utils_;
|
||||
import _VisualDVM.Current;
|
||||
import _VisualDVM.Global;
|
||||
import _VisualDVM.Visual.UI;
|
||||
import _VisualDVM.Utils;
|
||||
import _VisualDVM.GlobalData.Machine.MachineType;
|
||||
import _VisualDVM.GlobalData.Tasks.RunTask.RunTask;
|
||||
import _VisualDVM.GlobalData.Tasks.TaskState;
|
||||
import _VisualDVM.ProjectData.Project.db_project_info;
|
||||
import _VisualDVM.Passes.PassCode;
|
||||
import Common.Passes.PassException;
|
||||
import Common.Passes.Pass;
|
||||
|
||||
import java.util.Vector;
|
||||
public class Run extends Pass<db_project_info> {
|
||||
Pass subpass = null;
|
||||
Vector<RunTask> runTasks;
|
||||
@Override
|
||||
public String getIconPath() {
|
||||
return "/icons/GreenStart.png";
|
||||
}
|
||||
@Override
|
||||
public String getButtonText() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
protected void performPreparation() throws Exception {
|
||||
runTasks = Global.mainModule.getRunConfiguration().generateRunTasks(target, Global.mainModule.getCompilationTask());
|
||||
for (RunTask runTask : runTasks) {
|
||||
Global.mainModule.getDb().Insert(runTask);
|
||||
Utils.forceDeleteWithCheck(runTask.getLocalWorkspace());
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void showPreparation() throws Exception {
|
||||
Global.mainModule.getDb().runTasks.ShowUI();
|
||||
}
|
||||
@Override
|
||||
protected boolean canStart(Object... args) {
|
||||
subpass = null;
|
||||
if (Global.mainModule.Check(Log, Current.Project, Current.Machine, Current.User, Current.Makefile, Current.RunConfiguration,
|
||||
Current.CompilationTask)) {
|
||||
//-
|
||||
target = Global.mainModule.getProject();
|
||||
//-
|
||||
if (Global.mainModule.getMachine().type.equals(MachineType.MVS_cluster) &&
|
||||
Global.mainModule.getRunConfiguration().LauncherCall.isEmpty()
|
||||
) {
|
||||
Log.Writeln_("Запуск напрямую на кластере запрещён.Используйте для запуска DVM систему или MPI");
|
||||
}
|
||||
if (!Global.mainModule.getCompilationTask().state.equals(TaskState.Done))
|
||||
Log.Writeln_("Текущая задача на компиляцию еще не выполнялась, или была завершена с ошибками");
|
||||
return Log.isEmpty();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
protected void body() throws Exception {
|
||||
switch (Global.mainModule.getMachine().type) {
|
||||
case Local:
|
||||
if (Utils_.isWindows()) {
|
||||
subpass = Global.mainModule.getPass(PassCode.WindowsLocalRun);
|
||||
} else
|
||||
subpass = Global.mainModule.getPass(PassCode.LinuxLocalRun);
|
||||
break;
|
||||
case Undefined:
|
||||
case MVS_cluster:
|
||||
throw new PassException("Запуск не реализован для типа машины " + Utils_.DQuotes(Global.mainModule.getMachine().type));
|
||||
/*
|
||||
case MVS_cluster:
|
||||
subpass = passes.get(PassCode_2021.MVSRun);
|
||||
break;
|
||||
*/
|
||||
default:
|
||||
subpass = Global.mainModule.getPass(PassCode.ServerRun);
|
||||
break;
|
||||
}
|
||||
int i = 1;
|
||||
RunTask current_task = null;
|
||||
for (RunTask task : runTasks) {
|
||||
current_task = task;
|
||||
boolean task_completed = false;
|
||||
task.setProgress(i, runTasks.size());
|
||||
//-
|
||||
Global.mainModule.getDb().runTasks.RefreshUI();
|
||||
Global.mainModule.getDb().runTasks.SetCurrentObjectUI(task.id);
|
||||
//-
|
||||
subpass.Do(task, target);
|
||||
//-
|
||||
switch (task.state) {
|
||||
case Done:
|
||||
case DoneWithErrors:
|
||||
task_completed = true;
|
||||
if (task.hasDvmSts) {
|
||||
Utils.CheckAndCleanDirectory(Global.mainModule.getProject().getStatisticDirectory());
|
||||
Global.mainModule.getPass(PassCode.SPF_StatisticAnalyzer).Do(task);
|
||||
}
|
||||
break;
|
||||
case Finished:
|
||||
case Crushed:
|
||||
case AbortedByTimeout:
|
||||
task_completed = true;
|
||||
break;
|
||||
}
|
||||
//-
|
||||
Global.mainModule.getDb().runTasks.RefreshUI();
|
||||
UI.getDebugWindow().ShowCurrentRunTask();
|
||||
//-
|
||||
if (!task_completed) break;
|
||||
++i;
|
||||
}
|
||||
if (current_task!=null){
|
||||
UI.getDebugWindow().ShowLastRunTask();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user