package io.cattle.platform.process.account; import static io.cattle.platform.core.model.tables.AccountLinkTable.*; import io.cattle.platform.core.constants.AccountConstants; import io.cattle.platform.core.dao.AccountDao; import io.cattle.platform.core.model.Account; import io.cattle.platform.core.model.AccountLink; import io.cattle.platform.engine.handler.HandlerResult; import io.cattle.platform.engine.process.ProcessInstance; import io.cattle.platform.engine.process.ProcessState; import io.cattle.platform.object.process.StandardProcess; import io.cattle.platform.process.base.AbstractDefaultProcessHandler; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import javax.inject.Named; @Named public class AccountRemove extends AbstractDefaultProcessHandler { @Inject AccountPurge accountPurge; @Inject AccountDao accountDao; @Override public HandlerResult handle(ProcessState state, ProcessInstance process) { Account account = (Account)state.getResource(); // For agent accounts do purge logic in remove. if (AccountConstants.AGENT_KIND.equals(account.getKind()) || AccountConstants.REGISTERED_AGENT_KIND.equals(account.getKind())) { accountPurge.handle(state, process); } accountDao.generateAccountLinks(account, new ArrayList<Long>()); List<? extends AccountLink> refsBy = objectManager.find(AccountLink.class, ACCOUNT_LINK.LINKED_ACCOUNT_ID, account.getId(), ACCOUNT_LINK.REMOVED, null); for (AccountLink refBy : refsBy) { objectProcessManager.scheduleStandardProcessAsync(StandardProcess.REMOVE, refBy, null); } return null; } }