diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 1f60e4f8..4fbad644 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -7,14 +7,14 @@
-
+
+
+
+
-
-
-
-
+
-
+
diff --git a/src/Visual_DVM_2021/Passes/All/PingComponentsServer.java b/src/Visual_DVM_2021/Passes/All/PingComponentsServer.java
new file mode 100644
index 00000000..51c06927
--- /dev/null
+++ b/src/Visual_DVM_2021/Passes/All/PingComponentsServer.java
@@ -0,0 +1,38 @@
+package Visual_DVM_2021.Passes.All;
+import Repository.Server.ServerCode;
+import Repository.Server.ServerExchangeUnit_2021;
+import Visual_DVM_2021.Passes.Server.ComponentsRepositoryPass;
+import Visual_DVM_2021.Passes.Server.TestingSystemPass;
+
+import java.net.ConnectException;
+public class PingComponentsServer extends ComponentsRepositoryPass {
+ boolean flag;
+ boolean silent;
+ @Override
+ protected boolean canStart(Object... args) throws Exception {
+ flag = false;
+ silent = args.length > 0 ? (boolean) args[0] : false;
+ return super.canStart(args);
+ }
+ @Override
+ protected void ServerAction() throws Exception {
+ Command(new ServerExchangeUnit_2021(ServerCode.Ping));
+ flag = true;
+ }
+ @Override
+ protected boolean validate() {
+ return flag;
+ }
+ @Override
+ protected void CheckException(Exception ex) {
+ if (silent) {
+ Throwable cause = getCauseRec(ex);
+ if ((cause instanceof ConnectException) && cause.getMessage().contains("Connection refused: connect")) {
+ //так как это пинг, игнорируем.
+ System.out.println("Server inactive");
+ return;
+ }
+ }
+ super.CheckException(ex);
+ }
+}
\ No newline at end of file
diff --git a/src/Visual_DVM_2021/Passes/All/PublishComponentsServer.java b/src/Visual_DVM_2021/Passes/All/PublishComponentsServer.java
new file mode 100644
index 00000000..f173f390
--- /dev/null
+++ b/src/Visual_DVM_2021/Passes/All/PublishComponentsServer.java
@@ -0,0 +1,53 @@
+package Visual_DVM_2021.Passes.All;
+import Common.Global;
+import Common.Utils.Utils;
+import GlobalData.RemoteFile.RemoteFile;
+import Visual_DVM_2021.Passes.PassCode_2021;
+import Visual_DVM_2021.Passes.PassException;
+import Visual_DVM_2021.Passes.SSH.RepositoryServerSSHPass;
+
+import java.io.File;
+public class PublishComponentsServer extends RepositoryServerSSHPass {
+ @Override
+ protected String getServerFileName() {
+ return "VisualSapfor.jar";
+ }
+ @Override
+ protected String getServerHomeName() {
+ return "_sapfor_x64";
+ }
+ @Override
+ public String getIconPath() {
+ return "/icons/Publish.png";
+ }
+ //1. остановить сервер.
+ //2. заменить файл сервера на компонент визуализатора. переименовать его.
+ //3. запустить сервер.
+ @Override
+ protected void ServerAction() throws Exception {
+ if (passes.get(PassCode_2021.PingComponentsServer).Do(true))
+ ShutdownServer();
+ if (passes.get(PassCode_2021.PingComponentsServer).Do(true)) {
+ throw new PassException("Не удалось остановить сервер.");
+ }
+ File src = Global.visualiser.getFile();
+ //-
+ RemoteFile dst = new RemoteFile(serverHome, getServerFileName());
+ user.connection.tryRM(dst);
+ user.connection.putSingleFile(src, dst);
+ //-
+
+ StartServer();
+ System.out.println("userHome=" + Utils.Brackets(userHome.full_name));
+ System.out.println("testingHome=" + Utils.Brackets(serverHome.full_name));
+ }
+ @Override
+ protected boolean validate() {
+
+ if (!passes.get(PassCode_2021.PingComponentsServer).Do(true)) {
+ Log.Writeln_("Не удалось запустить сервер.");
+ }
+ return true;
+ }
+}
+
diff --git a/src/Visual_DVM_2021/Passes/All/RemoteSingleCommand.java b/src/Visual_DVM_2021/Passes/All/RemoteSingleCommand.java
index db957673..f59cf658 100644
--- a/src/Visual_DVM_2021/Passes/All/RemoteSingleCommand.java
+++ b/src/Visual_DVM_2021/Passes/All/RemoteSingleCommand.java
@@ -15,9 +15,10 @@ public class RemoteSingleCommand extends CurrentConnectionPass {
@Override
protected void ServerAction() throws Exception {
RemoteFile file = new RemoteFile(user.connection.sftpChannel.getHome(), Utils.getDateName("out"));
- user.connection.ShellCommand(command+" 1>"+Utils.DQuotes(file.full_name));
- if (user.connection.Exists(file)){
+ user.connection.ShellCommand(command + " 1>" + Utils.DQuotes(file.full_name));
+ if (user.connection.Exists(file)) {
target = user.connection.readFromFile(file);
+ user.connection.sftpChannel.rm(file.full_name);
}
}
}
diff --git a/src/Visual_DVM_2021/Passes/All/ShutdownComponentsServer.java b/src/Visual_DVM_2021/Passes/All/ShutdownComponentsServer.java
new file mode 100644
index 00000000..9c32c794
--- /dev/null
+++ b/src/Visual_DVM_2021/Passes/All/ShutdownComponentsServer.java
@@ -0,0 +1,29 @@
+package Visual_DVM_2021.Passes.All;
+import Visual_DVM_2021.Passes.PassCode_2021;
+import Visual_DVM_2021.Passes.SSH.RepositoryServerSSHPass;
+public class ShutdownComponentsServer extends RepositoryServerSSHPass {
+ @Override
+ protected String getServerFileName() {
+ return "VisualSapfor.jar";
+ }
+ @Override
+ protected String getServerHomeName() { return "_sapfor_x64";
+ }
+ @Override
+ public String getIconPath() {
+ return "/icons/Stop25.png";
+ }
+ @Override
+ protected boolean canStart(Object... args) throws Exception {
+ if (passes.get(PassCode_2021.PingTestingServer).Do(true)){
+ return true;
+ }else {
+ Log.Writeln_("Сервер уже неактивен!");
+ return false;
+ }
+ }
+ @Override
+ protected void ServerAction() throws Exception {
+ ShutdownServer();
+ }
+}
\ No newline at end of file
diff --git a/src/Visual_DVM_2021/Passes/All/StartComponentsServer.java b/src/Visual_DVM_2021/Passes/All/StartComponentsServer.java
new file mode 100644
index 00000000..3a654192
--- /dev/null
+++ b/src/Visual_DVM_2021/Passes/All/StartComponentsServer.java
@@ -0,0 +1,32 @@
+package Visual_DVM_2021.Passes.All;
+import Visual_DVM_2021.Passes.PassCode_2021;
+import Visual_DVM_2021.Passes.SSH.RepositoryServerSSHPass;
+public class StartComponentsServer extends RepositoryServerSSHPass {
+ @Override
+ public String getIconPath() {
+ return "/icons/GreenStart.png";
+ }
+ @Override
+ protected String getServerHomeName() {return "_sapfor_x64"; }
+ @Override
+ protected String getServerFileName() {
+ return "VisualSapfor.jar";
+ }
+ //--
+ @Override
+ protected boolean canStart(Object... args) throws Exception {
+ if (passes.get(PassCode_2021.PingComponentsServer).Do(true)) {
+ Log.Writeln_("Сервер уже активен!");
+ return false;
+ }
+ return true;
+ }
+ @Override
+ protected void ServerAction() throws Exception {
+ StartServer();
+ }
+ @Override
+ protected boolean validate() {
+ return passes.get(PassCode_2021.PingComponentsServer).Do();
+ }
+}
diff --git a/src/Visual_DVM_2021/Passes/PassCode_2021.java b/src/Visual_DVM_2021/Passes/PassCode_2021.java
index 9997e03f..321c9eb0 100644
--- a/src/Visual_DVM_2021/Passes/PassCode_2021.java
+++ b/src/Visual_DVM_2021/Passes/PassCode_2021.java
@@ -326,13 +326,29 @@ public enum PassCode_2021 {
PingTestingServer,
ShutdownTestingServer,
StartTestingServer,
- SPF_InsertImplicitNone,
PublishTestingServer,
+ //---
+ PingComponentsServer,
+ ShutdownComponentsServer,
+ StartComponentsServer,
+ PublishComponentsServer,
+ //---
+ SPF_InsertImplicitNone,
;
public String getDescription() {
switch (this) {
case Undefined:
return "?";
+ //--
+ case PublishComponentsServer:
+ return "Опубликовать сервер компонент и отчётов об ошибках";
+ case PingComponentsServer:
+ return "Проверить активносто сервера компонент и отчётов об ошибках";
+ case StartComponentsServer:
+ return "Запустить сервер компонент и отчётов об ошибках";
+ case ShutdownComponentsServer:
+ return "Остановить сервер компонент и отчётов об ошибках";
+ //--
case PublishTestingServer:
return "Опубликовать тестовый сервер.";
case SPF_InsertImplicitNone:
diff --git a/src/Visual_DVM_2021/UI/Main/CallbackForm.form b/src/Visual_DVM_2021/UI/Main/CallbackForm.form
index 63d5d9f6..fbb4e868 100644
--- a/src/Visual_DVM_2021/UI/Main/CallbackForm.form
+++ b/src/Visual_DVM_2021/UI/Main/CallbackForm.form
@@ -92,6 +92,14 @@
+
+
+
+
+
+
+
+
diff --git a/src/Visual_DVM_2021/UI/Main/CallbackForm.java b/src/Visual_DVM_2021/UI/Main/CallbackForm.java
index d51d5c0f..22f0d884 100644
--- a/src/Visual_DVM_2021/UI/Main/CallbackForm.java
+++ b/src/Visual_DVM_2021/UI/Main/CallbackForm.java
@@ -121,6 +121,7 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
private JTextField BugReportsCommentFilter;
public JSplitPane SC67;
private JPanel workspacesPanel;
+ private JLabel adminLabel;
private Viewer BugReportSettings;
public void LockMyOnly() {
if (!BugReportsMyOnlyFilter.isSelected()) {
@@ -271,6 +272,11 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
BugReportInterface.filterOpenedOnly = BugReportsOpenedOnly.isSelected();
ShowBugReports();
});
+ //-
+ accountTools.addSeparator();
+ accountTools.add(Pass_2021.passes.get(PassCode_2021.StartComponentsServer).createButton());
+ accountTools.add(Pass_2021.passes.get(PassCode_2021.ShutdownComponentsServer).createButton());
+ accountTools.add(Pass_2021.passes.get(PassCode_2021.PublishComponentsServer).createButton());
}
//-------------------------------------------
DescriptionTabs descriptionTabs = new DescriptionTabs();
@@ -375,10 +381,15 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
Pass_2021.passes.get(PassCode_2021.InstallServerSapfor).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.DeleteServerSapfor).setControlsVisible(false);
//
+ Pass_2021.passes.get(PassCode_2021.ShutdownComponentsServer).setControlsVisible(false);
+ Pass_2021.passes.get(PassCode_2021.StartComponentsServer).setControlsVisible(false);
+ Pass_2021.passes.get(PassCode_2021.PublishComponentsServer).setControlsVisible(false);
+ //
Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(false);
UI.testingBar.showServerAdminLabel(false);
+ adminLabel.setVisible(false);
}
private void setDeveloperRights() {
UnlockMyOnly();
@@ -390,10 +401,15 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
Pass_2021.passes.get(PassCode_2021.InstallServerSapfor).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.DeleteServerSapfor).setControlsVisible(false);
//
+ Pass_2021.passes.get(PassCode_2021.ShutdownComponentsServer).setControlsVisible(false);
+ Pass_2021.passes.get(PassCode_2021.StartComponentsServer).setControlsVisible(false);
+ Pass_2021.passes.get(PassCode_2021.PublishComponentsServer).setControlsVisible(false);
+ //
Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(false);
UI.testingBar.showServerAdminLabel(false);
+ adminLabel.setVisible(false);
}
@Override
public void setAdminRights() {
@@ -405,11 +421,17 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
Pass_2021.passes.get(PassCode_2021.DeleteSubscriberWorkspace).setControlsVisible(true);
Pass_2021.passes.get(PassCode_2021.InstallServerSapfor).setControlsVisible(true);
Pass_2021.passes.get(PassCode_2021.DeleteServerSapfor).setControlsVisible(true);
+ //
+ Pass_2021.passes.get(PassCode_2021.ShutdownComponentsServer).setControlsVisible(true);
+ Pass_2021.passes.get(PassCode_2021.StartComponentsServer).setControlsVisible(true);
+ Pass_2021.passes.get(PassCode_2021.PublishComponentsServer).setControlsVisible(true);
//--
Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(true);
Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(true);
Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(true);
+ //--
UI.testingBar.showServerAdminLabel(true);
+ adminLabel.setVisible(true);
}
@Override
public void ShowAccount() {