package Visual_DVM_2021.Passes.Server; import Common.Current; import Common.Database.DBObject; import Common.Database.DBTable; import Common.Database.Database; import Common.UI.UI; import Common.UI.VisualCache.VisualCaches; import Repository.RepositoryServer; import Repository.Server.ServerCode; import Repository.Server.ServerExchangeUnit_2021; import javafx.util.Pair; import java.util.Vector; public class DeleteServerObjects extends RepositoryPass> { protected Class 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_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(); for (Object key: target){ VisualCaches.DeleteCache(d, key); } } }