package rocks.inspectit.ui.rcp.details.generator.impl;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import rocks.inspectit.shared.all.cmr.model.MethodIdent;
import rocks.inspectit.shared.all.communication.DefaultData;
import rocks.inspectit.shared.all.communication.MethodSensorData;
import rocks.inspectit.ui.rcp.InspectIT;
import rocks.inspectit.ui.rcp.InspectITImages;
import rocks.inspectit.ui.rcp.details.DetailsCellContent;
import rocks.inspectit.ui.rcp.details.DetailsTable;
import rocks.inspectit.ui.rcp.details.generator.IDetailsGenerator;
import rocks.inspectit.ui.rcp.model.ModifiersImageFactory;
import rocks.inspectit.ui.rcp.repository.RepositoryDefinition;
/**
* Generates information about the method from the {@link MethodSensorData}.
*
* @author Ivan Senic
*
*/
public class MethodInfoDetailsGenerator implements IDetailsGenerator {
/**
* {@inheritDoc}
*/
@Override
public boolean canGenerateFor(DefaultData defaultData) {
return (defaultData instanceof MethodSensorData) && (((MethodSensorData) defaultData).getMethodIdent() != 0);
}
/**
* {@inheritDoc}
*/
@Override
public DetailsTable generate(DefaultData defaultData, RepositoryDefinition repositoryDefinition, Composite parent, FormToolkit toolkit) {
MethodSensorData methodSensorData = (MethodSensorData) defaultData;
MethodIdent methodIdent = repositoryDefinition.getCachedDataService().getMethodIdentForId(methodSensorData.getMethodIdent());
DetailsTable table = new DetailsTable(parent, toolkit, "Method Info", 1);
// package & class
table.addContentRow("Package:", InspectIT.getDefault().getImage(InspectITImages.IMG_PACKAGE), new DetailsCellContent[] { new DetailsCellContent(methodIdent.getPackageName()) });
table.addContentRow("Class:", InspectIT.getDefault().getImage(InspectITImages.IMG_CLASS), new DetailsCellContent[] { new DetailsCellContent(methodIdent.getClassName()) });
// method
String params = "";
if (CollectionUtils.isNotEmpty(methodIdent.getParameters())) {
params = methodIdent.getParameters().toString();
params = params.substring(1, params.length() - 1);
}
String method = methodIdent.getMethodName() + "(" + params + ")";
table.addContentRow("Method:", ModifiersImageFactory.getImage(methodIdent.getModifiers()), new DetailsCellContent[] { new DetailsCellContent(method) });
// return type
String returnType = methodIdent.getReturnType();
if (StringUtils.isBlank(returnType)) {
returnType = "void";
}
table.addContentRow("Return Type:", null, new DetailsCellContent[] { new DetailsCellContent(returnType) });
// instrumentation
DetailsCellContent instrumentationContent = new DetailsCellContent();
instrumentationContent.setImage(InspectIT.getDefault().getImage(InspectITImages.IMG_INFORMATION));
if (methodIdent.hasActiveSensorTypes()) {
instrumentationContent.setText("Active ");
instrumentationContent.setImageToolTip("Method is currently instrumented and captures data.");
} else {
instrumentationContent.setText("Not-active ");
instrumentationContent.setImageToolTip("Method is currently not instrumented and doesn't capture data.");
}
table.addContentRow("Instrumentation:", null, new DetailsCellContent[] { instrumentationContent });
return table;
}
}