Files
VisualSapfor/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.java
2024-10-09 22:21:57 +03:00

288 lines
10 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package _VisualDVM.Visual.Windows;
import Common.CurrentAnchestor;
import Common.Visual.CommonUI;
import _VisualDVM.Current;
import Common.Database.Objects.DBObject;
import _VisualDVM.Visual.Controls.ShortLabel;
import _VisualDVM.Visual.Menus.VisualiserMenuBar;
import _VisualDVM.Visual.UI;
import Common.Utils.TextLog;
import _VisualDVM.TestingSystem.SAPFOR.SapforPackage.SapforPackage;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
import _VisualDVM.TestingSystem.SAPFOR.SapforTasksPackage.UI.SapforTasksPackageTree;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;
import javax.swing.*;
public class SapforPackagesComparisonForm {
public boolean comparisonMode = false;
//-->>
private JPanel content;
public JPanel getContent() {
return content;
}
protected JToolBar tools;
protected JLabel lObjectName;
private JButton bApplyObject;
private JButton bPrevious;
private JButton bNext;
private JButton bCompare;
private JButton bClose;
private JPanel treePanel;
//-->>
SapforPackagesComparisonForm this_ = null; //?
SapforPackagesComparisonForm slave = null;
SapforPackagesComparisonForm master = null;
//-->>
protected SapforPackage object = null;
//-->>
protected SapforTasksPackageTree Body;
public JScrollPane treeScroll = null;
//--->>
public boolean isMaster() {
return slave != null;
}
public boolean isSlave() {
return master != null;
}
//--->>
//неперегружаемые методы
protected void RemoveObject() {
object = null;
showNoObject();
//--
if (comparisonMode) {
comparisonMode = false;
if (isMaster()) {
slave.comparisonMode = false;
slave.object = null;
slave.showNoObject();
} else {
master.comparisonMode = false;
master.object = null;
master.showNoObject();
}
}
}
public void ApplyObject() {
//---Загрузка
RemoveObject();
//---
TextLog log = new TextLog();
if (CurrentAnchestor.Check(log, Current.SapforPackage)) {
object = Current.getSapforPackage();
if (object.isLoaded() || (Pass_2021.passes.get(PassCode_2021.DownloadSapforPackage).Do(object))) {
showObject();
}
} else
CommonUI.Info(log.toString());
}
public void ApplyObject(DBObject object_in) {
RemoveObject();
object = (SapforPackage) object_in;
if (object.isLoaded() || (Pass_2021.passes.get(PassCode_2021.DownloadSapforPackage).Do(object))) {
showObject();
}
}
public void Show() throws Exception {
}
public void showNoObject() {
lObjectName.setText("?");
lObjectName.setToolTipText("Объект не назначен.");
showNoTree();
if (isMaster()) {
UI.getMainWindow().getTestingWindow().ShowNoSapforPackageVersionEtalon();
} else {
UI.getMainWindow().getTestingWindow().ShowNoSapforPackageVersion();
}
}
//---
public void showCommonTree() {
//---
treePanel.add(treeScroll = new JScrollPane(
Body = new SapforTasksPackageTree(object.package_json.root,
isMaster() ? Current.SapforEtalonVersion : Current.SapforVersion
)));
treePanel.repaint();
treePanel.revalidate();
}
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();
}
//---
public void showNoTree() {
CommonUI.Clear(treePanel);
}
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();
//--
showCommonTree();
}
protected String getText() {
return "";
}
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();
});
}
//-->>
private void createUIComponents() {
// TODO: place custom component creation code here
lObjectName = new ShortLabel(40);
tools = new VisualiserMenuBar();
}
//для сравнения по кнопке.
public boolean isReady() {
return object != null;
}
public void onClose() {
RemoveObject();
}
public void DoComparePass() {
Pass_2021 pass = new Pass_2021() {
SapforPackage package1;
SapforPackage package2;
@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 {
if (isReady() && slave.isReady()) {
//--
package1 = object;
package2 = slave.object;
//--
if (package1.package_json.tasks.size() != package2.package_json.tasks.size()) {
Log.Writeln_("Количество задач в пакетах не совпадает!");
return false;
}
//--
//todo в дереве отображать пустые задачи заместо тех кого не хватает.
for (SapforTask task1 : package1.package_json.tasks) {
if (!package2.package_json.containsKey(task1.getUniqueKey()))
Log.Writeln_("Задача эталона " + task1.getUniqueKey() + "не найдена в сравниваемом пакете!");
}
return Log.isEmpty();
}
return false;
}
@Override
protected void performPreparation() throws Exception {
comparisonMode = false;
slave.comparisonMode = false;
//--
treeScroll = null;
slave.treeScroll = null;
//--
package1.package_json.DropComparison();
package2.package_json.DropComparison();
}
@Override
protected void showPreparation() throws Exception {
showNoTree();
slave.showNoTree();
//--->>>
UI.getMainWindow().getTestingWindow().ShowNoSapforPackageVersionEtalon();
UI.getMainWindow().getTestingWindow().ShowNoSapforPackageVersion();
}
@Override
protected void body() throws Exception {
//теперь сравниваем задачи
int i = 1;
for (SapforTask task1 : package1.package_json.tasks) {
SapforTask task2 = package2.package_json.getTaskByKey(task1.getUniqueKey());
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);
}
@Override
protected boolean validate() {
return Log.isEmpty();
}
@Override
protected void showFail() throws Exception {
showCommonTree();
slave.showCommonTree();
}
@Override
protected void performDone() throws Exception {
comparisonMode = true;
slave.comparisonMode = true;
//--
}
@Override
protected void showDone() throws Exception {
showComparisonTree();
slave.showComparisonTree();
// SynchronizeTrees();
}
};
pass.Do();
}
public void SynchronizeTrees() {
if (slave.Body != null) {
Body.setSlaveTree(slave.Body);
slave.treeScroll.getVerticalScrollBar().setModel(treeScroll.getVerticalScrollBar().getModel());
}
}
}