/** Execution of the command */
  @Override
  protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
      throws ExecutionException {

    View view = getView();

    List<Edge> sourceList = ViewUtil.getSourceConnections(view);
    List<Edge> targetList = ViewUtil.getTargetConnections(view);

    for (Edge edge : sourceList) {
      IdentityAnchor anchor = (IdentityAnchor) edge.getSourceAnchor();
      if (anchor != null) {
        anchor.setId(getNewIdStr(anchor));
      }
    }

    for (Edge edge : targetList) {
      IdentityAnchor anchor = (IdentityAnchor) edge.getTargetAnchor();
      if (anchor != null) {
        anchor.setId(getNewIdStr(anchor));
      }
    }

    return CommandResult.newOKCommandResult();
  }
  /**
   * This operation checks if, after resizing the ShapeNodeEditPart, all links anchors will fit
   * inside the figure in case their positions are preserved
   *
   * @param shapeEP That shape being resized
   * @param sizeDelta The SizeDelta for the resize
   * @param preserveAxis The axisxxx
   * @return The new SizeDelta to preserve anchors' positions
   */
  public static Dimension getSizeDeltaToFitAnchors(
      ShapeNodeEditPart shapeEP, Dimension sizeDelta, int preserveAxis) {

    Dimension newSizeDelta = new Dimension(sizeDelta);
    View view = (View) shapeEP.getModel();
    Rectangle figureBounds = shapeEP.getFigure().getBounds();

    List<Edge> sourceList = ViewUtil.getSourceConnections(view);
    List<Edge> targetList = ViewUtil.getTargetConnections(view);

    for (Edge edge : sourceList) {
      IdentityAnchor anchor = (IdentityAnchor) edge.getSourceAnchor();
      modifySizeDeltaToFitAnchor(anchor, newSizeDelta, preserveAxis, figureBounds);
    }
    for (Edge edge : targetList) {
      IdentityAnchor anchor = (IdentityAnchor) edge.getTargetAnchor();
      modifySizeDeltaToFitAnchor(anchor, newSizeDelta, preserveAxis, figureBounds);
    }

    return newSizeDelta;
  }