package Common.Passes; import Common.Database.Objects.DBObject; public abstract class DeleteObjectPass extends ObjectPass { public DeleteObjectPass(Class d_in) { super(d_in); } @Override public String getDescription_() { return "удаление"; } @Override public String getIconPath() { return "/Common/icons/Delete.png"; } @Override protected boolean canStart(Object... args) throws Exception { target = (D) getTable().getUI().getCurrent(); return getTable().getUI().CheckCurrent(Log) && getTable().getUI().ShowDeleteObjectDialog(target); } //Очищаем все связанные таблицы, чтобы не допустить перерисовки во время удаления объекта. @Override protected void showPreparation() throws Exception { getTable().ClearUI(); for (Class dep : getTable().getFKDependencies().keySet()) { switch (getTable().getFKDependencies().get(dep).data) { case NONE: case DROP: break; case DELETE: getDb().getTable(dep).ClearUI(); break; } } } @Override protected void body() throws Exception { getDb().Delete(target); getDb().DeleteDependencies(target); } //тут именно на финише, чтобы в любом случае вся таблица всегда была видна. @Override protected void showFinish() throws Exception { getTable().ShowUI(); } }