промежуточный. кусок рефакторинга на тему борьбы с зависаниями. пока не внедрен

This commit is contained in:
2025-02-03 15:19:53 +03:00
parent 6911bc6cdb
commit e0f441d82a
26 changed files with 128 additions and 200 deletions

View File

@@ -1,16 +1,23 @@
package _VisualDVM.Passes.All;
import Common.Database.Objects.DBObject;
import Common.Passes.Pass;
import Common.Properties;
import Common.Utils.Utils_;
import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.Passes.Server.ComponentsRepositoryPass;
import _VisualDVM.Passes.Server.ClientPass;
import _VisualDVM.Repository.BugReport.BugReport;
import _VisualDVM.Repository.EmailMessage;
import _VisualDVM.Repository.RepositoryServer;
import _VisualDVM.Repository.Server.ComponentsServer;
import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.Repository.Server.ServerExchangeUnit_2021;
import com.google.gson.JsonObject;
import javafx.util.Pair;
import java.io.File;
import java.util.Date;
public class AppendBugReportField extends ComponentsRepositoryPass<BugReport> {
public class AppendBugReportField extends ClientPass<ComponentsServer,BugReport> {
String fieldName;
String oldValue;
String addition;
@@ -20,6 +27,10 @@ public class AppendBugReportField extends ComponentsRepositoryPass<BugReport> {
return "/icons/Append.png";
}
@Override
protected boolean needsAnimation() {
return true;
}
@Override
public String getButtonText() {
return "";
}
@@ -27,9 +38,13 @@ public class AppendBugReportField extends ComponentsRepositoryPass<BugReport> {
return target.canModify(Global.mainModule.getAccount(),Log);
}
@Override
protected ComponentsServer getServer() {
return Global.componentsServer;
}
@Override
protected boolean canStart(Object... args) throws Exception {
if (server.db.bugReports.getUI().CheckCurrent(Log)) {
target = server.db.bugReports.getUI().getCurrent();
if (getServer().db.getTable(BugReport.class).getUI().CheckCurrent(Log)) {
target = getServer().db.getTable(BugReport.class).getUI().getCurrent();
if (!target.CheckNotDraft(Log))
return false;
fieldName = (String) args[0];
@@ -43,9 +58,10 @@ public class AppendBugReportField extends ComponentsRepositoryPass<BugReport> {
return false;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.GetObjectCopyByPK, "", new Pair<>(BugReport.class, target.id)));
target.SynchronizeFields((BugReport) response.object);
protected void body() throws Exception {
//todo возможно оформить это единственной командой на сервере.
BugReport actual= getServer().getActual(target, BugReport.class);
target.SynchronizeFields(actual);
oldValue = (String) BugReport.class.getField(fieldName).get(target);
newValue = oldValue + "\n" + Utils_.Brackets(Utils_.print_date(
new Date())) + " " + Global.mainModule.getAccount().name
@@ -54,13 +70,13 @@ public class AppendBugReportField extends ComponentsRepositoryPass<BugReport> {
BugReport.class.getField(fieldName).set(target, newValue);
//обновляем дату.
target.change_date = new Date().getTime();
server.db.Update(target);
Global.componentsServer.db.Update(target);
//3. отправляем на сервер
Command(new ServerExchangeUnit_2021(ServerCode.UpdateBugReportField, fieldName, target));
getServer().ClientRequest(ServerCode.UpdateBugReportField, fieldName, target);
}
@Override
protected void showFinish() throws Exception {
server.db.bugReports.getUI().RedrawControl();
Global.componentsServer.db.bugReports.getUI().RedrawControl();
Global.mainModule.getUI().getMainWindow().getCallbackWindow().ShowCurrentBugReport();
}
@Override
@@ -86,7 +102,7 @@ public class AppendBugReportField extends ComponentsRepositoryPass<BugReport> {
);
Global.mainModule.getPass(PassCode.Email).Do(
message,
server.db.subscribers.checkRecipients(target.getRecipients())
Global.componentsServer.db.subscribers.checkRecipients(target.getRecipients())
);
}
}

View File

@@ -8,7 +8,7 @@ public class CheckRegistrationOnServer extends ComponentsRepositoryPass<Subscrib
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.CheckSubscriberRole, "", Global.mainModule.getAccount()));
target = (Subscriber) response.object;
target = (Subscriber) server_response.object;
Global.mainModule.getAccount().role = target.role;
}
}

View File

@@ -20,6 +20,6 @@ public class CheckRemoteWorkspace extends ComponentsRepositoryPass<SubscriberWor
String login = MainModule_.instance.getDb().getTable(User.class).getUI().getCurrent().login;
Command(new ServerExchangeUnit_2021(ServerCode.CheckURLRegistered,
email + "\n" + machineURL + "\n" + login));
target = (SubscriberWorkspace) response.object;
target = (SubscriberWorkspace) server_response.object;
}
}

