package org.projectusus.metrics;
import org.eclipse.jdt.core.dom.AbstractTypeDeclaration;
import org.eclipse.jdt.core.dom.AnnotationTypeDeclaration;
import org.eclipse.jdt.core.dom.EnumDeclaration;
import org.eclipse.jdt.core.dom.Modifier;
import org.eclipse.jdt.core.dom.TypeDeclaration;
import org.projectusus.core.basis.MetricsResults;
import org.projectusus.core.metrics.MetricsCollector;
public class AbstractClassCollector extends MetricsCollector {
@Override
public boolean visit( TypeDeclaration node ) {
if( isAbstract( node ) )
markAsAbstract( node );
else
markAsConcrete( node );
return true;
}
@Override
public boolean visit( AnnotationTypeDeclaration node ) {
markAsConcrete( node );
return true;
}
@Override
public boolean visit( EnumDeclaration node ) {
markAsConcrete( node );
return true;
}
public void markAsAbstract( TypeDeclaration node ) {
writeAbstractness( node, 1 );
}
public void markAsConcrete( AbstractTypeDeclaration node ) {
writeAbstractness( node, 0 );
}
private boolean isAbstract( TypeDeclaration node ) {
return node.isInterface() || Modifier.isAbstract( node.getModifiers() );
}
private void writeAbstractness( AbstractTypeDeclaration node, int value ) {
getMetricsWriter().putData( getFile(), node, MetricsResults.ABSTRACTNESS, value );
}
}