All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.walkmod.sonar.visitors.RefactoringUtils Maven / Gradle / Ivy

package org.walkmod.sonar.visitors;

import java.util.LinkedList;
import java.util.List;

import org.walkmod.javalang.ast.CompilationUnit;
import org.walkmod.javalang.ast.Node;
import org.walkmod.javalang.ast.body.BodyDeclaration;
import org.walkmod.javalang.ast.body.FieldDeclaration;
import org.walkmod.javalang.ast.body.ModifierSet;
import org.walkmod.javalang.ast.body.TypeDeclaration;
import org.walkmod.javalang.ast.body.VariableDeclarator;
import org.walkmod.javalang.ast.body.VariableDeclaratorId;
import org.walkmod.javalang.ast.expr.AnnotationExpr;
import org.walkmod.javalang.ast.expr.Expression;
import org.walkmod.javalang.ast.expr.MethodCallExpr;
import org.walkmod.javalang.ast.expr.NameExpr;
import org.walkmod.javalang.ast.type.ClassOrInterfaceType;

public class RefactoringUtils {

   
   public static void addFieldDeclaration(Node n, FieldDeclaration field){
      Node parent = n.getParentNode();
      while (parent != null && !(parent instanceof TypeDeclaration)
            && !(parent instanceof CompilationUnit)) {
         parent = parent.getParentNode();
      }
      if (parent instanceof TypeDeclaration) {
         TypeDeclaration td = (TypeDeclaration) parent;
         List members = new LinkedList(td.getMembers());

         members.add(0, field);
         td.setMembers(members);
      }
   }
   
   
   public static void addLOG(Node n, String logVar, String logType, List annotations){
      Node parent = n.getParentNode();
      while (parent != null && !(parent instanceof TypeDeclaration)
            && !(parent instanceof CompilationUnit)) {
         parent = parent.getParentNode();
      }
      if (parent instanceof TypeDeclaration) {
         TypeDeclaration td = (TypeDeclaration) parent;
         List members = new LinkedList(td.getMembers());

         List vars = new LinkedList();
         vars.add(new VariableDeclarator(new VariableDeclaratorId(logVar), getInit(logType, td)));

         FieldDeclaration fd = new FieldDeclaration(null, ModifierSet.PRIVATE, annotations,
               new ClassOrInterfaceType(logType), vars);
         members.add(0, fd);
         td.setMembers(members);
      }
   }
   
   private static Expression getInit(String logType, TypeDeclaration td) {
      if ("java.util.logging.Logger".equals(logType) ) {
         List args = new LinkedList();
         args.add(new NameExpr(td.getName()));
         return  new MethodCallExpr(new NameExpr(logType), "getLogger", args);
      }
      return null;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy