промежуточный. Убираю проходы дублирования групп и конфигураций. Не нужны.

This commit is contained in:
2023-11-15 19:31:47 +03:00
parent 25613012fd
commit 6523540d6f
15 changed files with 48 additions and 152 deletions

19
.idea/workspace.xml generated
View File

@@ -7,14 +7,21 @@
</component>
<component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/Common/Database/riDBObject.java" 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$/src/Common/Utils/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Utils/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Database/DBObject.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Database/DBObject.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Database/iDBObject.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Database/iDBObject.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Database/nDBObject.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Database/nDBObject.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/ConfigurationsMenuBar/ConfigurationsMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/ConfigurationsMenuBar/ConfigurationsMenuBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/GroupsMenuBar/GroupsMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/GroupsMenuBar/GroupsMenuBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/RepositoryServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/RepositoryServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackage/SapforTasksPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackage/SapforTasksPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackageSupervisor/SapforTasksPackageSupervisor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackageSupervisor/SapforTasksPackageSupervisor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Group/Group.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Group/Group.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/CopyConfigurations.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/CopyGroups.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/CopyServerObjects.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -42,7 +42,7 @@ public abstract class DBObject implements Selectable, Serializable {
//статус. например завершенность багрепорта или состояние задачи на запуск. как правило обладает цветным шрифтом.
//как объект будут называть по внешним ключам.
public String getFKName() {
return null;
return getClass().getSimpleName().toLowerCase() + "_id";
}
public Object getEmptyFK() {
return null;
@@ -61,4 +61,5 @@ public abstract class DBObject implements Selectable, Serializable {
this.SynchronizeFields(src);
}
//---------
}

View File

@@ -10,10 +10,6 @@ public class iDBObject extends DBObject {
return id;
}
@Override
public String getFKName() {
return getClass().getSimpleName().toLowerCase() + "_id";
}
@Override
public Object getEmptyFK() {
return Constants.Nan;
}

View File

@@ -2,9 +2,6 @@ package Common.Database;
import Common.Utils.Utils;
import com.sun.org.glassfish.gmbal.Description;
public abstract class nDBObject extends DBObject {
String getClassNameL() {
return getClass().getSimpleName().toLowerCase();
}
@Description("PRIMARY KEY, UNIQUE")
public String id = "";
@Override
@@ -12,15 +9,11 @@ public abstract class nDBObject extends DBObject {
return id;
}
@Override
public String getFKName() {
return getClassNameL() + "_id";
}
@Override
public Object getEmptyFK() {
return "";
}
public void genName() {
id = Utils.getDateName(getClassNameL());
id = Utils.getDateName(getClass().getSimpleName().toLowerCase());
}
//-
@Override

View File

@@ -0,0 +1,17 @@
package Common.Database;
public class riDBObject extends iDBObject{
//-
public String sender_name = "";
public String sender_address = "";
public String description = "";
//-
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
//--
riDBObject r = (riDBObject) src;
sender_name = r.sender_name;
sender_address = r.sender_address;
description = r.description;
}
}

View File

