Files
VisualSapfor/src/Visual_DVM_2021/Passes/Server/DeleteServerObjects.java

79 lines
2.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package Visual_DVM_2021.Passes.Server;
import Common.CurrentAnchestor;
import Common.Database.Objects.DBObject;
import Common.Database.Tables.DBTable;
import Common.Database.Database;
import Common_old.UI.UI;
import Common_old.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 <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 (CurrentAnchestor.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);
}
}
}