/* (non-Javadoc)
   * @see com.buildml.main.ICliCommand#invoke(com.buildml.model.BuildStore, java.lang.String[])
   */
  @Override
  public void invoke(IBuildStore buildStore, String buildStorePath, String[] args) {

    CliUtils.validateArgs(
        getName(),
        args,
        2,
        2,
        "You must specify a package name and a colon-separated list of action-specs.");

    IPackageMemberMgr pkgMemberMgr = buildStore.getPackageMemberMgr();
    IActionMgr actionMgr = buildStore.getActionMgr();

    /*
     * The package can be of the form: "pkg". There is no scope value allowed
     * for actions.
     */
    String pkgName = args[0];
    int pkgAndScopeIds[] = CliUtils.parsePackageAndScope(buildStore, pkgName, false);
    int pkgId = pkgAndScopeIds[0];

    /* compute the ActionSet from the user-supplied list of action-specs */
    String actionSpecs = args[1];
    ActionSet actionsToSet = CliUtils.getCmdLineActionSet(actionMgr, actionSpecs);

    /* now visit each action in the ActionSet and set its package */
    boolean prevState = buildStore.setFastAccessMode(true);
    for (int actionId : actionsToSet) {
      pkgMemberMgr.setPackageOfMember(IPackageMemberMgr.TYPE_ACTION, actionId, pkgId);
    }
    buildStore.setFastAccessMode(prevState);
  }
  /**
   * Create a new {@link MovePackageRefactorer} object.
   *
   * @param destPkgId ID of the package to move members into.
   * @param multiOp MultiUndoOp to add change operations to.
   * @param buildStore The IBuildStore that stores the packages/members.
   */
  public MovePackageRefactorer(int destPkgId, MultiUndoOp multiOp, IBuildStore buildStore) {
    this.destPkgId = destPkgId;
    this.multiOp = multiOp;
    this.buildStore = buildStore;

    pkgMgr = buildStore.getPackageMgr();
    actionMgr = buildStore.getActionMgr();
    fileMgr = buildStore.getFileMgr();
    fileGroupMgr = buildStore.getFileGroupMgr();
    pkgMemberMgr = buildStore.getPackageMemberMgr();
    pkgRootMgr = buildStore.getPackageRootMgr();
  }