// Path: startupheroes-checks/src/main/java/es/startuphero/checkstyle/util/ClassUtils.java
// public static Boolean isAbstract(DetailAST classAst) {
//   return classAst.findFirstToken(TokenTypes.MODIFIERS)
//                  .branchContains(TokenTypes.ABSTRACT);
// }
// 
// Path: startupheroes-checks/src/main/java/es/startuphero/checkstyle/util/ClassUtils.java
// public static Boolean isEntity(DetailAST classAst, String fullEntityAnnotation) {
//   return AnnotationUtils.hasAnnotation(classAst, fullEntityAnnotation);
// }


import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
import static es.startuphero.checkstyle.util.ClassUtils.isAbstract;
import static es.startuphero.checkstyle.util.ClassUtils.isEntity;
package es.startuphero.checkstyle.checks.modifier;



/**
 * @author ozlem.ulag
 */
public class MissingAbstractModifierCheck extends AbstractCheck {

  /**
   * A key is pointing to the warning message text in "messages.properties" file.
   */
  private static final String MSG_KEY = "missing.abstract.modifier";

  /**
   * set abstract type annotation to understand that a class is abstract.
   */
// Path: startupheroes-checks/src/main/java/es/startuphero/checkstyle/util/ClassUtils.java
// public static Boolean isAbstract(DetailAST classAst) {
//   return classAst.findFirstToken(TokenTypes.MODIFIERS)
//                  .branchContains(TokenTypes.ABSTRACT);
// }
// 
// Path: startupheroes-checks/src/main/java/es/startuphero/checkstyle/util/ClassUtils.java
// public static Boolean isEntity(DetailAST classAst, String fullEntityAnnotation) {
//   return AnnotationUtils.hasAnnotation(classAst, fullEntityAnnotation);
// }


// Path: startupheroes-checks/src/main/java/es/startuphero/checkstyle/checks/modifier/MissingAbstractModifierCheck.java
import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
import com.puppycrawl.tools.checkstyle.api.DetailAST;
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
import static es.startuphero.checkstyle.util.ClassUtils.isAbstract;
import static es.startuphero.checkstyle.util.ClassUtils.isEntity;

package es.startuphero.checkstyle.checks.modifier;



/**
 * @author ozlem.ulag
 */
public class MissingAbstractModifierCheck extends AbstractCheck {

  /**
   * A key is pointing to the warning message text in "messages.properties" file.
   */
  private static final String MSG_KEY = "missing.abstract.modifier";

  /**
   * set abstract type annotation to understand that a class is abstract.
   */
  private String abstractTypeAnnotation;