View File

@@ -100,9 +100,9 @@ public class DVMConvertProject extends ComponentsRepositoryPass<db_project_info>
unit_args.addAll(programsNames);
unit.arg = String.join("\n", unit_args);
Command(unit);
output = response.arg;
output = server_response.arg;
versionArchive = new File(workspace, target.name + "_result.zip");
response.Unpack(versionArchive);
server_response.Unpack(versionArchive);
File result = new File(workspace, "result");
if (Global.mainModule.getPass(PassCode.UnzipFolderPass).Do(versionArchive.getAbsolutePath(), result.getAbsolutePath())) {
if (target.last_modification == null) {

View File

@@ -32,7 +32,7 @@ public class DownloadAllBugReportsArchives extends ComponentsRepositoryPass<File
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveAllArchives));
response.Unpack(target = Utils.getTempFileName("bugs"));
server_response.Unpack(target = Utils.getTempFileName("bugs"));
}
@Override
protected boolean validate() {

View File

@@ -18,7 +18,7 @@ public class DownloadBugReport extends ComponentsRepositoryPass<BugReport> {
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveBugReport, target.id));
Utils_.bytesToFile((byte[]) response.object, target.getArchiveFile());
Utils_.bytesToFile((byte[]) server_response.object, target.getArchiveFile());
}
@Override
protected boolean validate() {

View File

@@ -11,6 +11,6 @@ public class DownloadComponent extends ComponentsRepositoryPass<Component> {
target = Global.components.getUI().getCurrent();
String packed = target.getComponentType() + "\n" + target.getFileName();
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveComponent, packed));
Utils_.bytesToFile((byte[]) response.object, target.getNewFile());
Utils_.bytesToFile((byte[]) server_response.object, target.getNewFile());
}
}

View File

@@ -45,7 +45,7 @@ public class DownloadDVMPackages extends Pass<Vector<Integer>> {
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.DownloadDVMPackages, "", target));
packed_packages = (Vector<Pair<Integer, Pair<byte[], byte[]>>>) response.object;
packed_packages = (Vector<Pair<Integer, Pair<byte[], byte[]>>>) server_response.object;
}
};
if (!pass.Do(target)) {

View File

@@ -38,7 +38,7 @@ public class DownloadSapforPackage extends Pass<SapforPackage> {
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.DownloadSapforPackage, "", id));
packed = (byte[]) response.object;
packed = (byte[]) server_response.object;
}
};
return pass.Do();

View File

@@ -37,7 +37,7 @@ public class DownloadTest extends TestingSystemPass<Test> {
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.DownloadTest, String.valueOf(target.id)));
response.Unpack(target.getArchive());
server_response.Unpack(target.getArchive());
}
@Override
protected boolean validate() {

View File

@@ -23,13 +23,13 @@ public class GetComponentsActualVersions extends ComponentsRepositoryPass {
for (Component component : Global.components.Data.values())
versions.add(component.getComponentType().toString());
Command(new ServerExchangeUnit_2021(ServerCode.GetComponentsVersions, String.join("\n", versions)));
LinkedHashMap<ComponentType, String> response_actual_versions = (LinkedHashMap<ComponentType, String>) response.object;
LinkedHashMap<ComponentType, String> response_actual_versions = (LinkedHashMap<ComponentType, String>) server_response.object;
for (ComponentType componentType : response_actual_versions.keySet()) {
Global.components.get(componentType).unpackActualVersion(response_actual_versions.get(componentType));
}
//-- получить актуальные версии с сервера.
Command(new ServerExchangeUnit_2021(ServerCode.GetComponentsMinimalVersions, String.join("\n", versions)));
LinkedHashMap<ComponentType, String> response_minimal_versions = (LinkedHashMap<ComponentType, String>) response.object;
LinkedHashMap<ComponentType, String> response_minimal_versions = (LinkedHashMap<ComponentType, String>) server_response.object;
for (ComponentType componentType : response_minimal_versions.keySet()) {
Global.components.get(componentType).unpackMinimalVersion(response_minimal_versions.get(componentType));
}

View File

@@ -16,7 +16,7 @@ public class GetComponentsBackupsFromServer extends ComponentsRepositoryPass<Vec
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.GetComponentsBackups,
Global.components.getUI().getCurrent().getComponentType().toString()));
target = (Vector<File>) response.object;
target = (Vector<File>) server_response.object;
}
@Override
protected boolean validate() {

View File

@@ -99,7 +99,7 @@ public class ResurrectComponentFromServer extends CurrentComponentPass {
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveFile, remoteFile.full_name));
localFile = Utils.getTempFileName(remoteFile.name);
response.Unpack(localFile);
server_response.Unpack(localFile);
}
};
if (!receivePass.Do())

View File

