package org.projectusus.ui.viewer;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import org.projectusus.ui.internal.UsusUIPlugin;
class AnnotationReader {
private final IColumnDesc<?> columnDescEnumValue;
AnnotationReader( IColumnDesc<?> enumValue ) {
this.columnDescEnumValue = enumValue;
}
UsusTreeColumn compute() {
UsusTreeColumn result = null;
try {
Field field = loadField();
for( Annotation annotation : field.getAnnotations() ) {
if( annotation instanceof UsusTreeColumn ) {
result = (UsusTreeColumn)annotation;
}
}
} catch( Exception ex ) {
UsusUIPlugin.getDefault().log( ex );
}
return result;
}
private Field loadField() throws NoSuchFieldException {
Class<?> enumClass = columnDescEnumValue.getClass();
if( enumClass.isAnonymousClass() ) {
enumClass = enumClass.getEnclosingClass();
}
return enumClass.getDeclaredField( columnDescEnumValue.toString() );
}
}