package org.projectusus.core.internal.proportions.rawdata; import java.util.Set; import net.sourceforge.c4j.ContractReference; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jdt.core.dom.AbstractTypeDeclaration; import org.eclipse.jdt.core.dom.Initializer; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.projectusus.core.IMetricsResultVisitor; import org.projectusus.core.IMetricsWriter; import org.projectusus.core.filerelations.model.ASTNodeHelper; import org.projectusus.core.filerelations.model.ClassDescriptor; import org.projectusus.core.filerelations.model.ClassDescriptorCleanup; import org.projectusus.core.filerelations.model.WrappedTypeBinding; @ContractReference( contractClassName = "MetricsAccessorContract" ) public class MetricsAccessor implements IMetricsWriter { private final WorkspaceRawData workspaceRawData; public MetricsAccessor( ASTNodeHelper converter ) { super(); workspaceRawData = new WorkspaceRawData( converter ); } public void putData( IFile file, MethodDeclaration methodDecl, String dataKey, int value ) { workspaceRawData.putData( file, methodDecl, dataKey, Integer.valueOf( value ) ); } public void putData( IFile file, MethodDeclaration methodDecl, String dataKey, Object value ) { workspaceRawData.putData( file, methodDecl, dataKey, value ); } public void putData( IFile file, Initializer initializer, String dataKey, int value ) { workspaceRawData.putData( file, initializer, dataKey, Integer.valueOf( value ) ); } public void putData( IFile file, Initializer initializer, String dataKey, Object value ) { workspaceRawData.putData( file, initializer, dataKey, value ); } public void putData( IFile file, AbstractTypeDeclaration node, String dataKey, int value ) { workspaceRawData.putData( file, node, dataKey, Integer.valueOf( value ) ); } public void putData( IFile file, AbstractTypeDeclaration node, String dataKey, Object value ) { workspaceRawData.putData( file, node, dataKey, value ); } public void acceptAndGuide( IMetricsResultVisitor visitor ) { workspaceRawData.acceptAndGuide( visitor ); } public void dropRawData( IProject project ) { workspaceRawData.dropRawData( project ); } public void dropRawData( IFile file ) { workspaceRawData.dropRawData( file ); } public void cleanupRelations( IProgressMonitor monitor ) { Set<ClassDescriptor> candidates = ClassDescriptorCleanup.extractDescriptorsRegisteredForCleanup(); monitor.beginTask( null, candidates.size() ); monitor.subTask( "Updating file relations" ); //$NON-NLS-1$ for( ClassDescriptor descriptor : candidates ) { workspaceRawData.removeRelationIfTargetIsGone( descriptor ); monitor.worked( 1 ); } monitor.done(); } public void addClassReference( WrappedTypeBinding source, WrappedTypeBinding target ) { ClassDescriptor.of( source ).addChild( ClassDescriptor.of( target ) ); } }