package org.ovirt.engine.core.dal.dbbroker.auditloghandling;
import java.util.ArrayList;
import java.util.List;
public class AuditLogHelper {
public static List<String> getCustomLogFields(Class<?> type, boolean inherit) {
List<String> returnValue = null;
// Look for inhertied ones
if (inherit) {
Class<?>[] interfaces = type.getInterfaces();
Class<?> superClass = type.getSuperclass();
if (superClass != null) {
returnValue = AuditLogHelper.merge(returnValue, getCustomLogFields(superClass, true));
}
for (Class<?> clazz : interfaces) {
if (!clazz.equals(type)) {
returnValue = AuditLogHelper.merge(returnValue, getCustomLogFields(clazz, true));
}
}
}
// Add any you find on this class
CustomLogField field = (CustomLogField) type.getAnnotation(CustomLogField.class);
CustomLogFields fields = (CustomLogFields) type.getAnnotation(CustomLogFields.class);
List<String> myAnnotations = new ArrayList<String>();
if (field != null) {
myAnnotations.add(field.value().toLowerCase());
}
if (fields != null) {
for (CustomLogField inner : fields.value()) {
myAnnotations.add(inner.value().toLowerCase());
}
}
return merge(returnValue, myAnnotations);
}
protected static <T> List<T> merge(List<T> list, List<T> items) {
if (list != null) {
if (items != null) {
for (T item : items) {
if (!list.contains(item)) {
list.add(item);
}
}
}
} else {
return items;
}
return list;
}
}