package org.zstack.core.cascade; import java.util.Arrays; /** */ public class CascadeDeletionActionBuilder { private String rootIssuer; private Object rootContext; private String parentIssuer; private Object parentContext; public CascadeDeletionActionBuilder setRootIssuer(String rootIssuer) { this.rootIssuer = rootIssuer; return this; } public CascadeDeletionActionBuilder setRootContext(Object rootContext) { this.rootContext = rootContext; return this; } public CascadeDeletionActionBuilder setParentIssuer(String parentIssuer) { this.parentIssuer = parentIssuer; return this; } public CascadeDeletionActionBuilder setParentContext(Object parentContext) { this.parentContext = parentContext; return this; } private CascadeAction build(String code) { assert rootIssuer != null; CascadeAction action = new CascadeAction(); action.setRootIssuer(rootIssuer); action.setRootIssuerContext(Arrays.asList(rootContext)); if (parentIssuer == null) { parentIssuer = rootIssuer; } action.setParentIssuer(parentIssuer); if (parentContext == null) { parentContext = rootContext; } action.setParentIssuerContext(Arrays.asList(parentContext)); action.setActionCode(code); return action; } public CascadeAction buildCheckAction() { return build(CascadeConstant.DELETION_CHECK_CODE); } public CascadeAction buildDeleteAction() { return build(CascadeConstant.DELETION_DELETE_CODE); } public CascadeAction buildCleanupAction() { return build(CascadeConstant.DELETION_CLEANUP_CODE); } }