проход для массового удаления объектов в сервера.

массовое удаление групп.
This commit is contained in:
2023-12-06 01:50:11 +03:00
parent 2b52763c02
commit 2a209bc94e
8 changed files with 127 additions and 37 deletions

12
.idea/workspace.xml generated
View File

@@ -7,14 +7,14 @@
</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/Visual_DVM_2021/Passes/All/DeleteSubscriberWorkspace.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/DeleteServerObjects.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/UI/Menus_2023/SubscriberWorkspacesMenuBar/SubscriberWorkspacesMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/SubscriberWorkspacesMenuBar/SubscriberWorkspacesMenuBar.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/Repository/Subscribes/SubsribersDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Subscribes/SubsribersDBTable.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Repository/Server/ComponentsServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ComponentsServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SynchronizeBugReports.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SynchronizeBugReports.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/Visual_DVM_2021/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/CallbackForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/CallbackForm.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/DeleteGroup.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/DeleteGroup.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

@@ -28,5 +28,5 @@
"TestingKernels": 64, "TestingKernels": 64,
"AutoCheckTesting": false, "AutoCheckTesting": false,
"CheckTestingIntervalSeconds": 10, "CheckTestingIntervalSeconds": 10,
"EmailOnTestingProgress": true "EmailOnTestingProgress": false
} }

View File

@@ -173,8 +173,6 @@ public abstract class RepositoryServer<D extends Database> {
public boolean canDelete(DBObject object) throws Exception { public boolean canDelete(DBObject object) throws Exception {
return true; return true;
} }
public void DeleteAction(DBObject object) throws Exception {
}
public void StartAction() throws Exception { public void StartAction() throws Exception {
} }
public void Start() throws Exception { public void Start() throws Exception {
@@ -249,13 +247,7 @@ public abstract class RepositoryServer<D extends Database> {
dbObject = (DBObject) request.object; dbObject = (DBObject) request.object;
Print("Удалить объект " + dbObject.getPK()); Print("Удалить объект " + dbObject.getPK());
db.DeleteWithCheck(dbObject); db.DeleteWithCheck(dbObject);
DeleteAction(dbObject); afterDeleteAction(dbObject);
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
case DeleteObjectByPK:
Print("Удалить объект по ключу");
Pair<Class, Object> to_delete = (Pair<Class, Object>) request.object;
DeleteAction(db.DeleteByPK(to_delete.getKey(), to_delete.getValue()));
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
break; break;
case GetObjectCopyByPK: case GetObjectCopyByPK:
@@ -277,6 +269,12 @@ public abstract class RepositoryServer<D extends Database> {
case PublishObjects: case PublishObjects:
PublishObjects(); PublishObjects();
break; break;
case DeleteObjectByPK:
DeleteObjectByPK();
break;
case DeleteObjectsByPK:
DeleteObjectsByPK();
break;
//</editor-fold> //</editor-fold>
case EXIT: case EXIT:
Print("ЗАВЕРШИТЬ РАБОТУ СЕРВЕРА"); Print("ЗАВЕРШИТЬ РАБОТУ СЕРВЕРА");
@@ -323,30 +321,48 @@ public abstract class RepositoryServer<D extends Database> {
} }
} }
} }
//--
protected Database getDefaultDatabase(){
return db;
}
//--
private void PublishObject() throws Exception { private void PublishObject() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
DBObject dbObject = (DBObject) request.object; DBObject dbObject = (DBObject) request.object;
beforePublishAction(dbObject); beforePublishAction(dbObject);
response.object = publishObject(dbObject); response.object = (Serializable) getDefaultDatabase().InsertS(dbObject).getPK();
afterPublishAction(dbObject); afterPublishAction(dbObject);
} }
private void PublishObjects() throws Exception { private void PublishObjects() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
Vector<DBObject> objects = (Vector<DBObject>) request.object; Vector<DBObject> objects = (Vector<DBObject>) request.object;
Database database = getDefaultDatabase();
for (DBObject dbObject : objects) { for (DBObject dbObject : objects) {
System.out.println(db);
beforePublishAction(dbObject); beforePublishAction(dbObject);
response.object = publishObject(dbObject); response.object = (Serializable) database.InsertS(dbObject).getPK();
System.out.println(response.object);
afterPublishAction(dbObject); afterPublishAction(dbObject);
} }
//ключи не возвращаем. пока не нужны.
}
protected Serializable publishObject(DBObject object) throws Exception {
return (Serializable) db.InsertS(object).getPK();
} }
protected void beforePublishAction(DBObject object) throws Exception { protected void beforePublishAction(DBObject object) throws Exception {
} }
protected void afterPublishAction(DBObject object) throws Exception { protected void afterPublishAction(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 {
}
} }

View File

@@ -38,7 +38,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
return 7995; return 7995;
} }
@Override @Override
public void DeleteAction(DBObject object) throws Exception { 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.project_version.isEmpty())

View File

