
com.hannesdorfmann.sqlbrite.objectmapper.processor.ModifierUtils Maven / Gradle / Ivy
package com.hannesdorfmann.sqlbrite.objectmapper.processor;
import java.util.Set;
import javax.lang.model.element.Element;
import javax.lang.model.element.Modifier;
/**
* Utility class to check modifiers
*
* @author Hannes Dorfmann
*/
public class ModifierUtils {
private ModifierUtils() {
}
/**
* Compare the modifier of two elements
*
* @return -1 if element a has better visibility, 0 if both have the same visibility, +1 if b has
* the better visibility. The "best" visibility is PUBLIC
*/
public static int compareModifierVisibility(Element a, Element b) {
// a better
if (a.getModifiers().contains(Modifier.PUBLIC) && !b.getModifiers().contains(Modifier.PUBLIC)) {
return -1;
}
if (isDefaultModifier(a.getModifiers()) && !isDefaultModifier(b.getModifiers())) {
return -1;
}
if (a.getModifiers().contains(Modifier.PROTECTED) && !b.getModifiers().contains(Modifier.PROTECTED)) {
return -1;
}
// b better
if (b.getModifiers().contains(Modifier.PUBLIC) && !a.getModifiers().contains(Modifier.PUBLIC)) {
return 1;
}
if (isDefaultModifier(b.getModifiers()) && !isDefaultModifier(a.getModifiers())) {
return 1;
}
if (b.getModifiers().contains(Modifier.PROTECTED) && !a.getModifiers().contains(Modifier.PROTECTED)) {
return 1;
}
// Same
return 0;
}
/**
* @param modifiers Set of modifiers
* @return true if this element has default visibility
*/
public static boolean isDefaultModifier(Set modifiers) {
return !modifiers.contains(Modifier.PUBLIC) && !modifiers.contains(Modifier.PROTECTED) && !modifiers.contains(Modifier.PRIVATE);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy