Files
VisualSapfor/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.java

288 lines
9.9 KiB
Java
Raw Normal View History

2024-10-09 22:15:56 +03:00
package _VisualDVM.Visual.Windows;
2024-10-14 15:19:13 +03:00
import Common.Database.Objects.DBObject;
import Common.Passes.Pass;
import Common.Utils.TextLog;
import Common.Visual.Controls.ShortLabel;
2024-10-11 00:00:30 +03:00
import Common.Visual.UI_;
2024-10-09 22:01:19 +03:00
import _VisualDVM.Current;
import _VisualDVM.Global;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Passes.PassCode;
2024-10-09 22:21:57 +03:00
import _VisualDVM.TestingSystem.SAPFOR.SapforPackage.SapforPackage;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
import _VisualDVM.TestingSystem.SAPFOR.SapforTasksPackage.UI.SapforTasksPackageTree;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Visual.Menus.VisualiserMenuBar;
import _VisualDVM.Visual.UI;
2023-09-17 22:13:42 +03:00
import javax.swing.*;
public class SapforPackagesComparisonForm {
2023-11-11 21:41:49 +03:00
public boolean comparisonMode = false;
2024-10-14 15:19:13 +03:00
public JScrollPane treeScroll = null;
2023-09-17 22:13:42 +03:00
protected JToolBar tools;
protected JLabel lObjectName;
2024-10-14 15:19:13 +03:00
//-->>
protected SapforPackage object = null;
//-->>
protected SapforTasksPackageTree Body;
//-->>
SapforPackagesComparisonForm this_ = null; //?
SapforPackagesComparisonForm slave = null;
SapforPackagesComparisonForm master = null;
//-->>
private JPanel content;
2023-09-17 22:13:42 +03:00
private JButton bApplyObject;
private JButton bPrevious;
private JButton bNext;
private JButton bCompare;
private JButton bClose;
2023-10-30 19:21:26 +03:00
private JPanel treePanel;
2024-10-14 15:19:13 +03:00
public SapforPackagesComparisonForm(SapforPackagesComparisonForm slave_in) {
//-
this_ = this;
slave = slave_in;
bPrevious.setVisible(isMaster());
bNext.setVisible(isMaster());
bApplyObject.addActionListener(e -> {
ApplyObject();
});
//--->>>
if (isMaster()) {
slave.master = this;
bPrevious.addActionListener(e -> {
});
bNext.addActionListener(e -> {
});
bCompare.addActionListener(e -> {
DoComparePass();
});
} else {
//рабу сравнивать не положено.
bCompare.setVisible(false);
}
//--->>>
bClose.addActionListener(e -> {
onClose();
});
}
public JPanel getContent() {
return content;
}
2023-09-17 22:13:42 +03:00
//--->>
public boolean isMaster() {
return slave != null;
}
public boolean isSlave() {
return master != null;
}
//--->>
//неперегружаемые методы
protected void RemoveObject() {
object = null;
2023-09-17 22:13:42 +03:00
showNoObject();
2023-11-11 21:41:49 +03:00
//--
if (comparisonMode) {
comparisonMode = false;
if (isMaster()) {
slave.comparisonMode = false;
slave.object = null;
slave.showNoObject();
} else {
master.comparisonMode = false;
master.object = null;
master.showNoObject();
}
}
2023-09-17 22:13:42 +03:00
}
public void ApplyObject() {
2023-12-18 00:04:44 +03:00
//---Загрузка
2023-09-17 22:13:42 +03:00
RemoveObject();
2023-11-11 21:41:49 +03:00
//---
2023-09-17 22:13:42 +03:00
TextLog log = new TextLog();
if (Global.mainModule.Check(log, Current.SapforPackage)) {
object = Global.mainModule.getSapforPackage();
2024-10-14 15:19:13 +03:00
if (object.isLoaded() || (Global.mainModule.getPass(PassCode.DownloadSapforPackage).Do(object))) {
showObject();
}
2023-09-17 22:13:42 +03:00
} else
2024-10-11 00:00:30 +03:00
UI_.Info(log.toString());
2023-09-17 22:13:42 +03:00
}
2024-03-04 20:51:52 +03:00
public void ApplyObject(DBObject object_in) {
RemoveObject();
object = (SapforPackage) object_in;
2024-10-14 15:19:13 +03:00
if (object.isLoaded() || (Global.mainModule.getPass(PassCode.DownloadSapforPackage).Do(object))) {
2024-03-04 20:51:52 +03:00
showObject();
}
}
2023-09-17 22:13:42 +03:00
public void Show() throws Exception {
}
2023-11-08 02:05:21 +03:00
public void showNoObject() {
2023-09-17 22:13:42 +03:00
lObjectName.setText("?");
lObjectName.setToolTipText("Объект не назначен.");
2023-11-08 02:05:21 +03:00
showNoTree();
2023-11-07 19:13:07 +03:00
if (isMaster()) {
2023-11-02 01:08:00 +03:00
UI.getMainWindow().getTestingWindow().ShowNoSapforPackageVersionEtalon();
2023-11-07 19:13:07 +03:00
} else {
2023-11-02 01:08:00 +03:00
UI.getMainWindow().getTestingWindow().ShowNoSapforPackageVersion();
}
2023-09-17 22:13:42 +03:00
}
2023-11-08 02:05:21 +03:00
//---
public void showCommonTree() {
//---
2023-11-11 21:41:49 +03:00
treePanel.add(treeScroll = new JScrollPane(
Body = new SapforTasksPackageTree(object.package_json.root,
2023-11-07 19:13:07 +03:00
isMaster() ? Current.SapforEtalonVersion : Current.SapforVersion
)));
treePanel.repaint();
treePanel.revalidate();
2023-09-17 22:13:42 +03:00
}
2023-11-11 21:41:49 +03:00
public void showComparisonTree() {
treePanel.add(treeScroll = new JScrollPane(
Body = new SapforTasksPackageTree(object.package_json.comparison_root,
isMaster() ? Current.SapforEtalonVersion : Current.SapforVersion
)));
treePanel.repaint();
treePanel.revalidate();
2023-11-08 02:05:21 +03:00
}
//---
public void showNoTree() {
2024-10-11 00:00:30 +03:00
UI_.Clear(treePanel);
2023-11-08 02:05:21 +03:00
}
public void showObject() {
lObjectName.setText(object.getPK().toString() + (isMaster() ? "(эталон)" : ""));
lObjectName.setToolTipText(object.getPK().toString());
//--
if (object.package_json == null) {
try {
object.readJson();
object.package_json.getVersionsFiles(object);
object.package_json.buildTree(object);
//---
} catch (Exception ex) {
ex.printStackTrace();
}
}
object.package_json.DropComparison();
//--
2023-11-08 02:05:21 +03:00
showCommonTree();
}
2023-09-17 22:13:42 +03:00
protected String getText() {
return "";
}
//-->>
private void createUIComponents() {
// TODO: place custom component creation code here
lObjectName = new ShortLabel(40);
tools = new VisualiserMenuBar();
}
//для сравнения по кнопке.
public boolean isReady() {
2023-11-06 22:37:31 +03:00
return object != null;
2023-09-17 22:13:42 +03:00
}
public void onClose() {
RemoveObject();
}
2023-11-07 19:13:07 +03:00
public void DoComparePass() {
2024-10-09 23:37:58 +03:00
Pass pass = new Pass() {
SapforPackage package1;
SapforPackage package2;
2023-09-17 22:13:42 +03:00
@Override
public String getDescription() {
return "Сравнение";
}
@Override
protected boolean needsAnimation() {
return true;
}
@Override
public boolean needsConfirmations() {
return false;
}
@Override
protected boolean canStart(Object... args) throws Exception {
2023-11-07 19:13:07 +03:00
if (isReady() && slave.isReady()) {
2023-11-08 02:05:21 +03:00
//--
2023-11-07 19:13:07 +03:00
package1 = object;
package2 = slave.object;
2023-11-08 02:05:21 +03:00
//--
if (package1.package_json.tasks.size() != package2.package_json.tasks.size()) {
2023-12-25 18:18:59 +03:00
Log.Writeln_("Количество задач в пакетах не совпадает!");
return false;
}
//--
2024-02-25 17:37:49 +03:00
//todo в дереве отображать пустые задачи заместо тех кого не хватает.
for (SapforTask task1 : package1.package_json.tasks) {
if (!package2.package_json.containsKey(task1.getUniqueKey()))
Log.Writeln_("Задача эталона " + task1.getUniqueKey() + "не найдена в сравниваемом пакете!");
2023-11-09 01:47:46 +03:00
}
return Log.isEmpty();
2023-11-07 19:13:07 +03:00
}
return false;
2023-09-17 22:13:42 +03:00
}
@Override
2023-11-08 03:05:29 +03:00
protected void performPreparation() throws Exception {
2023-11-11 21:41:49 +03:00
comparisonMode = false;
slave.comparisonMode = false;
//--
treeScroll = null;
slave.treeScroll = null;
//--
package1.package_json.DropComparison();
package2.package_json.DropComparison();
2023-11-08 03:05:29 +03:00
}
@Override
2023-11-08 02:05:21 +03:00
protected void showPreparation() throws Exception {
showNoTree();
slave.showNoTree();
//--->>>
UI.getMainWindow().getTestingWindow().ShowNoSapforPackageVersionEtalon();
UI.getMainWindow().getTestingWindow().ShowNoSapforPackageVersion();
2023-11-08 02:05:21 +03:00
}
@Override
2023-09-17 22:13:42 +03:00
protected void body() throws Exception {
2023-11-09 01:47:46 +03:00
//теперь сравниваем задачи
int i = 1;
2024-02-25 17:37:49 +03:00
for (SapforTask task1 : package1.package_json.tasks) {
SapforTask task2 = package2.package_json.getTaskByKey(task1.getUniqueKey());
2024-02-25 20:34:00 +03:00
task1.checkMatch(task2);
//--
++i;
}
//--
for (SapforTask task1 : package1.package_json.tasks) {
SapforTask task2 = package2.package_json.getTaskByKey(task1.getUniqueKey());
}
//---
package1.package_json.buildComparisonTree(package1);
package2.package_json.buildComparisonTree(package2);
2023-11-08 02:05:21 +03:00
}
@Override
protected boolean validate() {
return Log.isEmpty();
}
@Override
protected void showFail() throws Exception {
showCommonTree();
slave.showCommonTree();
}
@Override
2023-11-11 21:41:49 +03:00
protected void performDone() throws Exception {
comparisonMode = true;
slave.comparisonMode = true;
//--
2023-09-17 22:13:42 +03:00
}
@Override
2023-11-11 21:41:49 +03:00
protected void showDone() throws Exception {
showComparisonTree();
slave.showComparisonTree();
2024-03-04 20:51:52 +03:00
// SynchronizeTrees();
2023-09-17 22:13:42 +03:00
}
};
pass.Do();
}
2023-11-11 21:41:49 +03:00
public void SynchronizeTrees() {
if (slave.Body != null) {
2023-11-11 21:41:49 +03:00
Body.setSlaveTree(slave.Body);
slave.treeScroll.getVerticalScrollBar().setModel(treeScroll.getVerticalScrollBar().getModel());
}
}
2023-09-17 22:13:42 +03:00
}