Files
VisualSapfor/src/_VisualDVM/Passes/Sapfor/VariantsMassPass.java

68 lines
2.7 KiB
Java
Raw Normal View History

2024-10-14 12:14:01 +03:00
package _VisualDVM.Passes.Sapfor;
import _VisualDVM.Global;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Passes.PassCode;
import _VisualDVM.Passes.Project.CurrentProjectPass;
2024-10-09 22:21:57 +03:00
import _VisualDVM.ProjectData.Files.DBProjectFile;
import _VisualDVM.ProjectData.SapforData.Variants.ParallelVariant;
import _VisualDVM.Repository.Component.Sapfor.Sapfor;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Visual.UI;
2023-09-17 22:13:42 +03:00
public abstract class VariantsMassPass extends CurrentProjectPass {
int count;
2024-10-14 15:19:13 +03:00
public abstract PassCode getSubPassCode();
2023-09-17 22:13:42 +03:00
@Override
protected boolean needsAnimation() {
return true;
}
@Override
public void Interrupt() throws Exception {
Global.mainModule.getSapfor().Interrupt();
2023-09-17 22:13:42 +03:00
}
@Override
protected boolean canStart(Object... args) throws Exception {
2024-10-14 15:19:13 +03:00
count = 0;
2023-09-17 22:13:42 +03:00
if (super.canStart(args)) {
count = target.parallelVariants.getCheckedCount();
2024-10-14 15:19:13 +03:00
if (count == 0) {
2023-09-17 22:13:42 +03:00
Log.Writeln_("Не выбрано ни одного параллельного варианта");
return false;
2024-10-14 15:19:13 +03:00
} else if (!Global.mainModule.getPass(PassCode.SPF_GetArrayDistribution).isDone()) {
2023-09-17 22:13:42 +03:00
Log.Writeln_("Варианты неактуальны. Сначала перестройте распределение данных.");
return false;
}
return true;
}
return false;
}
protected void body() throws Exception {
ShowProgress(count, 0, true);
int i = 0;
for (ParallelVariant p : target.parallelVariants.Data.values())
if (p.isSelected()) {
2024-10-14 15:19:13 +03:00
if (!Global.mainModule.getPass(getSubPassCode()).Do(p)) break;
2023-09-17 22:13:42 +03:00
ShowProgress(count, ++i, true);
}
}
@Override
protected void performFinish() throws Exception {
//распаковку соо делаем только 1 раз. после всей массы вариантов.
Sapfor sapfor = Global.mainModule.getSapfor();
2023-09-17 22:13:42 +03:00
target.unpackMessagesAndLog(sapfor.getOutputMessage(), sapfor.getOutput());
}
@Override
protected void showFinish() throws Exception {
UI.getVersionsWindow().getVariantsWindow().RefreshVariants();
UI.getMainWindow().getProjectWindow().RefreshProjectFiles();
UI.getMainWindow().getProjectWindow().ShowProjectSapforLog();
//-
DBProjectFile badFile = target.getFirstBadFile();
if (badFile != null) {
Global.mainModule.getPass(PassCode.OpenCurrentFile).Do(badFile);
2023-09-17 22:13:42 +03:00
UI.getMainWindow().FocusProject();
UI.getMainWindow().getProjectWindow().FocusFile();
}
//-
if (Global.mainModule.HasFile())
Global.mainModule.getFile().form.ShowMessages();
2023-09-17 22:13:42 +03:00
}
}