2024-10-14 12:14:01 +03:00
|
|
|
|
package _VisualDVM.Passes.All;
|
2024-10-14 15:19:13 +03:00
|
|
|
|
import Common.Database.Database;
|
|
|
|
|
|
import Common.Passes.AddObjectPass;
|
2024-10-11 00:00:30 +03:00
|
|
|
|
import Common.Utils.Utils_;
|
2024-10-15 15:13:57 +03:00
|
|
|
|
import Common.Visual.UI;
|
2025-02-18 16:21:20 +03:00
|
|
|
|
import _VisualDVM.ComponentsServer.BugReport.BugReport;
|
|
|
|
|
|
import _VisualDVM.ComponentsServer.BugReport.BugReportState;
|
|
|
|
|
|
import _VisualDVM.ComponentsServer.Component.ComponentType;
|
2024-10-07 00:58:29 +03:00
|
|
|
|
import _VisualDVM.Global;
|
2025-02-18 20:14:14 +03:00
|
|
|
|
import _VisualDVM.ComponentsServer.UserAccount.AccountRole;
|
2024-10-14 15:19:13 +03:00
|
|
|
|
import _VisualDVM.Passes.PassCode;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
|
import java.nio.file.Files;
|
|
|
|
|
|
import java.nio.file.Paths;
|
|
|
|
|
|
import java.nio.file.StandardCopyOption;
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
import java.util.Vector;
|
|
|
|
|
|
public class AddBugReport extends AddObjectPass<BugReport> {
|
|
|
|
|
|
public AddBugReport() {
|
|
|
|
|
|
super(BugReport.class);
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected Database getDb() {
|
|
|
|
|
|
return Global.componentsServer.db;
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public boolean canStart(Object... args) throws Exception {
|
2024-10-13 22:08:13 +03:00
|
|
|
|
if (Global.mainModule.getAccount().role.equals(AccountRole.Undefined)) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
Log.Writeln_("Для создания отчёта требуется регистрация");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
2024-10-13 22:08:13 +03:00
|
|
|
|
if (Global.mainModule.HasProject()) {
|
|
|
|
|
|
String version = Global.mainModule.getProject().Home.getAbsolutePath().substring(Global.mainModule.getRoot().Home.getParent().length());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
if (version.toCharArray()[0] == '\\') version = version.substring(1);
|
2024-10-13 22:08:13 +03:00
|
|
|
|
target = new BugReport(Global.mainModule.getAccount().name, Global.mainModule.getAccount().email,
|
2023-09-17 22:13:42 +03:00
|
|
|
|
"Черновик отчёта об ошибке.\nЗаполните описание ошибочной ситуации, и нажмите 'Опубликовать'", version);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
} else {
|
2024-10-15 15:13:57 +03:00
|
|
|
|
if (UI.Warning("Создать отчёт об ошибке без прикрепления проекта.")) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
target = new BugReport();
|
|
|
|
|
|
target.genName();
|
2024-10-13 22:08:13 +03:00
|
|
|
|
target.sender_name = Global.mainModule.getAccount().name;
|
|
|
|
|
|
target.sender_address = Global.mainModule.getAccount().email;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
target.project_version = "";
|
2025-01-29 15:20:24 +03:00
|
|
|
|
target.visualiser_version = Global.visualiser.version;
|
2024-10-22 20:16:57 +03:00
|
|
|
|
target.sapfor_version = Global.components.get(ComponentType.Sapfor_F).version;
|
2025-01-16 19:04:46 +03:00
|
|
|
|
target.packedSettingsJson = "";
|
2023-09-17 22:13:42 +03:00
|
|
|
|
target.percentage = 0;
|
|
|
|
|
|
target.description = "Черновик отчёта об ошибке.\nЗаполните описание ошибочной ситуации, и нажмите 'Опубликовать'";
|
|
|
|
|
|
target.date = new Date().getTime();
|
|
|
|
|
|
target.change_date = new Date().getTime();
|
|
|
|
|
|
target.state = BugReportState.draft;
|
|
|
|
|
|
target.owner = null;
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void performPreparation() throws Exception {
|
2024-10-13 22:08:13 +03:00
|
|
|
|
Global.mainModule.getSapfor().ResetAllAnalyses();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void body() throws Exception {
|
|
|
|
|
|
super.body();
|
|
|
|
|
|
if (!target.project_version.isEmpty()) {
|
2024-10-13 22:08:13 +03:00
|
|
|
|
Global.mainModule.getRoot().cleanDepAndGCOVR(); //удаление депов и гкова
|
2023-09-17 22:13:42 +03:00
|
|
|
|
//логи во вложения.
|
2024-10-13 22:08:13 +03:00
|
|
|
|
File attachementsDir = Global.mainModule.getProject().getAttachmentsDirectory();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
Vector<File> logs = new Vector<>();
|
2024-10-11 00:00:30 +03:00
|
|
|
|
logs.add(Utils_.MainLog.getLogFile());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
logs.add(Paths.get(Global.ComponentsDirectory.getAbsolutePath(), "Sapfor_log.txt").toFile());
|
|
|
|
|
|
logs.add(Paths.get(Global.ComponentsDirectory.getAbsolutePath(), "Server_log.txt").toFile());
|
2024-10-22 20:16:57 +03:00
|
|
|
|
logs.add(Global.components.get(ComponentType.Visualizer_2).getLogFile());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
for (File file : logs) {
|
|
|
|
|
|
if (file.exists())
|
|
|
|
|
|
Files.copy(file.toPath(), Paths.get(attachementsDir.getAbsolutePath(), file.getName()), StandardCopyOption.REPLACE_EXISTING);
|
|
|
|
|
|
}
|
|
|
|
|
|
//запаковка рута
|
2024-10-22 13:36:57 +03:00
|
|
|
|
Global.mainModule.getPass(PassCode.ZipFolderPass).Do(Global.mainModule.getRoot().Home.getAbsolutePath(),
|
|
|
|
|
|
target.getArchiveFile().getAbsolutePath());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected boolean validate() {
|
2024-10-22 13:36:57 +03:00
|
|
|
|
double size = Utils_.getFileSizeMegaBytes(target.getArchiveFile());
|
2023-09-17 22:13:42 +03:00
|
|
|
|
if (size > 100) {
|
|
|
|
|
|
Log.Writeln_("Размер запакованного вложения " + size + " Мб превышает 100 Мб");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return super.validate();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|