2024-10-14 12:14:01 +03:00
|
|
|
|
package _VisualDVM.Passes.Sapfor;
|
2024-10-13 22:08:13 +03:00
|
|
|
|
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;
|
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 {
|
2024-10-13 22:08:13 +03:00
|
|
|
|
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)) {
|
2024-10-16 18:58:23 +03:00
|
|
|
|
count = target.parallelVariants.getSelectedCount();
|
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 раз. после всей массы вариантов.
|
2024-10-13 22:08:13 +03:00
|
|
|
|
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 {
|
2024-10-15 02:32:52 +03:00
|
|
|
|
Global.mainModule.getUI().getVersionsWindow().getVariantsWindow().RefreshVariants();
|
|
|
|
|
|
Global.mainModule.getUI().getMainWindow().getProjectWindow().RefreshProjectFiles();
|
|
|
|
|
|
Global.mainModule.getUI().getMainWindow().getProjectWindow().ShowProjectSapforLog();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//-
|
|
|
|
|
|
DBProjectFile badFile = target.getFirstBadFile();
|
|
|
|
|
|
if (badFile != null) {
|
2024-10-13 23:55:03 +03:00
|
|
|
|
Global.mainModule.getPass(PassCode.OpenCurrentFile).Do(badFile);
|
2024-10-15 02:32:52 +03:00
|
|
|
|
Global.mainModule.getUI().getMainWindow().FocusProject();
|
|
|
|
|
|
Global.mainModule.getUI().getMainWindow().getProjectWindow().FocusFile();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
//-
|
2024-10-13 22:08:13 +03:00
|
|
|
|
if (Global.mainModule.HasFile())
|
|
|
|
|
|
Global.mainModule.getFile().form.ShowMessages();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|