рефакторинг публикации компонентов

This commit is contained in:
2025-02-03 23:04:40 +03:00
parent 458e250b5c
commit 26434b21ab
11 changed files with 192 additions and 85 deletions

View File

@@ -21,7 +21,6 @@ public abstract class Component extends DBObject implements Loggable {
//--
public String code = "";
public String actual_code = "";
public boolean needs_update_minimal_version = false;
VFileChooser fileChooser = null; ///для ручной установки.
private ComponentState state;
public abstract ComponentType getComponentType();

View File

@@ -0,0 +1,27 @@
package _VisualDVM.Repository.Component.Json;
import Common.Utils.Utils_;
import _VisualDVM.Repository.Component.Component;
import _VisualDVM.Repository.Component.ComponentType;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
public class ComponentPublicationInfoJson implements Serializable {
@Expose
public ComponentType componentType = ComponentType.Undefined;
@Expose
public String fileName = "";
@Expose
public byte[] packedFile = null;
@Expose
public String versionText = "";
@Expose
public String changeRecord = "";
@Expose
public boolean needsUpdateMinimalVersion = false;
public ComponentPublicationInfoJson(Component component) throws Exception{
componentType = component.getComponentType();
fileName = component.getFileName();
packedFile = Utils_.fileToBytes(component.getFile());
versionText = component.getVersionText();
}
}

View File

@@ -370,37 +370,12 @@ public abstract class RepositoryServer<D extends Database> {
public void Ping() {
response = new ServerExchangeUnit_2021(ServerCode.OK);
}
//---команды со стороны клиента.
public Object ClientRequest(ServerCode code_in, String arg_in, Serializable object_in, int delay) throws Exception {
RepositoryPass pass = new RepositoryPass(this) {
@Override
public String getDescription() {
return code_in.getDescription();
}
@Override
protected int getTimeout() {
return delay;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(code_in, arg_in,object_in));
target = server_response.object;
}
@Override
protected boolean validate() {
return Log.isEmpty();
}
};
if (pass.Do())
return pass.target;
throw new PassException(Utils_.Brackets(new Date().toString()) + " Ошибка взаимодействия с сервером " + code_in);
}
public Object ClientRequest(ServerCode code_in,String arg_in, Serializable object_in)throws Exception {
return ClientRequest(code_in,arg_in,object_in, Global.properties.SocketTimeout);
}
//---
/*
public <T extends DBObject> T getActual(T object_in, Class<T> object_class)throws Exception{
return (T) ClientRequest(ServerCode.GetObjectCopyByPK, "",
new Pair<>(object_class, object_in.getPK()));
}
*/
}

View File

@@ -17,6 +17,7 @@ import _VisualDVM.Repository.BugReport.BugReport;
import _VisualDVM.Repository.BugReport.Json.BugReportAdditionJson;
import _VisualDVM.Repository.BugReportsDatabase;
import _VisualDVM.Repository.Component.ComponentType;
import _VisualDVM.Repository.Component.Json.ComponentPublicationInfoJson;
import _VisualDVM.Repository.Component.Json.ComponentVersionsInfoJson;
import _VisualDVM.Repository.EmailMessage;
import _VisualDVM.Repository.RepositoryServer;
@@ -238,7 +239,10 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
response.object = new Vector<>();
}
break;
case PublishComponent:
case UpdateComponent:
UpdateComponent();
break;
case PublishComponent: //todo устарело.
String[] packed = request.arg.split("\n");
String sComponentType = packed[0];
String componentFileName = packed[1];
@@ -280,7 +284,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
//-
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
case UpdateComponentMinimalVersion:
case UpdateComponentMinimalVersion: //todo устарело
String[] packed_ = request.arg.split("\n");
String sComponentType_ = packed_[0];
String sComponentMinimalVersion = packed_[1];
@@ -452,4 +456,51 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
protected void startAdditionalThreads() {
backUp.start();
}
//-
private void UpdateComponent() throws Exception {
ComponentPublicationInfoJson info = (ComponentPublicationInfoJson) request.object;
Print("Опубликовать компонент " + info.componentType);
File componentHome = Utils_.getFile(Utils_.getHomePath(),"Components", info.componentType.toString());
File componentFile =new File(componentHome, info.fileName);
File versionFile = new File(componentHome, "version.txt");
File backupsFolder = new File(componentHome, "Backups");
//0 архивация старой версии, если она есть.
if (componentFile.exists()) {
String versionText = "";
if (versionFile.exists())
versionText = Utils.ReadAllText(versionFile);
//---->>
Utils_.CheckDirectory(backupsFolder);
Utils.keepNewFiles(backupsFolder, Global.componentsServerProperties.ComponentsBackUpsCount);
//-->>
File backupFile = new File(backupsFolder, info.componentType + "_" + versionText);
if (backupFile.exists())
Utils_.forceDeleteWithCheck(backupFile);
FileUtils.moveFile(componentFile, backupFile);
}
//1 распаковка компонента
Utils_.bytesToFile((byte[]) info.packedFile, componentFile);
//2 запись версии компонента
FileUtils.writeStringToFile(versionFile, info.versionText);
//3 запись в журнал компонента
File changesLog = new File(componentHome, "changes.txt");
FileWriter writer = new FileWriter(changesLog.getAbsolutePath(), true);
BufferedWriter bufferWriter = new BufferedWriter(writer);
bufferWriter.write(info.changeRecord);
bufferWriter.close();
//-
if (info.needsUpdateMinimalVersion){
Print("Поднять минимальную версию компонента " + info.componentType);
File minimal_versionFile = new File(componentHome, "minimal_version.txt");
FileUtils.writeStringToFile(minimal_versionFile, info.versionText);
//-
//3 запись в журнал компонента
FileWriter writer_ = new FileWriter(changesLog, true);
BufferedWriter bufferWriter_ = new BufferedWriter(writer_);
bufferWriter_.write("Минимальная версия поднята до " + info.versionText + "\n");
bufferWriter_.close();
}
//-
response = new ServerExchangeUnit_2021(ServerCode.OK);
}
}

View File

@@ -41,7 +41,8 @@ public enum ServerCode {
ReceiveBugReportsDatabase,
ReceiveTestsDatabase,
ReceiveTestsTasksDatabase,
PublishComponent,
PublishComponent, //todo удалить устарел
UpdateComponent,
UpdateComponentMinimalVersion, //возможно потом, слить воедино с публикацией?
ReceiveComponent,
ReceiveBugReport,
@@ -96,6 +97,10 @@ public enum ServerCode {
switch (this){
case GetComponentsVersionsInfo:
return "Получить версии компонент";
case UpdateComponent:
return "Опубликовать компонент";
case UpdateComponentMinimalVersion:
return "Поднять минимальную версию компонента";
default:
return this.toString();
}