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

This commit is contained in:
2025-02-13 20:27:01 +03:00
parent 91f4ed4a17
commit 54ec1fee99
13 changed files with 319 additions and 490 deletions

19
.idea/workspace.xml generated
View File

@@ -7,18 +7,19 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerRequestUnit.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Visual/Tables/DataTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/Tables/DataTable.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Global.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Global.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/NormalProperties.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/NormalProperties.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/PublishComponent.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/PublishComponent.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/BugReport/BugReport.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/BugReport/BugReport.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/Test/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/Test/Test.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/RepositoryServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/RepositoryServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforPackage_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforPackage_json.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ComponentsServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ComponentsServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforTestingSet_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforTestingSet_json.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforConfiguration/SapforConfiguration.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforConfiguration/SapforConfiguration.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Menus/MainMenuBar/SynchronizationSettingsMenu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Menus/MainMenuBar/SynchronizationSettingsMenu.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTask/SapforTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTask/SapforTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Menus/MainMenuBar/MainMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Menus/MainMenuBar/MainMenuBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/TestingForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/TestingForm.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -6,7 +6,6 @@
"Visualizer_2Path": "C:\\Users\\misha\\Documents", "Visualizer_2Path": "C:\\Users\\misha\\Documents",
"InstructionPath": "C:\\Users\\misha\\Documents", "InstructionPath": "C:\\Users\\misha\\Documents",
"PerformanceAnalyzerPath": "C:\\Users\\misha\\Documents", "PerformanceAnalyzerPath": "C:\\Users\\misha\\Documents",
"AutoUpdateSearch": true,
"AutoBugReportsLoad": true, "AutoBugReportsLoad": true,
"AutoTestsLoad": true, "AutoTestsLoad": true,
"ConfirmPassesStart": true, "ConfirmPassesStart": true,

View File

