промежуточный. рефакторинг объекта сервера.
This commit is contained in:
19
.idea/workspace.xml
generated
19
.idea/workspace.xml
generated
@@ -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" />
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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[]{
|
||||||
//--
|
//--
|
||||||
|
|||||||
@@ -171,9 +171,8 @@ 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()) {
|
||||||
boolean flag = true;
|
boolean flag = true;
|
||||||
|
|||||||
@@ -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 "?";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,327 +103,89 @@ 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){
|
|
||||||
BugReport bugReport = (BugReport) object;
|
|
||||||
if (bugReport.packed_archive!=null) {
|
|
||||||
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", bugReport.id);
|
|
||||||
Utils_.bytesToFile(bugReport.packed_archive, bugArchive);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public 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.packed_archive != null) {
|
||||||
Utils_.forceDeleteWithCheck(bugReport.getArchiveFile());
|
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", bugReport.id);
|
||||||
|
Utils_.bytesToFile(bugReport.packed_archive, bugArchive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void afterDeleteAction(DBObject object) throws Exception {
|
||||||
|
if (object instanceof BugReport) {
|
||||||
|
BugReport bugReport = (BugReport) object;
|
||||||
|
if (!bugReport.project_version.isEmpty()) 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 {
|
String[] args = request.arg.split("\n");
|
||||||
BugReport bugReport = null;
|
//-
|
||||||
Subscriber subscriber = null;
|
String projectName = args[0];
|
||||||
Account account = null;
|
LanguageName projectLanguage = LanguageName.valueOf(args[1]);
|
||||||
switch (code) {
|
String options = args[2];
|
||||||
//<editor-fold desc="Регистрация">
|
Vector<String> filesNames = new Vector<>(Arrays.asList(args).subList(3, args.length));
|
||||||
case CheckSubscriberRole:
|
//-
|
||||||
Print("Проверить роль пользователя");
|
File workspace = Utils.getTempFileName("convertation");
|
||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
FileUtils.forceMkdir(workspace);
|
||||||
account = (Account) request.object;
|
File archive = new File(workspace, projectName + ".zip");
|
||||||
if (db.subscribers.containsKey(account.email)) {
|
request.Unpack(archive);
|
||||||
subscriber = db.subscribers.get(account.email);
|
File project = new File(workspace, projectName);
|
||||||
} else {
|
Vector<String> badFiles = new Vector<>();
|
||||||
subscriber = new Subscriber();
|
if (unzip.Do(archive.getAbsolutePath(), workspace.getAbsolutePath()) && project.exists()) {
|
||||||
subscriber.name = account.name;
|
String output = "";
|
||||||
subscriber.address = account.email;
|
for (String fileName : filesNames) {
|
||||||
subscriber.mailOn = 1;
|
File program = Paths.get(project.getAbsolutePath(), fileName).toFile();
|
||||||
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 convertedProgram = Paths.get(program.getParent(), Utils_.getFileNameWithoutExtension(program) + ".DVMH." + (projectLanguage.equals(LanguageName.fortran) ? "f" : "c")).toFile();
|
||||||
File[] files = backupsDirectory.listFiles(File::isFile);
|
String command = Utils_.DQuotes(server_dvm_drv) + " " + projectLanguage.getDVMCompile() + "dv " + options + " " + Utils_.DQuotes(program.getName());
|
||||||
if (files != null) {
|
//--
|
||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
File fileWorkspace = program.getParentFile();
|
||||||
Vector<RemoteFile> res = new Vector<>();
|
Process process = Utils.startScript(workspace, fileWorkspace, Utils_.getDateName("convert_script"), command);
|
||||||
for (File file : files)
|
process.waitFor();
|
||||||
res.add(new RemoteFile(file.getAbsolutePath(), false)); //тут всегда линух.
|
String convertationOut = Utils.readAllOutput(process);
|
||||||
response.object = res;
|
convertationOut = convertationOut.replace(program.getName(), fileName); //для учета пути.
|
||||||
} else
|
if (!convertationOut.isEmpty()) output += convertationOut + "\n";
|
||||||
throw new RepositoryRefuseException("Не удалось получить список предыдущих версий");
|
try {
|
||||||
} else {
|
if (convertedProgram.exists()) {
|
||||||
//баги еще не создавались. штатная ситуация.
|
FileUtils.forceDelete(program);
|
||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
convertedProgram.renameTo(program);
|
||||||
response.object = new Vector<>();
|
} else badFiles.add(program.getName());
|
||||||
|
} catch (Exception ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
break;
|
//--
|
||||||
case UpdateComponent:
|
}
|
||||||
UpdateComponent();
|
response.arg = String.join("\n", badFiles) + "|" + output;
|
||||||
break;
|
File resultArchive = new File(workspace, projectName + "_result.zip");
|
||||||
case PublishComponent: //todo устарело.
|
if (ComponentsServer.zip.Do(project.getAbsolutePath(), resultArchive.getAbsolutePath())) {
|
||||||
String[] packed = request.arg.split("\n");
|
response.object = Utils_.fileToBytes(resultArchive);
|
||||||
String sComponentType = packed[0];
|
} else throw new RepositoryRefuseException("Внутренняя ошибка. Не удалось запаковать версию");
|
||||||
String componentFileName = packed[1];
|
//--
|
||||||
String sComponentVersion = packed[2];
|
} else throw new RepositoryRefuseException("Внутренняя ошибка. Не удалось распаковать проект");
|
||||||
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 projectName = args[0];
|
|
||||||
LanguageName projectLanguage = LanguageName.valueOf(args[1]);
|
|
||||||
String options = args[2];
|
|
||||||
Vector<String> filesNames = new Vector<>(Arrays.asList(args).subList(3, args.length));
|
|
||||||
//-
|
|
||||||
File workspace = Utils.getTempFileName("convertation");
|
|
||||||
FileUtils.forceMkdir(workspace);
|
|
||||||
File archive = new File(workspace, projectName + ".zip");
|
|
||||||
request.Unpack(archive);
|
|
||||||
File project = new File(workspace, projectName);
|
|
||||||
Vector<String> badFiles = new Vector<>();
|
|
||||||
if (unzip.Do(archive.getAbsolutePath(), workspace.getAbsolutePath()) && project.exists()) {
|
|
||||||
String output = "";
|
|
||||||
for (String fileName : filesNames) {
|
|
||||||
File program = Paths.get(project.getAbsolutePath(), fileName).toFile();
|
|
||||||
//--
|
|
||||||
File convertedProgram = Paths.get(program.getParent(),
|
|
||||||
Utils_.getFileNameWithoutExtension(program) + ".DVMH." +
|
|
||||||
(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();
|
|
||||||
Process process = Utils.startScript(workspace, fileWorkspace, Utils_.getDateName("convert_script"), command);
|
|
||||||
process.waitFor();
|
|
||||||
String convertationOut = Utils.readAllOutput(process);
|
|
||||||
convertationOut = convertationOut.replace(program.getName(), fileName); //для учета пути.
|
|
||||||
if (!convertationOut.isEmpty())
|
|
||||||
output += convertationOut + "\n";
|
|
||||||
try {
|
|
||||||
if (convertedProgram.exists()) {
|
|
||||||
FileUtils.forceDelete(program);
|
|
||||||
convertedProgram.renameTo(program);
|
|
||||||
} else badFiles.add(program.getName());
|
|
||||||
} catch (Exception ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
//--
|
|
||||||
}
|
|
||||||
response.arg = String.join("\n", badFiles) + "|" + output;
|
|
||||||
File resultArchive = new File(workspace, projectName + "_result.zip");
|
|
||||||
if (ComponentsServer.zip.Do(project.getAbsolutePath(), resultArchive.getAbsolutePath())) {
|
|
||||||
response.object = Utils_.fileToBytes(resultArchive);
|
|
||||||
} else
|
|
||||||
throw new RepositoryRefuseException("Внутренняя ошибка. Не удалось запаковать версию");
|
|
||||||
//--
|
|
||||||
} else
|
|
||||||
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 + " не существует.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
11
src/_VisualDVM/Repository/Server/ServerRequestUnit.java
Normal file
11
src/_VisualDVM/Repository/Server/ServerRequestUnit.java
Normal 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;
|
||||||
|
//--------------------------------------------
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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());
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ public class SynchronizationSettingsMenu extends PropertiesSubmenu {
|
|||||||
super("Синхронизация", null,
|
super("Синхронизация", null,
|
||||||
Global.normalProperties,
|
Global.normalProperties,
|
||||||
"AutoBugReportsLoad",
|
"AutoBugReportsLoad",
|
||||||
"AutoTestsLoad",
|
"AutoTestsLoad");
|
||||||
"AutoUpdateSearch");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user