@@ -7,7 +7,6 @@ public class ConfigurationsMenuBar extends DataMenuBar {
addPasses(
PassCode_2021.StartTests,
PassCode_2021.PublishConfiguration,
PassCode_2021.CopyConfigurations,
PassCode_2021.EditConfiguration,
PassCode_2021.DeleteSelectedConfigurations
);

View File

@@ -9,7 +9,7 @@ import Visual_DVM_2021.Passes.PassCode_2021;
import javax.swing.*;
public class GroupsMenuBar extends DataMenuBar {
public GroupsMenuBar() {
super("группы", PassCode_2021.SynchronizeTests, PassCode_2021.DownloadGroup, PassCode_2021.ConvertCorrectnessTests, PassCode_2021.PublishGroup, PassCode_2021.CopyGroups, PassCode_2021.EditGroup, PassCode_2021.DeleteSelectedGroups);
super("группы", PassCode_2021.SynchronizeTests, PassCode_2021.DownloadGroup, PassCode_2021.ConvertCorrectnessTests, PassCode_2021.PublishGroup,PassCode_2021.EditGroup, PassCode_2021.DeleteSelectedGroups);
add(new JSeparator());
add(new MenuBarButton() {
{

View File

@@ -240,29 +240,6 @@ public abstract class RepositoryServer<D extends Database> {
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = db.checkObjectExistense(p.getKey(), p.getValue());
break;
case CopyObjects:
String[] data = request.arg.split("\n");
String sender_name = data[0];
String sender_address = data[1];
Print("Дублировать объекты для пользователя " + sender_name + ":" + sender_address);
Vector<Object> src = (Vector<Object>) request.object;
Vector<Object> dst = new Vector<>();
for (Object object : src) {
if (object instanceof rDBObject) {
rDBObject copy = (rDBObject) object.getClass().newInstance();
copy.SynchronizeFields((rDBObject) object);
copy.genName();
copy.sender_name = sender_name;
copy.sender_address = sender_address;
CopyAction((rDBObject) object, copy);
dst.add(copy);
db.Insert(copy);
} else
throw new RepositoryRefuseException("Поддерживается дублирование только объектов типа rDBObject");
}
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = dst;
break;
case EditObject:
DBObject new_object = (DBObject) request.object;
Print("Редактировать объект " + new_object.getPK());
@@ -303,6 +280,15 @@ public abstract class RepositoryServer<D extends Database> {
db.Commit();
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
//------------------------
case PublishAIObject:
dbObject = (DBObject) request.object;
Print("Опубликовать объект с автоинкрементным ключом" + dbObject.getPK());
db.Insert(dbObject); //проверка не нужна,АИ гарантирует что ключ уникален.
PublishAction(dbObject);
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
//------------------------
case EXIT:
Print("ЗАВЕРШИТЬ РАБОТУ СЕРВЕРА");
System.exit(0);

View File

@@ -29,7 +29,6 @@ public enum ServerCode {
PublishSapforPackageTasks,
//-
PublishObject,
CopyObjects, //использовать с осторожностью. проверять CopyAction на тему первичного ключа.
EditObject,
DeleteObject,
GetObjectCopyByPK,
@@ -76,5 +75,7 @@ public enum ServerCode {
//-
DeleteAccountObjectByPK,
//-
OLD
OLD,
//-
PublishAIObject, //публикация объекта с автоинкрементом.
}

View File

@@ -17,8 +17,10 @@ public class Group extends rDBObject {
public TestType type = TestType.Default;
@Description("DEFAULT 'fortran'")
public LanguageName language = LanguageName.fortran;
//--
@Description("IGNORE")
public LinkedHashMap<String, byte[]> testsFiles = new LinkedHashMap<>(); //транспорт.
//--
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);

View File

@@ -1,7 +1,6 @@
package TestingSystem;
import Common.Constants;
import Common.Database.DBObject;
import Common.Database.rDBObject;
import Common.Global;
import Common.Utils.Utils;
import GlobalData.Machine.Machine;
@@ -34,7 +33,6 @@ import Visual_DVM_2021.Passes.All.ZipFolderPass;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;
import javafx.util.Pair;
import org.apache.commons.io.FileUtils;
import javax.swing.*;
import java.io.File;
@@ -43,7 +41,6 @@ import java.util.Arrays;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.Vector;
import java.util.stream.Collectors;
import static Common.Constants.tests_db_name;
public class TestingServer extends RepositoryServer<TestsDatabase> {
@@ -134,30 +131,6 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
}
}
@Override
public void CopyAction(rDBObject src, rDBObject dst) throws Exception {
if (src instanceof Group) {
Group groupSrc = (Group) src;
Group groupDst = (Group) dst;
//тут есть право использовать Базу данных напрямую, ибо проход в серверной очереди.
//1. Получить список тестов.
Vector<Test> toCopy = db.tests.Data.values().stream().filter(test -> test.group_id.equals(groupSrc.id)).collect(Collectors.toCollection(Vector::new));
for (Test testSrc : toCopy) {
Test testCopy = new Test(testSrc);
testCopy.genName();
testCopy.sender_name = groupDst.sender_name;
testCopy.sender_address = groupDst.sender_address;
testCopy.group_id = groupDst.id;
//1 скопировать папку
FileUtils.copyDirectory(TestInterface.getServerPath(testSrc), TestInterface.getServerPath(testCopy));
//создать архив из скопированной папки.
ZipFolderPass zip = new ZipFolderPass();
if (!zip.Do(TestInterface.getServerPath(testCopy).getAbsolutePath(), TestInterface.getArchive(testCopy).getAbsolutePath()))
throw new RepositoryRefuseException("Не удалось создать архив копии теста");
db.Insert(testCopy);
}
}
}
@Override
public void DeleteAction(DBObject object) throws Exception {
if (object instanceof Test) {
Test test = (Test) object;

View File

@@ -1,7 +0,0 @@
package Visual_DVM_2021.Passes.All;
import TestingSystem.Configuration.Configuration;
public class CopyConfigurations extends CopyServerObjects{
public CopyConfigurations() {
super(Configuration.class);
}
}

View File

@@ -1,7 +0,0 @@
package Visual_DVM_2021.Passes.All;
import TestingSystem.Group.Group;
public class CopyGroups extends CopyServerObjects{
public CopyGroups() {
super(Group.class);
}
}

View File

@@ -1,59 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Database.DBObject;
import Common.Database.DataSet;
import Common.Database.rDBObject;
import Common.UI.UI;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.TestingSystemPass;
import java.util.Vector;
public class CopyServerObjects extends TestingSystemPass<Vector<DBObject>> {
@Override
protected int getTimeout() {
return 400000;
}
Class objects_class;
Vector<String> names;
public CopyServerObjects(Class class_in) {
objects_class = class_in;
}
@Override
public String getIconPath() {
return "/icons/Editor/Copy.png";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
if (Current.getAccount().CheckRegistered(Log)) {
DataSet table = server.db.tables.get(objects_class);
if (table.getCheckedCount() == 0) {
Log.Writeln_("Не отмечено ни одного объекта.");
return false;
}
Vector checkedItems = table.getCheckedItems();
target = new Vector<>();
names = new Vector<>();
for (Object o : checkedItems) {
rDBObject r = (rDBObject) o;
names.add(r.description);
target.add(r);
}
return UI.Warning(getDescription() + "\n" + String.join("\n", names));
} else return false;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.CopyObjects, Current.getAccount().name + "\n" + Current.getAccount().email, target));
}
@Override
protected void performFinish() throws Exception {
super.performFinish();
passes.get(PassCode_2021.SynchronizeTests).Do();
}
}

View File

@@ -264,8 +264,6 @@ public enum PassCode_2021 {
DeleteSelectedConfigurations,
SwitchTestingEmail,
//-
CopyConfigurations,
CopyGroups,
DownloadTaskTest,
//-
GetTestsQueueSize,
@@ -441,10 +439,6 @@ public enum PassCode_2021 {
return "Очередь перед текущим пакетом";
case DownloadTaskTest:
return "Загрузить тест текущей задачи";
case CopyGroups:
return "Дублировать отмеченные группы";
case CopyConfigurations:
return "Дублировать отмеченные конфигурации";
case SwitchTestingEmail:
return "Настроить отправку оповещений тестирования";
case DeleteSelectedConfigurations: