From 788bd67201c5b77e202f8584f568a2d3ccff9a3a Mon Sep 17 00:00:00 2001 From: 02090095 Date: Wed, 16 Oct 2024 18:58:23 +0300 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20=D0=BC=D0=B0=D1=81=D1=81=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9?= =?UTF-8?q?=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 22 ++++++- src/Common/Database/Tables/DataSet.java | 40 +++++++++---- src/Common/Passes/DeleteObjectsPass.java | 59 +++++++++++++++++++ src/Common/Passes/ObjectsPass.java | 24 ++++++++ .../Passes/All/CompareDVMRunTasks.java | 2 +- .../Passes/All/CompareSapforPackages.java | 2 +- .../Passes/All/DeleteSelectedFiles.java | 8 +-- .../Passes/All/ExcludeSelectedFiles.java | 2 +- .../Passes/All/ExportDVMPackageToExcel.java | 4 +- .../Passes/All/IncludeSelectedFiles.java | 2 +- .../All/StartSelectedDVMConfigurations.java | 5 +- .../StartSelectedSAPFORConfigurations.java | 5 +- .../Passes/All/UpdateSelectedComponents.java | 6 +- .../Passes/Project/FilesMassPass.java | 4 +- .../Passes/Sapfor/VariantsMassPass.java | 2 +- .../Passes/Server/DeleteServerObjects.java | 16 ++--- .../Passes/Testing/DeleteTestingPackages.java | 6 +- .../Testing/SaveCurrentConfiguration.java | 4 +- .../Repository/Component/ComponentsSet.java | 4 +- .../Common/Configuration/Configuration.java | 4 ++ src/_VisualDVM/Visual/Windows/MainForm.java | 2 +- 21 files changed, 170 insertions(+), 53 deletions(-) create mode 100644 src/Common/Passes/DeleteObjectsPass.java create mode 100644 src/Common/Passes/ObjectsPass.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 74d85cc1..1c536ebd 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -7,7 +7,27 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/Common/Database/Tables/DataSet.java b/src/Common/Database/Tables/DataSet.java index 4d5f62f4..31384ad1 100644 --- a/src/Common/Database/Tables/DataSet.java +++ b/src/Common/Database/Tables/DataSet.java @@ -151,6 +151,9 @@ public class DataSet extends DataSetAnchestor { public boolean ShowDeleteObjectDialog(DBObject object) { return UI.Warning(getSingleDescription() + " " + object.getBDialogName() + " будет удален(а)"); } + public boolean ShowDeleteObjectsDialog(int toDeleteCount) { + return UI.Warning(getPluralDescription() + " в количестве " + toDeleteCount + " будут удалены)"); + } public String QName() { return "\"" + Name + "\""; } @@ -205,13 +208,13 @@ public class DataSet extends DataSetAnchestor { protected Comparator getComparator() { return null; } - public int getCheckedCount() { + public int getSelectedCount() { return (int) Data.values().stream().filter(d -> d.isVisible() && d.isSelected()).count(); } - public Vector getCheckedItems() { + public Vector getSelectedItems() { return Data.values().stream().filter(d -> d.isVisible() && d.isSelected()).collect(Collectors.toCollection(Vector::new)); } - public Vector getCheckedKeys() { + public Vector getSelectedKeys() { return Data.values().stream().filter(DBObject::isSelected).map(d -> (K) d.getPK()).collect(Collectors.toCollection(Vector::new)); } //-- @@ -262,6 +265,14 @@ public class DataSet extends DataSetAnchestor { public boolean CheckCurrent(TextLog log) { return MainModule_.instance.Check(log, CurrentName()); } + public boolean CheckSelectedOrCurrent(TextLog log) { + if ((getSelectedCount() == 0) && (CurrentName()==null || (getCurrent()==null))) { + log.Writeln_(getPluralDescription() + ":"); + log.Writeln_("Отсутствуют отмеченные объекты, или текущий объект!"); + return false; + } + return true; + } public boolean hasCurrent() { return MainModule_.instance.get(CurrentName()) != null; } @@ -274,15 +285,24 @@ public class DataSet extends DataSetAnchestor { public void setCurrent(D o) { MainModule_.instance.set(CurrentName(), o); } - public Vector getCheckedOrCurrent() { + public Vector getSelectedOrCurrent() { Vector res = new Vector<>(); - if (getCheckedCount() > 0) - res = getCheckedItems(); + if (getSelectedCount() > 0) + res = getSelectedItems(); else { - if (CurrentName() != null) { - if (getCurrent() != null) { - res.add(getCurrent()); - } + if ((CurrentName() != null) && (getCurrent() != null)) { + res.add(getCurrent()); + } + } + return res; + } + public Vector getSelectedOrCurrentKeys(){ + Vector res = new Vector<>(); + if (getSelectedCount() > 0) + res = getSelectedKeys(); + else { + if ((CurrentName() != null) && (getCurrent() != null)) { + res.add((K) getCurrent().getPK()); } } return res; diff --git a/src/Common/Passes/DeleteObjectsPass.java b/src/Common/Passes/DeleteObjectsPass.java new file mode 100644 index 00000000..485eba04 --- /dev/null +++ b/src/Common/Passes/DeleteObjectsPass.java @@ -0,0 +1,59 @@ +package Common.Passes; +import Common.Database.Objects.DBObject; +public abstract class DeleteObjectsPass extends ObjectsPass{ + public DeleteObjectsPass(Class d_in) { + super(d_in); + } + @Override + public String getIconPath() { + return "/Common/icons/Delete.png"; + } + @Override + protected boolean canStart(Object... args) throws Exception { + target = getTable().getSelectedOrCurrent(); + return getTable().CheckCurrent(Log) && getTable().ShowDeleteObjectsDialog(target.size()); + } + //Очищаем все связанные таблицы, чтобы не допустить перерисовки во время удаления объекта. + @Override + protected void showPreparation() throws Exception { + getTable().ClearUI(); + for (Class dep : getTable().getFKDependencies().keySet()) { + switch (getTable().getFKDependencies().get(dep).data) { + case NONE: + case DROP: + break; + case DELETE: + getDb().tables.get(dep).ClearUI(); + break; + } + } + } + @Override + protected void body() throws Exception { + getDb().BeginTransaction(); + for (D d: target){ + getDb().Delete(d); + for (Class dep : getTable().getFKDependencies().keySet()) { + switch (getTable().getFKDependencies().get(dep).data) { + case NONE: + break; + case DROP: + getDb().DropByFK(d, dep); + break; + case DELETE: + getDb().DeleteByFK(d, dep); + break; + } + } + } + getDb().Commit(); + } + //тут именно на финише, чтобы в любом случае вся таблица всегда была видна. + @Override + protected void performFinish() throws Exception { + getTable().ShowUI(); + for (Class dep : getTable().getFKDependencies().keySet()) { + getDb().tables.get(dep).RefreshUI(); + } + } +} diff --git a/src/Common/Passes/ObjectsPass.java b/src/Common/Passes/ObjectsPass.java new file mode 100644 index 00000000..defd8d27 --- /dev/null +++ b/src/Common/Passes/ObjectsPass.java @@ -0,0 +1,24 @@ +package Common.Passes; +import Common.Database.Database; +import Common.Database.Objects.DBObject; +import Common.Database.Tables.DBTable; +import Common.MainModule_; + +import java.util.Vector; +//массовый проход с объектами. на данный момент удаление. +public abstract class ObjectsPass extends Pass> { + protected Class d; //класс объектов. + public ObjectsPass(Class d_in) { + d = d_in; + } + protected Database getDb() { + return MainModule_.instance.getDb(); + } + public DBTable getTable() { + return getDb().tables.get(d); + } //таблица в источнике данных + @Override//sorted + public String getButtonText() { + return ""; + } +} \ No newline at end of file diff --git a/src/_VisualDVM/Passes/All/CompareDVMRunTasks.java b/src/_VisualDVM/Passes/All/CompareDVMRunTasks.java index 9031f1ad..dee2dd3a 100644 --- a/src/_VisualDVM/Passes/All/CompareDVMRunTasks.java +++ b/src/_VisualDVM/Passes/All/CompareDVMRunTasks.java @@ -22,7 +22,7 @@ public class CompareDVMRunTasks extends Pass> { master = null; slave = null; //-- - target = Global.testingServer.db.dvmRunTasks.getCheckedItems(); + target = Global.testingServer.db.dvmRunTasks.getSelectedItems(); if (target.size() == 2) { if (UI.Question("Назначить задачу " + Utils_.Brackets(target.get(0).getPK()) + " эталоном" + "\n(в случае отказа, будет назначена задача " + Utils_.Brackets(target.get(1).getPK()) + ")")) { diff --git a/src/_VisualDVM/Passes/All/CompareSapforPackages.java b/src/_VisualDVM/Passes/All/CompareSapforPackages.java index 4c2f7f4f..f163e7e3 100644 --- a/src/_VisualDVM/Passes/All/CompareSapforPackages.java +++ b/src/_VisualDVM/Passes/All/CompareSapforPackages.java @@ -22,7 +22,7 @@ public class CompareSapforPackages extends Pass> { master = null; slave = null; //-- - target = Global.testingServer.db.sapforPackages.getCheckedItems(); + target = Global.testingServer.db.sapforPackages.getSelectedItems(); if (target.size() == 2) { if (UI.Question("Назначить пакет " + Utils_.Brackets(target.get(0).getPK()) + " эталоном" + "\n(в случае отказа, будет назначен пакет " + Utils_.Brackets(target.get(1).getPK()) + ")")) { diff --git a/src/_VisualDVM/Passes/All/DeleteSelectedFiles.java b/src/_VisualDVM/Passes/All/DeleteSelectedFiles.java index fec9036b..6677f1de 100644 --- a/src/_VisualDVM/Passes/All/DeleteSelectedFiles.java +++ b/src/_VisualDVM/Passes/All/DeleteSelectedFiles.java @@ -13,18 +13,18 @@ public class DeleteSelectedFiles extends Pass { } @Override protected boolean canStart(Object... args) throws Exception { - if (Global.mainModule.getProject().db.files.getCheckedCount() == 0) { + if (Global.mainModule.getProject().db.files.getSelectedCount() == 0) { Log.Writeln_("Не отмечено ни одного файла."); return false; } - return UI.Warning("Удалить " + Global.mainModule.getProject().db.files.getCheckedCount() + " файлов."); + return UI.Warning("Удалить " + Global.mainModule.getProject().db.files.getSelectedCount() + " файлов."); } @Override protected void performPreparation() throws Exception { boolean hasCurrent = false; boolean hasSelected = false; if (Global.mainModule.HasFile()) { - for (DBProjectFile file : Global.mainModule.getProject().db.files.getCheckedItems()) { + for (DBProjectFile file : Global.mainModule.getProject().db.files.getSelectedItems()) { if (Global.mainModule.getFile().file.equals(file.file)) hasCurrent = true; if (Global.mainModule.getSelectedFile().file.equals(file.file)) @@ -44,7 +44,7 @@ public class DeleteSelectedFiles extends Pass { } @Override protected void body() throws Exception { - for (DBProjectFile file : Global.mainModule.getProject().db.files.getCheckedItems()) { + for (DBProjectFile file : Global.mainModule.getProject().db.files.getSelectedItems()) { ShowMessage1(file.name); Global.mainModule.getUI().getMainWindow().getProjectWindow().getFilesTreeForm().getTree().RemoveNode(file.node); Global.mainModule.getProject().db.Delete(file); diff --git a/src/_VisualDVM/Passes/All/ExcludeSelectedFiles.java b/src/_VisualDVM/Passes/All/ExcludeSelectedFiles.java index cccd202e..d8b0edca 100644 --- a/src/_VisualDVM/Passes/All/ExcludeSelectedFiles.java +++ b/src/_VisualDVM/Passes/All/ExcludeSelectedFiles.java @@ -16,7 +16,7 @@ public class ExcludeSelectedFiles extends Pass> { Log.Writeln_("Нажмите правую клавишу мыши, и перейдите в режим выбора файлов."); return false; } - target = Global.mainModule.getProject().db.files.getCheckedItems(); + target = Global.mainModule.getProject().db.files.getSelectedItems(); if (target.isEmpty()) { Log.Writeln_("Не отмечено ни одного файла."); return false; diff --git a/src/_VisualDVM/Passes/All/ExportDVMPackageToExcel.java b/src/_VisualDVM/Passes/All/ExportDVMPackageToExcel.java index 9ceb20a1..a0cdbd57 100644 --- a/src/_VisualDVM/Passes/All/ExportDVMPackageToExcel.java +++ b/src/_VisualDVM/Passes/All/ExportDVMPackageToExcel.java @@ -58,8 +58,8 @@ public class ExportDVMPackageToExcel extends Pass> { styles = null; target = null; //-- - if (Global.testingServer.db.dvmPackages.getCheckedCount() > 0) { - target = Global.testingServer.db.dvmPackages.getCheckedItems(); + if (Global.testingServer.db.dvmPackages.getSelectedCount() > 0) { + target = Global.testingServer.db.dvmPackages.getSelectedItems(); } else { if (Global.mainModule.Check(Log, Current.DVMPackage)) { target = new Vector<>(); diff --git a/src/_VisualDVM/Passes/All/IncludeSelectedFiles.java b/src/_VisualDVM/Passes/All/IncludeSelectedFiles.java index 5ad03009..afc5ec67 100644 --- a/src/_VisualDVM/Passes/All/IncludeSelectedFiles.java +++ b/src/_VisualDVM/Passes/All/IncludeSelectedFiles.java @@ -16,7 +16,7 @@ public class IncludeSelectedFiles extends Pass> { Log.Writeln_("Нажмите правую клавишу мыши, и перейдите в режим выбора файлов."); return false; } - target = Global.mainModule.getProject().db.files.getCheckedItems(); + target = Global.mainModule.getProject().db.files.getSelectedItems(); if (target.isEmpty()) { Log.Writeln_("Не отмечено ни одного файла."); return false; diff --git a/src/_VisualDVM/Passes/All/StartSelectedDVMConfigurations.java b/src/_VisualDVM/Passes/All/StartSelectedDVMConfigurations.java index 9828b0a0..c035ee31 100644 --- a/src/_VisualDVM/Passes/All/StartSelectedDVMConfigurations.java +++ b/src/_VisualDVM/Passes/All/StartSelectedDVMConfigurations.java @@ -43,11 +43,10 @@ public class StartSelectedDVMConfigurations extends PublishServerObject configurations = Global.testingServer.db.dvm_configurations.getCheckedOrCurrent(); - if (configurations.isEmpty()) { - Log.Writeln_("Не отмечено ни одной конфигурации, или отсутствует текущая конфигурация."); + if (!Global.testingServer.db.dvm_configurations.CheckSelectedOrCurrent(Log)){ return false; } + Vector configurations = Global.testingServer.db.dvm_configurations.getSelectedOrCurrent(); //--- target = new DVMPackage( Global.mainModule.getAccount(), diff --git a/src/_VisualDVM/Passes/All/StartSelectedSAPFORConfigurations.java b/src/_VisualDVM/Passes/All/StartSelectedSAPFORConfigurations.java index cd9494cb..b2005a30 100644 --- a/src/_VisualDVM/Passes/All/StartSelectedSAPFORConfigurations.java +++ b/src/_VisualDVM/Passes/All/StartSelectedSAPFORConfigurations.java @@ -35,11 +35,10 @@ public class StartSelectedSAPFORConfigurations extends PublishServerObject> { protected boolean canStart(Object... args) throws Exception { target = new Vector<>(); //------------------------ - if (Global.Components.getCheckedCount() == 0) { + if (Global.Components.getSelectedCount() == 0) { Log.Writeln_("Не отмечено ни одного компонента!"); return false; } - target = Global.Components.getCheckedItems(); + target = Global.Components.getSelectedItems(); return true; } @Override public String getStartDescription() { Vector question = new Vector<>(); question.add("Обновить компоненты"); - for (Component component : Global.Components.getCheckedItems()) { + for (Component component : Global.Components.getSelectedItems()) { question.add(component.getComponentType().getDescription()); } return String.join("\n", question); diff --git a/src/_VisualDVM/Passes/Project/FilesMassPass.java b/src/_VisualDVM/Passes/Project/FilesMassPass.java index 9aba23e4..6e370ef8 100644 --- a/src/_VisualDVM/Passes/Project/FilesMassPass.java +++ b/src/_VisualDVM/Passes/Project/FilesMassPass.java @@ -5,7 +5,7 @@ import _VisualDVM.ProjectData.Files.DBProjectFile; public abstract class FilesMassPass extends Pass { @Override protected boolean canStart(Object... args) throws Exception { - if (Global.mainModule.getProject().db.files.getCheckedCount() == 0) { + if (Global.mainModule.getProject().db.files.getSelectedCount() == 0) { Log.Writeln_("Не отмечено ни одного файла."); return false; } @@ -20,7 +20,7 @@ public abstract class FilesMassPass extends Pass { @Override protected void body() throws Exception { Global.mainModule.getProject().db.BeginTransaction(); - for (DBProjectFile file : Global.mainModule.getProject().db.files.getCheckedItems()) { + for (DBProjectFile file : Global.mainModule.getProject().db.files.getSelectedItems()) { ShowMessage1(file.name); operation(file); } diff --git a/src/_VisualDVM/Passes/Sapfor/VariantsMassPass.java b/src/_VisualDVM/Passes/Sapfor/VariantsMassPass.java index fa27bd2c..a7f4c658 100644 --- a/src/_VisualDVM/Passes/Sapfor/VariantsMassPass.java +++ b/src/_VisualDVM/Passes/Sapfor/VariantsMassPass.java @@ -20,7 +20,7 @@ public abstract class VariantsMassPass extends CurrentProjectPass { protected boolean canStart(Object... args) throws Exception { count = 0; if (super.canStart(args)) { - count = target.parallelVariants.getCheckedCount(); + count = target.parallelVariants.getSelectedCount(); if (count == 0) { Log.Writeln_("Не выбрано ни одного параллельного варианта"); return false; diff --git a/src/_VisualDVM/Passes/Server/DeleteServerObjects.java b/src/_VisualDVM/Passes/Server/DeleteServerObjects.java index 35a94438..208a13ef 100644 --- a/src/_VisualDVM/Passes/Server/DeleteServerObjects.java +++ b/src/_VisualDVM/Passes/Server/DeleteServerObjects.java @@ -2,7 +2,6 @@ package _VisualDVM.Passes.Server; import Common.Database.Database; import Common.Database.Objects.DBObject; import Common.Database.Tables.DBTable; -import Common.Visual.UI; import _VisualDVM.Global; import _VisualDVM.Repository.RepositoryServer; import _VisualDVM.Repository.Server.ServerCode; @@ -37,17 +36,10 @@ public class DeleteServerObjects @Override protected boolean canStart(Object... args) throws Exception { DBTable table = getDb().tables.get(d); - if (table.getCheckedCount() > 0) { - target = table.getCheckedKeys(); - return UI.Warning(table.getCheckedCount() + " объектов будет удален(о)."); - } else { - if (Global.mainModule.Check(Log, table.CurrentName())) { - target = new Vector<>(); - target.add(table.getCurrent().getPK()); - return getDb().tables.get(d).CheckCurrent(Log) && getDb().tables.get(d).ShowDeleteObjectDialog(table.getCurrent()); - } + if (!table.CheckSelectedOrCurrent(Log)) return false; - } + target = table.getSelectedOrCurrentKeys(); + return table.ShowDeleteObjectsDialog(target.size()); } //Очищаем все связанные таблицы, чтобы не допустить перерисовки во время удаления объекта. @Override @@ -63,7 +55,7 @@ public class DeleteServerObjects break; } } - } + }//DeleteTestingPackages @Override protected void ServerAction() throws Exception { Command(new ServerExchangeUnit_2021(ServerCode.DeleteObjectsByPK, getEmail(), new Pair<>(d, target))); diff --git a/src/_VisualDVM/Passes/Testing/DeleteTestingPackages.java b/src/_VisualDVM/Passes/Testing/DeleteTestingPackages.java index 37dc2c49..81246816 100644 --- a/src/_VisualDVM/Passes/Testing/DeleteTestingPackages.java +++ b/src/_VisualDVM/Passes/Testing/DeleteTestingPackages.java @@ -14,9 +14,9 @@ public abstract class DeleteTestingPackages

extends De super(Global.testingServer, p); } public boolean checkActivity() { - /* + /* //todo for (Object key : target) { - DVMPackage tasksPackage = server.db.dvmPackages.get(key); + TestingPackage tasksPackage = server.db.dvmPackages.get(key); if (!tasksPackage.state.equals(TasksPackageState.Done) && !tasksPackage.state.equals(TasksPackageState.Aborted) ) { @@ -24,7 +24,7 @@ public abstract class DeleteTestingPackages

extends De return false; } } - */ + */ return true; } protected abstract File getPackagesHome(); diff --git a/src/_VisualDVM/Passes/Testing/SaveCurrentConfiguration.java b/src/_VisualDVM/Passes/Testing/SaveCurrentConfiguration.java index 1d12d272..74a0b8bb 100644 --- a/src/_VisualDVM/Passes/Testing/SaveCurrentConfiguration.java +++ b/src/_VisualDVM/Passes/Testing/SaveCurrentConfiguration.java @@ -33,12 +33,12 @@ public abstract class SaveCurrentConfiguration(); settings = new Vector<>(); //--- - for (Group group : Global.testingServer.db.groups.getCheckedItems()) { + for (Group group : Global.testingServer.db.groups.getSelectedItems()) { groups.add(group); Vector groupTests = Global.testingServer.db.tests.getSelectedGroupTests(group); tests.addAll(groupTests); } - for (Object setting : Global.testingServer.db.tables.get(s).getCheckedItems()) { + for (Object setting : Global.testingServer.db.tables.get(s).getSelectedItems()) { settings.add((Settings) setting); } return true; diff --git a/src/_VisualDVM/Repository/Component/ComponentsSet.java b/src/_VisualDVM/Repository/Component/ComponentsSet.java index 3c058f2c..d11a7e96 100644 --- a/src/_VisualDVM/Repository/Component/ComponentsSet.java +++ b/src/_VisualDVM/Repository/Component/ComponentsSet.java @@ -61,12 +61,12 @@ public class ComponentsSet extends DataSet { return Current.Component; } @Override - public Vector getCheckedItems() { + public Vector getSelectedItems() { Vector target = new Vector<>(); Component visualiser = null; Component server = null; //------------------------ - for (Component component : super.getCheckedItems()) { + for (Component component : super.getSelectedItems()) { switch (component.getComponentType()) { case Visualizer_2: server = component; diff --git a/src/_VisualDVM/TestingSystem/Common/Configuration/Configuration.java b/src/_VisualDVM/TestingSystem/Common/Configuration/Configuration.java index 5f480600..05ad66db 100644 --- a/src/_VisualDVM/TestingSystem/Common/Configuration/Configuration.java +++ b/src/_VisualDVM/TestingSystem/Common/Configuration/Configuration.java @@ -70,4 +70,8 @@ public class Configuration extends riDBObject { public boolean validate(TextLog log) { return true; } + @Override + public String getDialogName() { + return description; + } } diff --git a/src/_VisualDVM/Visual/Windows/MainForm.java b/src/_VisualDVM/Visual/Windows/MainForm.java index fc50a252..9e185d78 100644 --- a/src/_VisualDVM/Visual/Windows/MainForm.java +++ b/src/_VisualDVM/Visual/Windows/MainForm.java @@ -156,7 +156,7 @@ public class MainForm extends Form implements MainWindow { @Override public void ShowCheckedTestsCount() { int res = 0; - for (Group group : Global.testingServer.db.groups.getCheckedItems()) { + for (Group group : Global.testingServer.db.groups.getSelectedItems()) { Vector selected_tests = new Vector<>(); Vector group_tests = new Vector<>(); for (Test test : Global.testingServer.db.tests.Data.values()) {