@@ -93,6 +93,7 @@ public class Constants {
"killed by signal", "killed by signal",
"bad termination" "bad termination"
}; };
public final static String separator = "----------------------------------";
//------------------------------------------------------- //-------------------------------------------------------
public static String[] resourses_names = new String[]{ public static String[] resourses_names = new String[]{
//-- //--

View File

@@ -171,8 +171,7 @@ public class Global {
messagesServer.Start(); messagesServer.Start();
components = new ComponentsSet(); components = new ComponentsSet();
components.initialVersionsCheck(); components.initialVersionsCheck();
//-------->> //-------->> AutoUpdateSearch
if (normalProperties.AutoUpdateSearch)
Global.mainModule.getPass(PassCode.GetComponentsActualVersions).Do(); Global.mainModule.getPass(PassCode.GetComponentsActualVersions).Do();
components.validateStates(); components.validateStates();
if (components.needChanges()) { if (components.needChanges()) {

View File

@@ -23,8 +23,6 @@ public class NormalProperties extends VisualDVMProperties{
public String PerformanceAnalyzerPath = ""; public String PerformanceAnalyzerPath = "";
//--- //---
@Expose @Expose
public boolean AutoUpdateSearch = true;
@Expose
public boolean AutoBugReportsLoad = true; public boolean AutoBugReportsLoad = true;
@Expose @Expose
public boolean AutoTestsLoad = true; public boolean AutoTestsLoad = true;
@@ -153,8 +151,6 @@ public class NormalProperties extends VisualDVMProperties{
return "Свернуть раздел сообщений файла"; return "Свернуть раздел сообщений файла";
case "collapseProjectTrees": case "collapseProjectTrees":
return "Свернуть раздел деревьев проекта"; return "Свернуть раздел деревьев проекта";
case "AutoUpdateSearch":
return "Автоматический поиск обновлений";
default: default:
return "?"; return "?";
} }

View File

@@ -1,5 +1,6 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.GlobalData.Account.AccountRole; import _VisualDVM.GlobalData.Account.AccountRole;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
@@ -9,7 +10,6 @@ import _VisualDVM.Repository.Component.ComponentType;
import _VisualDVM.Repository.Component.Json.ComponentPublicationInfoJson; import _VisualDVM.Repository.Component.Json.ComponentPublicationInfoJson;
import _VisualDVM.Repository.Component.UI.PublishForm; import _VisualDVM.Repository.Component.UI.PublishForm;
import _VisualDVM.Repository.EmailMessage; import _VisualDVM.Repository.EmailMessage;
import _VisualDVM.Repository.RepositoryServer;
import _VisualDVM.Repository.Server.ServerCode; import _VisualDVM.Repository.Server.ServerCode;
import java.util.Date; import java.util.Date;
@@ -59,7 +59,7 @@ public class PublishComponent extends ComponentsServerPass<Component> {
); );
String change_record = String.join("\n", change_record_header, "Изменения:", String change_record = String.join("\n", change_record_header, "Изменения:",
change_description, change_description,
RepositoryServer.separator, "" Constants.separator, ""
); );
//-- //--
ComponentPublicationInfoJson info=new ComponentPublicationInfoJson(target); ComponentPublicationInfoJson info=new ComponentPublicationInfoJson(target);

View File

@@ -4,6 +4,7 @@ import Common.Database.Objects.rDBObject;
import Common.Utils.TextLog; import Common.Utils.TextLog;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Utils.Vector_; import Common.Utils.Vector_;
import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.GlobalData.Account.Account; import _VisualDVM.GlobalData.Account.Account;
import _VisualDVM.ProjectData.SapforData.SapforProperties; import _VisualDVM.ProjectData.SapforData.SapforProperties;
@@ -11,7 +12,6 @@ import _VisualDVM.Repository.BugReport.Json.RecipientJson;
import _VisualDVM.Repository.BugReport.Json.RecipientsJson; import _VisualDVM.Repository.BugReport.Json.RecipientsJson;
import _VisualDVM.Repository.BugReport.Json.VisualiserSettingsJson; import _VisualDVM.Repository.BugReport.Json.VisualiserSettingsJson;
import _VisualDVM.Repository.Component.ComponentType; import _VisualDVM.Repository.Component.ComponentType;
import _VisualDVM.Repository.RepositoryServer;
import _VisualDVM.Repository.Subscribes.Subscriber; import _VisualDVM.Repository.Subscribes.Subscriber;
import com.sun.org.glassfish.gmbal.Description; import com.sun.org.glassfish.gmbal.Description;
@@ -143,13 +143,13 @@ public class BugReport extends rDBObject {
} }
public String getPassport() { public String getPassport() {
return String.join("\n", return String.join("\n",
RepositoryServer.separator, Constants.separator,
"Отправитель: " + sender_name, "Отправитель: " + sender_name,
"Исполнитель: " + executor, "Исполнитель: " + executor,
"Проект: " + project_version, "Проект: " + project_version,
RepositoryServer.separator, Constants.separator,
getSettingsSummary(), getSettingsSummary(),
RepositoryServer.separator); Constants.separator);
} }
public boolean isNoneProject() { public boolean isNoneProject() {
return project_version.isEmpty(); return project_version.isEmpty();

View File

@@ -3,6 +3,7 @@ import Common.Utils.Utils_;
import _VisualDVM.Constants; import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
import _VisualDVM.Repository.Server.ServerRequestUnit;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -62,7 +63,7 @@ public class Visualiser extends Component {
//http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html //http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
@Override @Override
public void GetVersionInfo() { public void GetVersionInfo() {
version = 1163; version = ServerRequestUnit.version;
String pattern = "MMM dd yyyy HH:mm:ss"; String pattern = "MMM dd yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH); DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
date_text = df.format(getClassBuildTime()); date_text = df.format(getClassBuildTime());

View File

@@ -29,9 +29,10 @@ import java.util.LinkedHashMap;
import java.util.Properties; import java.util.Properties;
import java.util.Vector; import java.util.Vector;
public abstract class RepositoryServer<D extends Database> { public abstract class RepositoryServer<D extends Database> {
public final static String separator = "----------------------------------";
protected static FileWriter Log; protected static FileWriter Log;
protected static boolean printOn = true; protected static boolean printOn = true;
public abstract String getServerFileName();
public abstract String getServerHomeName();
//- //-
public D db; public D db;
protected Socket clientSocket; //сокет для общения protected Socket clientSocket; //сокет для общения
@@ -159,12 +160,6 @@ public abstract class RepositoryServer<D extends Database> {
public void StartAction() throws Exception { public void StartAction() throws Exception {
} }
public void Start() throws Exception { public void Start() throws Exception {
/*
File started = new File(Constants.STARTED);
if (started.exists())
FileUtils.forceDelete(started);
Utils.createEmptyFile(Constants.STARTED);
*/
DiagnosticSignalHandler.install("TERM", signalHandler); DiagnosticSignalHandler.install("TERM", signalHandler);
DiagnosticSignalHandler.install("INT", signalHandler); DiagnosticSignalHandler.install("INT", signalHandler);
DiagnosticSignalHandler.install("ABRT", signalHandler); DiagnosticSignalHandler.install("ABRT", signalHandler);
@@ -192,64 +187,31 @@ public abstract class RepositoryServer<D extends Database> {
Print("клиент_2021: <- " + (request.codeName)); Print("клиент_2021: <- " + (request.codeName));
try { try {
code = request.getCode(); code = request.getCode();
//базовый функционал. response = new ServerExchangeUnit_2021(ServerCode.OK);
switch (code) { switch (code) {
//<editor-fold desc="файлы и почта"> case Ping:
Ping();
break;
case ReadFile: case ReadFile:
Print("Отправить клиенту текст файла по пути " + Utils_.Brackets(request.arg)); ReadFile();
response = new ServerExchangeUnit_2021(ServerCode.OK, "", Utils.ReadAllText(new File(request.arg)));
break; break;
case SendFile: case SendFile:
//нам пришел файл. SendFile();
Print("Получить от клиента файл, и распаковать его по пути " + Utils_.Brackets(request.arg));
request.Unpack(); //распаковка идет по его аргу-пути назначения
response = new ServerExchangeUnit_2021(ServerCode.OK);
break; break;
case ReceiveFile: case ReceiveFile:
Print("Отправить клиенту файл по пути " + Utils_.Brackets(request.arg)); ReceiveFile();
response = new ServerExchangeUnit_2021(ServerCode.OK);
File file = new File(request.arg);
response.object = file.exists() ? Utils_.fileToBytes(file) : null;
break; break;
case Email: case Email:
Print("Отправка сообщения электронной почты"); Email();
Email((EmailMessage) request.object, request.arg);
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
//</editor-fold>
//<editor-fold desc="Главная база данных">
case CheckObjectExistense:
p = (Pair<Class, Object>) request.object;
Print("Проверить существование объекта класса " + p.getKey().toString() + " с ключом " + p.getValue());
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = db.checkObjectExistense(p.getKey(), p.getValue());
break; break;
case EditObject: case EditObject:
DBObject new_object = (DBObject) request.object; EditObject();
Print("Редактировать объект " + new_object.getPK());
db.UpdateWithCheck(new_object);
afterEditAction(new_object);
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
case DeleteObject: //устарело. потом убрать. сейчас на это баг репорты повязаны.
dbObject = (DBObject) request.object;
Print("Удалить объект " + dbObject.getPK());
db.DeleteWithCheck(dbObject);
afterDeleteAction(dbObject);
response = new ServerExchangeUnit_2021(ServerCode.OK);
break; break;
case GetObjectCopyByPK: case GetObjectCopyByPK:
p = (Pair<Class, Object>) request.object; GetObjectCopyByPK();
Print("Получить копию объекта класса " + p.getKey().toString() + " по ключу " + p.getValue());
dbObject = db.getObjectCopyByPK(p.getKey(), p.getValue());
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = dbObject;
break; break;
case GetObjectsCopiesByPK: case GetObjectsCopiesByPK:
Print("Получить список копий объектов по ключам"); GetObjectsCopiesByPK();
p = (Pair<Class, Object>) request.object;
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = db.getObjectsCopies(p.getKey(), (Vector<Object>) p.getValue());
break; break;
case PublishObject: case PublishObject:
PublishObject(); PublishObject();
@@ -266,15 +228,6 @@ public abstract class RepositoryServer<D extends Database> {
case CloneObjectByPK: case CloneObjectByPK:
CloneObject(); CloneObject();
break; break;
//</editor-fold>
case EXIT:
Print("ЗАВЕРШИТЬ РАБОТУ СЕРВЕРА");
System.exit(0);
break;
case Ping:
Print("Проверка активности сервера");
Ping();
break;
default: default:
Session(); Session();
break; break;
@@ -317,78 +270,7 @@ public abstract class RepositoryServer<D extends Database> {
} }
} }
//-- //--
protected Database getDefaultDatabase() { void Ping() {}
return db;
}
//--
private void PublishObject() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK);
DBObject dbObject = (DBObject) request.object;
beforePublishAction(dbObject);
response.object = (Serializable) getDefaultDatabase().InsertS(dbObject).getPK();
afterPublishAction(dbObject);
}
private void PublishObjects() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK);
Vector<DBObject> objects = (Vector<DBObject>) request.object;
Database database = getDefaultDatabase();
for (DBObject dbObject : objects) {
beforePublishAction(dbObject);
response.object = (Serializable) database.InsertS(dbObject).getPK();
afterPublishAction(dbObject);
}
}
private void CloneObject() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK);
Print("Дублировать объект по ключу");
Pair<Class, Object> to_clone = (Pair<Class, Object>) request.object;
Object pk = to_clone.getValue();
if (db.getTable(to_clone.getKey()).containsKey(to_clone.getValue())) {
riDBObject src = (riDBObject) db.getTable(to_clone.getKey()).get(to_clone.getValue());
riDBObject dst = (riDBObject) to_clone.getKey().newInstance();
dst.SynchronizeFields(src);
//единственное отличие клона - текущий автор
dst.description += " копия";
String[] packed = request.arg.split("\n");
dst.sender_name = packed[0];
dst.sender_address = packed[1];
db.Insert(dst);
afterCloneAction(src, dst);
response.object = (Serializable) dst.getPK();
}
}
protected void afterCloneAction(riDBObject src, riDBObject dst) throws Exception {
}
protected void beforePublishAction(DBObject object) throws Exception {
}
protected void afterPublishAction(DBObject object) throws Exception {
}
protected void afterEditAction(DBObject object) throws Exception {
}
//------------------------------
private void DeleteObjectByPK() throws Exception {
Print("Удалить объект по ключу");
Pair<Class, Object> to_delete = (Pair<Class, Object>) request.object;
afterDeleteAction(getDefaultDatabase().DeleteByPK(to_delete.getKey(), to_delete.getValue()));
response = new ServerExchangeUnit_2021(ServerCode.OK);
}
private void DeleteObjectsByPK() throws Exception {
Print("Удалить объекты по ключам");
Pair<Class, Vector<Object>> to_delete = (Pair<Class, Vector<Object>>) request.object;
Database database = getDefaultDatabase();
for (Object object : to_delete.getValue()) {
afterDeleteAction(database.DeleteByPK(to_delete.getKey(), object));
}
response = new ServerExchangeUnit_2021(ServerCode.OK);
}
public void afterDeleteAction(DBObject object) throws Exception {
}
public void Ping() {
response = new ServerExchangeUnit_2021(ServerCode.OK);
}
//--
public abstract String getServerFileName();
public abstract String getServerHomeName();
public boolean PingFromClient() { public boolean PingFromClient() {
RepositoryPass pingPass = new RepositoryPass(this) { RepositoryPass pingPass = new RepositoryPass(this) {
boolean success; boolean success;
@@ -429,4 +311,83 @@ public abstract class RepositoryServer<D extends Database> {
}; };
return pingPass.Do(); return pingPass.Do();
} }
void ReadFile() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK, "", Utils.ReadAllText(new File(request.arg)));
}
void ReceiveFile() throws Exception {
File file = new File(request.arg);
response.object = file.exists() ? Utils_.fileToBytes(file) : null;
}
void SendFile() throws Exception {
request.Unpack(); //распаковка идет по его аргу-пути назначения
}
void Email() throws Exception {
Email((EmailMessage) request.object, request.arg);
}
//----
void PublishObject() throws Exception {
DBObject dbObject = (DBObject) request.object;
beforePublishAction(dbObject);
response.object = (Serializable) db.InsertS(dbObject).getPK();
afterPublishAction(dbObject);
}
void PublishObjects() throws Exception {
Vector<DBObject> objects = (Vector<DBObject>) request.object;
for (DBObject dbObject : objects) {
beforePublishAction(dbObject);
response.object = (Serializable) db.InsertS(dbObject).getPK();
afterPublishAction(dbObject);
}
}
void CloneObject() throws Exception {
Pair<Class, Object> to_clone = (Pair<Class, Object>) request.object;
Object pk = to_clone.getValue();
if (db.getTable(to_clone.getKey()).containsKey(to_clone.getValue())) {
riDBObject src = (riDBObject) db.getTable(to_clone.getKey()).get(to_clone.getValue());
riDBObject dst = (riDBObject) to_clone.getKey().newInstance();
dst.SynchronizeFields(src);
//единственное отличие клона - текущий автор
dst.description += " копия";
String[] packed = request.arg.split("\n");
dst.sender_name = packed[0];
dst.sender_address = packed[1];
db.Insert(dst);
afterCloneAction(src, dst);
response.object = (Serializable) dst.getPK();
}
}
void GetObjectCopyByPK() throws Exception {
Pair<Class, Object> p = (Pair<Class, Object>) request.object;
DBObject dbObject = db.getObjectCopyByPK(p.getKey(), p.getValue());
response.object = dbObject;
}
void GetObjectsCopiesByPK() throws Exception {
Pair<Class, Object> p = (Pair<Class, Object>) request.object;
response.object = db.getObjectsCopies(p.getKey(), (Vector<Object>) p.getValue());
}
void EditObject() throws Exception {
DBObject new_object = (DBObject) request.object;
db.UpdateWithCheck(new_object);
afterEditAction(new_object);
}
void DeleteObjectByPK() throws Exception {
Pair<Class, Object> to_delete = (Pair<Class, Object>) request.object;
afterDeleteAction(db.DeleteByPK(to_delete.getKey(), to_delete.getValue()));
}
void DeleteObjectsByPK() throws Exception {
Pair<Class, Vector<Object>> to_delete = (Pair<Class, Vector<Object>>) request.object;
for (Object object : to_delete.getValue()) {
afterDeleteAction(db.DeleteByPK(to_delete.getKey(), object));
}
}
protected void afterCloneAction(riDBObject src, riDBObject dst) throws Exception {
}
protected void beforePublishAction(DBObject object) throws Exception {
}
protected void afterPublishAction(DBObject object) throws Exception {
}
protected void afterEditAction(DBObject object) throws Exception {
}
protected void afterDeleteAction(DBObject object) throws Exception {
}
} }

View File

@@ -32,25 +32,22 @@ import java.io.FileWriter;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.*; import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;
public class ComponentsServer extends RepositoryServer<BugReportsDatabase> { public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
public static final String server_dvm_drv = "/home/DVM/dvm_current/dvm_sys/bin/dvm_drv"; public static final String server_dvm_drv = "/home/DVM/dvm_current/dvm_sys/bin/dvm_drv";
public static ZipFolderPass zip = new ZipFolderPass(); public static ZipFolderPass zip = new ZipFolderPass();
public static UnzipFolderPass unzip = new UnzipFolderPass(); public static UnzipFolderPass unzip = new UnzipFolderPass();
public static ArchivesBackupPass backupSession = new ArchivesBackupPass(); public static ArchivesBackupPass backupSession = new ArchivesBackupPass();
//- //-
public static Vector<Pair<Machine, User>> storages = public static Vector<Pair<Machine, User>> storages = new Vector<>(Arrays.asList(new Pair<>(new Machine("titan", "dvmh.keldysh.ru", 22, MachineType.Server), new User("dvmuser1", "mprit_2011"))
new Vector<>(Arrays.asList(
new Pair<>(
new Machine("titan", "dvmh.keldysh.ru", 22, MachineType.Server),
new User("dvmuser1", "mprit_2011"))
/* /*
new Pair<>( new Pair<>(
new Machine("k100", "k100.kiam.ru", 22, MachineType.Server), new Machine("k100", "k100.kiam.ru", 22, MachineType.Server),
new User("dvmuser1", "mprit_2011")) new User("dvmuser1", "mprit_2011"))
*/ */));
)
);
//- //-
protected Thread backUp = new Thread(() -> { protected Thread backUp = new Thread(() -> {
while (true) { while (true) {
@@ -82,17 +79,12 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
Utils_.forceDeleteWithCheck(todayBackUp); Utils_.forceDeleteWithCheck(todayBackUp);
//- //-
for (Pair<Machine, User> cred : storages) { for (Pair<Machine, User> cred : storages) {
backupSession.Do(cred.getKey(), cred.getValue(), backupSession.Do(cred.getKey(), cred.getValue(), todayBackUpArchive);
todayBackUpArchive
);
} }
//bonus backup //bonus backup
//todo оформить как у планировщика, так как это нить, напрямую сервер трогать нельзя. //todo оформить как у планировщика, так как это нить, напрямую сервер трогать нельзя.
if (rightNow.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) { if (rightNow.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
EmailMessage message = new EmailMessage( EmailMessage message = new EmailMessage("db backup", "копия баз данных журнала ошибок");
"db backup",
"копия баз данных журнала ошибок"
);
message.addAttachement(db.getFile()); message.addAttachement(db.getFile());
for (String address : Constants.admins_mails) { for (String address : Constants.admins_mails) {
Email(message, address); Email(message, address);
@@ -111,269 +103,44 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
super(BugReportsDatabase.class); super(BugReportsDatabase.class);
} }
@Override @Override
public String getServerFileName() {
return "VisualSapfor.jar";
}
@Override
public String getServerHomeName() {
return "_sapfor_x64";
}
@Override
public int getPort() { public int getPort() {
return Constants.ComponentsServerPort; return Constants.ComponentsServerPort;
} }
@Override @Override
protected void beforePublishAction(DBObject object) throws Exception { protected void beforePublishAction(DBObject object) throws Exception {
if (object instanceof BugReport){ if (object instanceof BugReport) {
BugReport bugReport = (BugReport) object; BugReport bugReport = (BugReport) object;
if (bugReport.packed_archive!=null) { if (bugReport.packed_archive != null) {
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", bugReport.id); File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", bugReport.id);
Utils_.bytesToFile(bugReport.packed_archive, bugArchive); Utils_.bytesToFile(bugReport.packed_archive, bugArchive);
} }
} }
} }
@Override @Override
public void afterDeleteAction(DBObject object) throws Exception { protected void afterDeleteAction(DBObject object) throws Exception {
if (object instanceof BugReport) { if (object instanceof BugReport) {
BugReport bugReport = (BugReport) object; BugReport bugReport = (BugReport) object;
if (!bugReport.project_version.isEmpty()) if (!bugReport.project_version.isEmpty()) Utils_.forceDeleteWithCheck(bugReport.getArchiveFile());
Utils_.forceDeleteWithCheck(bugReport.getArchiveFile());
} }
} }
@Override @Override
public void StartAction() throws Exception { public void StartAction() throws Exception {
if (Global.componentsServerProperties.EmailAdminsOnStart) { if (Global.componentsServerProperties.EmailAdminsOnStart) {
EmailMessage message = new EmailMessage( EmailMessage message = new EmailMessage("Сервер Sapfor запущен", new Date().toString());
"Сервер Sapfor запущен",
new Date().toString()
);
for (String address : Constants.admins_mails) { for (String address : Constants.admins_mails) {
Email(message, address); Email(message, address);
} }
} }
} }
@Override private void DVMConvertProject() throws Exception {
protected void Session() throws Exception {
BugReport bugReport = null;
Subscriber subscriber = null;
Account account = null;
switch (code) {
//<editor-fold desc="Регистрация">
case CheckSubscriberRole:
Print("Проверить роль пользователя");
response = new ServerExchangeUnit_2021(ServerCode.OK);
account = (Account) request.object;
if (db.subscribers.containsKey(account.email)) {
subscriber = db.subscribers.get(account.email);
} else {
subscriber = new Subscriber();
subscriber.name = account.name;
subscriber.address = account.email;
subscriber.mailOn = 1;
db.Insert(subscriber);
}
response.object = subscriber; //возвращаем информацию о подписчике.
break;
//</editor-fold>
//<editor-fold desc="БАГ РЕПОРТЫ">
case ReceiveAllArchives:
Print("Отправить клиенту архив всех архивов баг репортов");
response = new ServerExchangeUnit_2021(ServerCode.OK);
ZipFolderPass zip = new ZipFolderPass();
File archives = new File(Utils_.getDateName("Bugs"));
if (zip.Do("Bugs", archives.getAbsolutePath())) {
response.object = Utils_.fileToBytes(archives);
Print("Архив успешно запакован");
} else throw new RepositoryRefuseException("Не удалось запаковать архивы");
break;
case UpdateBugReport:
//-
BugReport oldBugReport = (BugReport) request.object;
Print("Обновить баг репорт " + oldBugReport.id);
if (db.bugReports.containsKey(oldBugReport.id)) {
bugReport = db.bugReports.get(oldBugReport.id);
bugReport.SynchronizeFields(oldBugReport);
bugReport.change_date = new Date().getTime();
db.Update(bugReport);
response = new ServerExchangeUnit_2021(ServerCode.OK);
} else
throw new RepositoryRefuseException("Баг репорт с ключом " + oldBugReport.id + " не существует.");
break;
//todo вывести устарело
case UpdateBugReportField:
//-
BugReport oldBugReport_ = (BugReport) request.object;
Print("Обновить поле " + request.arg + " баг репорта " + oldBugReport_.id);
if (db.bugReports.containsKey(oldBugReport_.id)) {
bugReport = db.bugReports.get(oldBugReport_.id);
Object newValue = BugReport.class.getField(request.arg).get(oldBugReport_);
BugReport.class.getField(request.arg).set(bugReport, newValue);
bugReport.change_date = oldBugReport_.change_date;
db.Update(bugReport);
response = new ServerExchangeUnit_2021(ServerCode.OK);
} else
throw new RepositoryRefuseException("Баг репорт с ключом " + oldBugReport_.id + " не существует.");
break;
//--
case AppendBugReportTextField:
AppendBugReportField();
break;
//--
case ReceiveBugReportsDatabase:
Print("Получить базу данных баг репортов");
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = Utils_.fileToBytes(db.getFile());
break;
case ReceiveBugReport:
Print("Скачать баг репорт по ключу " + request.arg);
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", request.arg);
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = Utils_.fileToBytes(bugArchive);
break;
case SendBugReport: //todo устарело
Print("Отправить баг репорт " + request.arg);
File bugArchive1 = Utils_.getFile(Utils_.getHomePath(), "Bugs", request.arg);
Utils_.bytesToFile((byte[]) request.object, bugArchive1);
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
//</editor-fold>
case GetComponentsBackups:
Print("Получить список сохраненных версий компонента " + request.arg);
File backupsDirectory = Paths.get(Utils_.getHomePath(), "Components", request.arg, "Backups").toFile();
//--
if (backupsDirectory.exists()) {
File[] files = backupsDirectory.listFiles(File::isFile);
if (files != null) {
response = new ServerExchangeUnit_2021(ServerCode.OK);
Vector<RemoteFile> res = new Vector<>();
for (File file : files)
res.add(new RemoteFile(file.getAbsolutePath(), false)); //тут всегда линух.
response.object = res;
} else
throw new RepositoryRefuseException("Не удалось получить список предыдущих версий");
} else {
//баги еще не создавались. штатная ситуация.
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = new Vector<>();
}
break;
case UpdateComponent:
UpdateComponent();
break;
case PublishComponent: //todo устарело.
String[] packed = request.arg.split("\n");
String sComponentType = packed[0];
String componentFileName = packed[1];
String sComponentVersion = packed[2];
String componentChangeRecord = request.arg.substring(
sComponentType.length() +
componentFileName.length() +
sComponentVersion.length() +
3
);
Print("Опубликовать компонент " + sComponentType);
File componentFile = Paths.get(Utils_.getHomePath(), "Components", sComponentType, componentFileName).toFile();
File versionFile = Paths.get(Utils_.getHomePath(), "Components", sComponentType, "version.txt").toFile();
File backupsFolder = Paths.get(Utils_.getHomePath(), "Components", sComponentType, "Backups").toFile();
//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, sComponentType + "_" + versionText);
if (backupFile.exists())
Utils_.forceDeleteWithCheck(backupFile);
FileUtils.moveFile(componentFile, backupFile);
}
//1 распаковка компонента
Utils_.bytesToFile((byte[]) request.object, componentFile);
//2 запись версии компонента
FileUtils.writeStringToFile(versionFile, sComponentVersion);
//3 запись в журнал компонента
File changesLog = Paths.get(Utils_.getHomePath(), "Components", sComponentType, "changes.txt").toFile();
FileWriter writer = new FileWriter(changesLog.getAbsolutePath(), true);
BufferedWriter bufferWriter = new BufferedWriter(writer);
bufferWriter.write(componentChangeRecord);
bufferWriter.close();
//-
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
case UpdateComponentMinimalVersion: //todo устарело
String[] packed_ = request.arg.split("\n");
String sComponentType_ = packed_[0];
String sComponentMinimalVersion = packed_[1];
Print("Поднять минимальную версию компонента " + sComponentType_);
File minimal_versionFile = Paths.get(Utils_.getHomePath(), "Components", sComponentType_, "minimal_version.txt").toFile();
FileUtils.writeStringToFile(minimal_versionFile, sComponentMinimalVersion);
//-
//3 запись в журнал компонента
File changesLog_ = Paths.get(Utils_.getHomePath(), "Components", sComponentType_, "changes.txt").toFile();
FileWriter writer_ = new FileWriter(changesLog_.getAbsolutePath(), true);
BufferedWriter bufferWriter_ = new BufferedWriter(writer_);
bufferWriter_.write("Минимальная версия поднята до " + sComponentMinimalVersion + "\n");
bufferWriter_.close();
//-
//-
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
case ReceiveComponent:
String[] packed1 = request.arg.split("\n");
//тип/имя файла
File componentFile1 = Paths.get(Utils_.getHomePath(), "Components", packed1[0], packed1[1]).toFile();
Print("Получить компонент " + packed1[0]);
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = Utils_.fileToBytes(componentFile1);
break;
default:
throw new RepositoryRefuseException("Неподдерживаемый код: " + code);
case GetComponentsVersions:
Print("Получить актуальные версии компонентов (NEW)");
String[] types = request.arg.split("\n");
LinkedHashMap<ComponentType, String> response_actual_versions_ = new LinkedHashMap<>();
for (String sType : types) {
ComponentType componentType = ComponentType.valueOf(sType);
File vFile = Paths.get(Utils_.getHomePath(), "Components", sType, "version.txt").toFile();
String v_string = Utils_.removeCharacters(
Utils.ReadAllText(vFile),
"\n", "\r"
);
response_actual_versions_.put(componentType, v_string);
}
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = response_actual_versions_;
break;
case GetComponentsMinimalVersions:
Print("Получить минимальные версии компонентов (NEW)");
String[] types_ = request.arg.split("\n");
LinkedHashMap<ComponentType, String> response_minimal_versions_ = new LinkedHashMap<>();
for (String sType : types_) {
ComponentType componentType = ComponentType.valueOf(sType);
File vFile = Paths.get(Utils_.getHomePath(), "Components", sType, "minimal_version.txt").toFile();
String mv_string = Utils_.removeCharacters(
Utils.ReadAllText(vFile),
"\n", "\r"
);
response_minimal_versions_.put(componentType, mv_string);
}
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = response_minimal_versions_;
break;
case GetComponentsVersionsInfo:
GetComponentsVersionsInfo();
break;
case GetComponentChangesLog:
Print("Получить журнал изменений компонента " + request.arg);
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = Utils_.fileToBytes(Paths.get(Utils_.getHomePath(), "Components", request.arg, "changes.txt").toFile());
break;
case CheckURLRegistered:
Print("Проверить учетную запись на машине");
String[] data = request.arg.split("\n");
String email = data[0];
String machineURL = data[1];
String login = data[2];
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = db.workspaces.findWorkspace(email, machineURL, login);
break;
case DVMConvertProject:
Print("Сконвертировать проект в DVM код");
response = new ServerExchangeUnit_2021(ServerCode.OK);
String[] args = request.arg.split("\n"); String[] args = request.arg.split("\n");
//- //-
String projectName = args[0]; String projectName = args[0];
@@ -392,23 +159,15 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
for (String fileName : filesNames) { for (String fileName : filesNames) {
File program = Paths.get(project.getAbsolutePath(), fileName).toFile(); File program = Paths.get(project.getAbsolutePath(), fileName).toFile();
//-- //--
File convertedProgram = Paths.get(program.getParent(), File convertedProgram = Paths.get(program.getParent(), Utils_.getFileNameWithoutExtension(program) + ".DVMH." + (projectLanguage.equals(LanguageName.fortran) ? "f" : "c")).toFile();
Utils_.getFileNameWithoutExtension(program) + ".DVMH." + String command = Utils_.DQuotes(server_dvm_drv) + " " + projectLanguage.getDVMCompile() + "dv " + options + " " + Utils_.DQuotes(program.getName());
(projectLanguage.equals(LanguageName.fortran) ? "f" : "c")
).toFile();
String command =
Utils_.DQuotes(server_dvm_drv) + " " +
projectLanguage.getDVMCompile() + "dv " +
options + " "
+ Utils_.DQuotes(program.getName());
//-- //--
File fileWorkspace = program.getParentFile(); File fileWorkspace = program.getParentFile();
Process process = Utils.startScript(workspace, fileWorkspace, Utils_.getDateName("convert_script"), command); Process process = Utils.startScript(workspace, fileWorkspace, Utils_.getDateName("convert_script"), command);
process.waitFor(); process.waitFor();
String convertationOut = Utils.readAllOutput(process); String convertationOut = Utils.readAllOutput(process);
convertationOut = convertationOut.replace(program.getName(), fileName); //для учета пути. convertationOut = convertationOut.replace(program.getName(), fileName); //для учета пути.
if (!convertationOut.isEmpty()) if (!convertationOut.isEmpty()) output += convertationOut + "\n";
output += convertationOut + "\n";
try { try {
if (convertedProgram.exists()) { if (convertedProgram.exists()) {
FileUtils.forceDelete(program); FileUtils.forceDelete(program);
@@ -423,15 +182,10 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
File resultArchive = new File(workspace, projectName + "_result.zip"); File resultArchive = new File(workspace, projectName + "_result.zip");
if (ComponentsServer.zip.Do(project.getAbsolutePath(), resultArchive.getAbsolutePath())) { if (ComponentsServer.zip.Do(project.getAbsolutePath(), resultArchive.getAbsolutePath())) {
response.object = Utils_.fileToBytes(resultArchive); response.object = Utils_.fileToBytes(resultArchive);
} else } else throw new RepositoryRefuseException("Внутренняя ошибка. Не удалось запаковать версию");
throw new RepositoryRefuseException("Внутренняя ошибка. Не удалось запаковать версию");
//-- //--
} else } else throw new RepositoryRefuseException("Внутренняя ошибка. Не удалось распаковать проект");
throw new RepositoryRefuseException("Внутренняя ошибка. Не удалось распаковать проект");
break;
} }
}
//---------------
private void GetComponentsVersionsInfo() throws Exception { private void GetComponentsVersionsInfo() throws Exception {
Print("Получить информацию о версиях компонент"); Print("Получить информацию о версиях компонент");
Vector<String> types = (Vector<String>) request.object; Vector<String> types = (Vector<String>) request.object;
@@ -459,8 +213,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
db.Update(actual); db.Update(actual);
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = actual; response.object = actual;
} else } else throw new RepositoryRefuseException("Баг репорт с ключом " + transport.id + " не существует.");
throw new RepositoryRefuseException("Баг репорт с ключом " + transport.id + " не существует.");
} }
@Override @Override
protected void startAdditionalThreads() { protected void startAdditionalThreads() {
@@ -470,22 +223,20 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
private void UpdateComponent() throws Exception { private void UpdateComponent() throws Exception {
ComponentPublicationInfoJson info = (ComponentPublicationInfoJson) request.object; ComponentPublicationInfoJson info = (ComponentPublicationInfoJson) request.object;
Print("Опубликовать компонент " + info.componentType); Print("Опубликовать компонент " + info.componentType);
File componentHome = Utils_.getFile(Utils_.getHomePath(),"Components", info.componentType.toString()); File componentHome = Utils_.getFile(Utils_.getHomePath(), "Components", info.componentType.toString());
File componentFile =new File(componentHome, info.fileName); File componentFile = new File(componentHome, info.fileName);
File versionFile = new File(componentHome, "version.txt"); File versionFile = new File(componentHome, "version.txt");
File backupsFolder = new File(componentHome, "Backups"); File backupsFolder = new File(componentHome, "Backups");
//0 архивация старой версии, если она есть. //0 архивация старой версии, если она есть.
if (componentFile.exists()) { if (componentFile.exists()) {
String versionText = ""; String versionText = "";
if (versionFile.exists()) if (versionFile.exists()) versionText = Utils.ReadAllText(versionFile);
versionText = Utils.ReadAllText(versionFile);
//---->> //---->>
Utils_.CheckDirectory(backupsFolder); Utils_.CheckDirectory(backupsFolder);
Utils.keepNewFiles(backupsFolder, Global.componentsServerProperties.ComponentsBackUpsCount); Utils.keepNewFiles(backupsFolder, Global.componentsServerProperties.ComponentsBackUpsCount);
//-->> //-->>
File backupFile = new File(backupsFolder, info.componentType + "_" + versionText); File backupFile = new File(backupsFolder, info.componentType + "_" + versionText);
if (backupFile.exists()) if (backupFile.exists()) Utils_.forceDeleteWithCheck(backupFile);
Utils_.forceDeleteWithCheck(backupFile);
FileUtils.moveFile(componentFile, backupFile); FileUtils.moveFile(componentFile, backupFile);
} }
//1 распаковка компонента //1 распаковка компонента
@@ -499,7 +250,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
bufferWriter.write(info.changeRecord); bufferWriter.write(info.changeRecord);
bufferWriter.close(); bufferWriter.close();
//- //-
if (info.needsUpdateMinimalVersion){ if (info.needsUpdateMinimalVersion) {
Print("Поднять минимальную версию компонента " + info.componentType); Print("Поднять минимальную версию компонента " + info.componentType);
File minimal_versionFile = new File(componentHome, "minimal_version.txt"); File minimal_versionFile = new File(componentHome, "minimal_version.txt");
FileUtils.writeStringToFile(minimal_versionFile, info.versionText); FileUtils.writeStringToFile(minimal_versionFile, info.versionText);
@@ -513,12 +264,122 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
//- //-
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
} }
@Override private void CheckSubscriberRole() throws Exception {
public String getServerFileName() { Account account = (Account) request.object;
return "VisualSapfor.jar"; Subscriber subscriber = null;
if (db.subscribers.containsKey(account.email)) {
subscriber = db.subscribers.get(account.email);
} else {
subscriber = new Subscriber();
subscriber.name = account.name;
subscriber.address = account.email;
subscriber.mailOn = 1;
db.Insert(subscriber);
} }
response.object = subscriber; //возвращаем информацию о подписчике.
}
//--
@Override @Override
public String getServerHomeName() { protected void Session() throws Exception {
return "_sapfor_x64"; switch (code) {
//<editor-fold desc="Регистрация">
case CheckSubscriberRole:
Print("Проверить роль пользователя");
CheckSubscriberRole();
break;
//</editor-fold>
//<editor-fold desc="БАГ РЕПОРТЫ">
case ReceiveAllArchives:
Print("Отправить клиенту архив всех архивов баг репортов");
ZipFolderPass zip = new ZipFolderPass();
File archives = new File(Utils_.getDateName("Bugs"));
if (zip.Do("Bugs", archives.getAbsolutePath())) {
response.object = Utils_.fileToBytes(archives);
Print("Архив успешно запакован");
} else throw new RepositoryRefuseException("Не удалось запаковать архивы");
break;
case UpdateBugReport:
UpdateBugReport();
break;
//--
case AppendBugReportTextField:
AppendBugReportField();
break;
//--
case ReceiveBugReportsDatabase:
Print("Получить базу данных баг репортов");
response.object = Utils_.fileToBytes(db.getFile());
break;
case ReceiveBugReport:
Print("Скачать баг репорт по ключу " + request.arg);
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", request.arg);
response.object = Utils_.fileToBytes(bugArchive);
break;
case SendBugReport: //todo устарело
Print("Отправить баг репорт " + request.arg);
File bugArchive1 = Utils_.getFile(Utils_.getHomePath(), "Bugs", request.arg);
Utils_.bytesToFile((byte[]) request.object, bugArchive1);
break;
//</editor-fold>
case GetComponentsBackups:
Print("Получить список сохраненных версий компонента " + request.arg);
File backupsDirectory = Paths.get(Utils_.getHomePath(), "Components", request.arg, "Backups").toFile();
//--
if (backupsDirectory.exists()) {
File[] files = backupsDirectory.listFiles(File::isFile);
if (files != null) {
Vector<RemoteFile> res = new Vector<>();
for (File file : files)
res.add(new RemoteFile(file.getAbsolutePath(), false)); //тут всегда линух.
response.object = res;
} else throw new RepositoryRefuseException("Не удалось получить список предыдущих версий");
} else {
//баги еще не создавались. штатная ситуация.
response.object = new Vector<>();
}
break;
case UpdateComponent:
UpdateComponent();
break;
case ReceiveComponent:
String[] packed1 = request.arg.split("\n");
//тип/имя файла
File componentFile1 = Paths.get(Utils_.getHomePath(), "Components", packed1[0], packed1[1]).toFile();
Print("Получить компонент " + packed1[0]);
response.object = Utils_.fileToBytes(componentFile1);
break;
default:
throw new RepositoryRefuseException("Неподдерживаемый код: " + code);
case GetComponentsVersionsInfo:
GetComponentsVersionsInfo();
break;
case GetComponentChangesLog:
Print("Получить журнал изменений компонента " + request.arg);
response.object = Utils_.fileToBytes(Paths.get(Utils_.getHomePath(), "Components", request.arg, "changes.txt").toFile());
break;
case CheckURLRegistered:
Print("Проверить учетную запись на машине");
String[] data = request.arg.split("\n");
String email = data[0];
String machineURL = data[1];
String login = data[2];
response.object = db.workspaces.findWorkspace(email, machineURL, login);
break;
case DVMConvertProject:
Print("Сконвертировать проект в DVM код");
DVMConvertProject();
break;
}
}
void UpdateBugReport() throws Exception {
BugReport oldBugReport = (BugReport) request.object;
Print("Обновить баг репорт " + oldBugReport.id);
if (db.bugReports.containsKey(oldBugReport.id)) {
BugReport bugReport = db.bugReports.get(oldBugReport.id);
bugReport.SynchronizeFields(oldBugReport);
bugReport.change_date = new Date().getTime();
db.Update(bugReport);
} else
throw new RepositoryRefuseException("Баг репорт с ключом " + oldBugReport.id + " не существует.");
} }
} }

View File

@@ -0,0 +1,11 @@
package _VisualDVM.Repository.Server;
import java.io.Serializable;
public class ServerRequestUnit {
public static final int version = 1164;
//--------------------------------------------
public String codeName;
public String arg;
public Serializable object;
//--------------------------------------------
}

View File

@@ -154,7 +154,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
} }
} }
@Override @Override
public void afterDeleteAction(DBObject object) throws Exception { protected void afterDeleteAction(DBObject object) throws Exception {
if (object instanceof Test) { if (object instanceof Test) {
Test test = (Test) object; Test test = (Test) object;
Utils_.forceDeleteWithCheck(test.getArchive()); Utils_.forceDeleteWithCheck(test.getArchive());

View File

@@ -6,7 +6,6 @@ public class SynchronizationSettingsMenu extends PropertiesSubmenu {
super("Синхронизация", null, super("Синхронизация", null,
Global.normalProperties, Global.normalProperties,
"AutoBugReportsLoad", "AutoBugReportsLoad",
"AutoTestsLoad", "AutoTestsLoad");
"AutoUpdateSearch");
} }
} }