@@ -33,6 +33,7 @@ public enum ServerCode {
GetObjectCopyByPK, GetObjectCopyByPK,
GetObjectsCopiesByPK, GetObjectsCopiesByPK,
DeleteObjects, DeleteObjects,
DeleteObjectsByPK,
CheckObjectExistense, // CheckObjectExistense, //
//-- //--
EditAccountObject, EditAccountObject,

View File

@@ -1,6 +1,7 @@
package TestingSystem.Common; package TestingSystem.Common;
import Common.Constants; import Common.Constants;
import Common.Database.DBObject; import Common.Database.DBObject;
import Common.Database.Database;
import Common.Global; import Common.Global;
import Common.Utils.Utils; import Common.Utils.Utils;
import GlobalData.Account.Account; import GlobalData.Account.Account;
@@ -38,7 +39,6 @@ import org.apache.commons.io.FileUtils;
import javax.swing.Timer; import javax.swing.Timer;
import java.io.File; import java.io.File;
import java.io.Serializable;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.*; import java.util.*;
@@ -73,7 +73,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
} }
} }
@Override @Override
public void DeleteAction(DBObject object) throws Exception { public 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());
@@ -340,7 +340,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
Print("Удалить объект по ключу из базы пользователя " + request.arg); Print("Удалить объект по ключу из базы пользователя " + request.arg);
SetCurrentAccountDB(request.arg); SetCurrentAccountDB(request.arg);
Pair<Class, Object> to_delete = (Pair<Class, Object>) request.object; Pair<Class, Object> to_delete = (Pair<Class, Object>) request.object;
DeleteAction(account_db.DeleteByPK(to_delete.getKey(), to_delete.getValue())); afterDeleteAction(account_db.DeleteByPK(to_delete.getKey(), to_delete.getValue()));
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
break; break;
case GetActualSapforPackageData: case GetActualSapforPackageData:
@@ -542,12 +542,10 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
} }
//-------------------------------------------------------------------------------------->>> //-------------------------------------------------------------------------------------->>>
@Override @Override
protected Serializable publishObject(DBObject object) throws Exception { protected Database getDefaultDatabase() {
if (request.arg == null) return super.publishObject(object); if (request.arg == null) return super.getDefaultDatabase();
else {
SetCurrentAccountDB(request.arg); SetCurrentAccountDB(request.arg);
return (Serializable) account_db.InsertS(object).getPK(); return account_db;
}
} }
@Override @Override
public void beforePublishAction(DBObject object) throws Exception { public void beforePublishAction(DBObject object) throws Exception {

View File

@@ -2,8 +2,8 @@ package Visual_DVM_2021.Passes.All;
import Common.Global; import Common.Global;
import TestingSystem.Common.Group.Group; import TestingSystem.Common.Group.Group;
import TestingSystem.Common.TestingServer; import TestingSystem.Common.TestingServer;
import Visual_DVM_2021.Passes.Server.DeleteServerObject; import Visual_DVM_2021.Passes.DeleteServerObjects;
public class DeleteGroup extends DeleteServerObject<TestingServer, Group> { public class DeleteGroup extends DeleteServerObjects<TestingServer, Group> {
public DeleteGroup() { public DeleteGroup() {
super(Global.testingServer, Group.class); super(Global.testingServer, Group.class);
} }

View File

@@ -0,0 +1,75 @@
package Visual_DVM_2021.Passes;
import Common.Current;
import Common.Database.DBObject;
import Common.Database.DBTable;
import Common.Database.Database;
import Common.UI.UI;
import Repository.RepositoryServer;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import Visual_DVM_2021.Passes.Server.RepositoryPass;
import javafx.util.Pair;
import java.util.Vector;
public class DeleteServerObjects <S extends RepositoryServer, D extends DBObject> extends RepositoryPass<S, Vector<Object>> {
protected Class<D> d; //класс объектов.
//---
@Override
public String getIconPath() {
return "/icons/Delete.png";
}
@Override
public String getButtonText() {
return "";
}
//---
protected Database getDb() {
return server.db;
}
protected String getEmail(){return null;}
//---
public DeleteServerObjects(S server_in, Class<D> d_in) {
super(server_in);
d = d_in;
}
@Override
protected boolean canStart(Object... args) throws Exception {
DBTable table =getDb().tables.get(d);
if (table.getCheckedCount()>0) {
target = table.getCheckedKeys();
return UI.Warning(table.getCheckedCount()+" объектов будет удален(о).");
}
else {
if (Current.Check(Log, table.CurrentName())){
target = new Vector<>();
target.add(table.getCurrent().getPK());
return getDb().tables.get(d).CheckCurrent(Log) && getDb().tables.get(d).ShowDeleteObjectDialog(table.getCurrent());
}
return false;
}
}
//Очищаем все связанные таблицы, чтобы не допустить перерисовки во время удаления объекта.
@Override
protected void showPreparation() throws Exception {
getDb().tables.get(d).ClearUI();
for (Class dep : getDb().tables.get(d).getFKDependencies().keySet()) {
switch (getDb().tables.get(d).getFKDependencies().get(dep).data) {
case NONE:
case DROP:
break;
case DELETE:
getDb().tables.get(dep).ClearUI();
break;
}
}
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.DeleteObjectsByPK, getEmail(),new Pair<>(d, target)));
}
@Override
protected void performFinish() throws Exception {
super.performFinish();
passes.get(getDb().getSynchronizePassCode()).Do();
}
}