промежуточный. кусок рефакторинга на тему борьбы с зависаниями. пока не внедрен
This commit is contained in:
@@ -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())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
6
src/_VisualDVM/Passes/Server/ClientPass.java
Normal file
6
src/_VisualDVM/Passes/Server/ClientPass.java
Normal 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();
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user