Package de.plushnikov.intellij.lombok.processor

Source Code of de.plushnikov.intellij.lombok.processor.LombokProcessorUtil

package de.plushnikov.intellij.lombok.processor;

import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiAnnotationParameterList;
import com.intellij.psi.PsiKeyword;
import com.intellij.psi.PsiNameValuePair;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/**
* @author Plushnikov Michail
*/
public class LombokProcessorUtil {

  @Nullable
  public static String getMethodVisibity(@NotNull PsiAnnotation psiAnnotation) {
    return convertAcessLevelToJavaString(findAnnotationPropertyValue(psiAnnotation, "value", true));
  }

  @Nullable
  public static String getAccessVisibity(@NotNull PsiAnnotation psiAnnotation) {
    return convertAcessLevelToJavaString(findAnnotationPropertyValue(psiAnnotation, "access", false));
  }

  public static String findAnnotationPropertyValue(@NotNull PsiAnnotation psiAnnotation, String propertyName, boolean isDefaultProperty) {
    PsiAnnotationParameterList annotationParameterList = psiAnnotation.getParameterList();
    String value = "";
    for (PsiNameValuePair pair : annotationParameterList.getAttributes()) {
      if (propertyName.equals(pair.getName()) || (isDefaultProperty && null == pair.getName())) {
        value = pair.getText();
        break;
      }
    }
    return value;
  }

  @Nullable
  public static String convertAcessLevelToJavaString(String value) {
    if (null == value || value.isEmpty() || value.endsWith("AccessLevel.PUBLIC"))
      return PsiKeyword.PUBLIC;
    if (value.endsWith("AccessLevel.MODULE"))
      return "";
    if (value.endsWith("AccessLevel.PROTECTED"))
      return PsiKeyword.PROTECTED;
    if (value.endsWith("AccessLevel.PACKAGE"))
      return "";
    if (value.endsWith("AccessLevel.PRIVATE"))
      return PsiKeyword.PRIVATE;
    if (value.endsWith("AccessLevel.NONE"))
      return null;
    else
      return null;
  }
}
TOP

Related Classes of de.plushnikov.intellij.lombok.processor.LombokProcessorUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.