@@ -37,7 +37,7 @@ public class ShowComponentChangesLog extends ComponentsRepositoryPass<Component>
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.GetComponentChangesLog, target.getComponentType().toString()));
Utils_.bytesToFile((byte[]) response.object, res);
Utils_.bytesToFile((byte[]) server_response.object, res);
}
@Override
protected boolean validate() {

View File

@@ -24,8 +24,8 @@ public class ShowTestingServerFile extends TestingSystemPass<RemoteFile> {
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveFile, target.full_name));
localFile = Utils.getTempFileName(target.name);
if (response.object != null)
response.Unpack(localFile);
if (server_response.object != null)
server_response.Unpack(localFile);
else throw new PassException("Файл не найден");
}
@Override

View File

@@ -33,7 +33,7 @@ public class SynchronizeBugReports extends ComponentsRepositoryPass<Object> {
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveBugReportsDatabase));
response.Unpack(new_db_file = Utils.getTempFileName("bdb"));
server_response.Unpack(new_db_file = Utils.getTempFileName("bdb"));
}
@Override
protected void performDone() throws Exception {

View File

@@ -51,7 +51,7 @@ public class SynchronizeTests extends TestingSystemPass<Object> {
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveTestsDatabase));
response.Unpack(new_db_file = Utils.getTempFileName("tdb"));
server_response.Unpack(new_db_file = Utils.getTempFileName("tdb"));
}
@Override
protected void performDone() throws Exception {

View File

@@ -62,7 +62,7 @@ public class UpdateBugReportField extends ComponentsRepositoryPass<BugReport> {
//последнюю версию этого баг репорта.
//все это должно быть в рамках одной транзакции с сервером!
Command(new ServerExchangeUnit_2021(ServerCode.GetObjectCopyByPK, "", new Pair<>(BugReport.class, target.id)));
target.SynchronizeFields((BugReport) response.object);
target.SynchronizeFields((BugReport) server_response.object);
for (int i = 0; i < fieldNames.size(); ++i) {
String fieldName = fieldNames.get(i);
switch (fieldName) {

View File

@@ -0,0 +1,6 @@
package _VisualDVM.Passes.Server;
import Common.Passes.Pass;
import _VisualDVM.Repository.RepositoryServer;
public abstract class ClientPass <S extends RepositoryServer,T> extends Pass<T> {
protected abstract S getServer();
}

View File

@@ -39,7 +39,7 @@ public class PublishServerObject<S extends RepositoryServer, D extends DBObject>
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.PublishObject, getEmail(), target));
pk = response.object;
pk = server_response.object;
}
@Override
protected void showDone() throws Exception {

View File

@@ -21,8 +21,8 @@ public abstract class RepositoryPass<S extends RepositoryServer, T> extends Pass
protected ObjectInputStream in = null; // поток чтения из сокета
protected ObjectOutputStream out = null; // поток записи в сокет
//-
protected ServerExchangeUnit_2021 request;
protected ServerExchangeUnit_2021 response;
protected ServerExchangeUnit_2021 client_request;
protected ServerExchangeUnit_2021 server_response;
//-
protected Socket clientSocket = null; //сокет для общения
protected ServerCode ExitCode = ServerCode.Undefined;
@@ -60,12 +60,12 @@ public abstract class RepositoryPass<S extends RepositoryServer, T> extends Pass
protected abstract void ServerAction() throws Exception;
protected void Command(ServerExchangeUnit_2021 request_in) throws Exception {
ExitCode = ServerCode.Undefined;
request = request_in;
out.writeObject(request);
response = (ServerExchangeUnit_2021) in.readObject();
switch (ExitCode = response.getCode()) {
client_request = request_in;
out.writeObject(client_request);
server_response = (ServerExchangeUnit_2021) in.readObject();
switch (ExitCode = server_response.getCode()) {
case FAIL:
throw (Exception) response.object;
throw (Exception) server_response.object;
case OLD:
throw new PassException("Сервер устарел.");
default:
@@ -77,12 +77,12 @@ public abstract class RepositoryPass<S extends RepositoryServer, T> extends Pass
}
protected void ReceiveFile(String src, File dst) throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveFile, src));
if (response.object != null)
response.Unpack(dst);
if (server_response.object != null)
server_response.Unpack(dst);
}
protected String ReadFile(String src) throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReadFile, src));
return response.object.toString();
return server_response.object.toString();
}
@Override
protected void body() throws Exception {

View File

@@ -37,7 +37,7 @@ public abstract class ActualizeTestingPackages<P extends TestingPackage> extends
}
@Override
protected void performDone() throws Exception {
Vector<P> res = (Vector<P>) response.object;
Vector<P> res = (Vector<P>) server_response.object;
Global.testingServer.db.BeginTransaction();
for (P actual : res)
Global.testingServer.db.UpdateWithCheck(actual);