/**
  * create the update code block with dao invoked.
  *
  * @param ast the ast tree. fc the configuration.
  */
 @SuppressWarnings("unchecked")
 public Block createBlock(AST ast, FastIbatisConfig fc) {
   Block block = ast.newBlock();
   MethodInvocation methodInvocation = ast.newMethodInvocation();
   methodInvocation.setExpression(ast.newName(Utils.lowFirstChar(fc.getModelName()) + "DAO"));
   methodInvocation.setName(ast.newSimpleName(fc.getMethodName()));
   methodInvocation.arguments().add(ast.newSimpleName("param"));
   ReturnStatement rs = ast.newReturnStatement();
   rs.setExpression(methodInvocation);
   block.statements().add(rs);
   return block;
 }
Exemplo n.º 2
0
 public ReturnStatement newReturn(Expression expr) {
   ReturnStatement returnStmt = ast.newReturnStatement();
   returnStmt.setExpression(expr);
   return returnStmt;
 }
  /*(non-Javadoc)
   * @see org.eclipse.jdt.internal.ui.text.correction.ASTRewriteCorrectionProposal#getRewrite()
   */
  @Override
  protected ASTRewrite getRewrite() {
    AST ast = fMethodDecl.getAST();

    ITypeBinding returnBinding = getReturnTypeBinding();

    if (fExistingReturn != null) {
      ASTRewrite rewrite = ASTRewrite.create(ast);

      Expression expression =
          evaluateReturnExpressions(ast, returnBinding, fExistingReturn.getStartPosition());
      if (expression != null) {
        rewrite.set(fExistingReturn, ReturnStatement.EXPRESSION_PROPERTY, expression, null);

        addLinkedPosition(rewrite.track(expression), true, RETURN_EXPRESSION_KEY);
      }
      return rewrite;
    } else {
      ASTRewrite rewrite = ASTRewrite.create(ast);

      Block block = fMethodDecl.getBody();

      List<Statement> statements = block.statements();
      int nStatements = statements.size();
      ASTNode lastStatement = null;
      if (nStatements > 0) {
        lastStatement = statements.get(nStatements - 1);
      }

      if (returnBinding != null
          && lastStatement instanceof ExpressionStatement
          && lastStatement.getNodeType() != ASTNode.ASSIGNMENT) {
        Expression expression = ((ExpressionStatement) lastStatement).getExpression();
        ITypeBinding binding = expression.resolveTypeBinding();
        if (binding != null && binding.isAssignmentCompatible(returnBinding)) {
          Expression placeHolder = (Expression) rewrite.createMoveTarget(expression);

          ReturnStatement returnStatement = ast.newReturnStatement();
          returnStatement.setExpression(placeHolder);

          rewrite.replace(lastStatement, returnStatement, null);
          return rewrite;
        }
      }

      int offset;
      if (lastStatement == null) {
        offset = block.getStartPosition() + 1;
      } else {
        offset = lastStatement.getStartPosition() + lastStatement.getLength();
      }
      ReturnStatement returnStatement = ast.newReturnStatement();
      Expression expression = evaluateReturnExpressions(ast, returnBinding, offset);

      returnStatement.setExpression(expression);

      rewrite.getListRewrite(block, Block.STATEMENTS_PROPERTY).insertLast(returnStatement, null);

      addLinkedPosition(
          rewrite.track(returnStatement.getExpression()), true, RETURN_EXPRESSION_KEY);
      return rewrite;
    }
  }
Exemplo n.º 4
0
 /**
  * Builds a new {@link ReturnStatement} instance.
  *
  * @param expression the expression to return
  * @return a new return statement
  */
 public ReturnStatement return0(Expression expression) {
   final ReturnStatement rs = ast.newReturnStatement();
   rs.setExpression(expression);
   return rs;
 }