package _VisualDVM.Passes.Server; import Common.Database.Database; import Common.Database.Objects.DBObject; import Common.Database.Tables.DBTable; import _VisualDVM.Global; import _VisualDVM.Repository.RepositoryServer; import _VisualDVM.Repository.Server.ServerCode; import _VisualDVM.Repository.Server.ServerExchangeUnit_2021; import _VisualDVM.ServerObjectsCache.VisualCaches; import javafx.util.Pair; import java.util.Vector; public class DeleteServerObjects extends RepositoryPass> { protected Class d; //класс объектов. //--- public DeleteServerObjects(S server_in, Class d_in) { super(server_in); d = d_in; } //--- @Override public String getIconPath() { return "/Common/icons/Delete.png"; } @Override public String getDescription() { return getDb().getTable(d).getPluralDescription() + ": удаление"; } @Override public String getButtonText() { return ""; } //--- protected Database getDb() { return server.db; } protected String getEmail() { return null; } @Override protected boolean canStart(Object... args) throws Exception { DBTable table = getDb().getTable(d); if (!table.getUI().CheckSelectedOrCurrent(Log)) return false; target = table.getUI().getSelectedOrCurrentKeys(); return table.getUI().ShowDeleteObjectsDialog(target.size()); } //Очищаем все связанные таблицы, чтобы не допустить перерисовки во время удаления объекта. @Override protected void showPreparation() throws Exception { getDb().getTable(d).ClearUI(); for (Class dep : getDb().getTable(d).getFKDependencies().keySet()) { switch (getDb().getTable(d).getFKDependencies().get(dep).data) { case NONE: case DROP: break; case DELETE: getDb().getTable(dep).ClearUI(); break; } } }//DeleteTestingPackages @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(); Global.mainModule.getPass(getDb().getSynchronizePassCode()).Do(); for (Object key : target) { VisualCaches.DeleteCache(d, key); } } }