package rocks.inspectit.ui.rcp.formatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ResourceManager;
import org.eclipse.jface.viewers.DecorationOverlayIcon;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.widgets.Composite;
import io.opentracing.References;
import rocks.inspectit.shared.all.communication.data.cmr.AgentStatusData;
import rocks.inspectit.shared.all.tracing.data.PropagationType;
import rocks.inspectit.shared.all.tracing.data.Span;
import rocks.inspectit.shared.cs.ci.AlertingDefinition;
import rocks.inspectit.shared.cs.ci.Environment;
import rocks.inspectit.shared.cs.ci.Profile;
import rocks.inspectit.shared.cs.ci.assignment.AbstractClassSensorAssignment;
import rocks.inspectit.shared.cs.ci.assignment.impl.ChartingMethodSensorAssignment;
import rocks.inspectit.shared.cs.ci.assignment.impl.MethodSensorAssignment;
import rocks.inspectit.shared.cs.ci.assignment.impl.TimerMethodSensorAssignment;
import rocks.inspectit.shared.cs.ci.business.impl.ApplicationDefinition;
import rocks.inspectit.shared.cs.ci.business.impl.BusinessTransactionDefinition;
import rocks.inspectit.shared.cs.ci.context.AbstractContextCapture;
import rocks.inspectit.shared.cs.ci.context.impl.FieldContextCapture;
import rocks.inspectit.shared.cs.ci.context.impl.ParameterContextCapture;
import rocks.inspectit.shared.cs.ci.context.impl.ReturnContextCapture;
import rocks.inspectit.shared.cs.ci.profile.data.AbstractProfileData;
import rocks.inspectit.shared.cs.ci.profile.data.ExcludeRulesProfileData;
import rocks.inspectit.shared.cs.ci.profile.data.JmxDefinitionProfileData;
import rocks.inspectit.shared.cs.ci.profile.data.SensorAssignmentProfileData;
import rocks.inspectit.shared.cs.ci.sensor.ISensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.exception.impl.ExceptionSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.jmx.JmxSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.AbstractRemoteSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.impl.ConnectionSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.impl.HttpSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.impl.InvocationSequenceSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.impl.Log4jLoggingSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.impl.PreparedStatementParameterSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.impl.PreparedStatementSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.impl.StatementSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.method.impl.TimerSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.platform.impl.ClassLoadingSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.platform.impl.CompilationSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.platform.impl.CpuSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.platform.impl.MemorySensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.platform.impl.RuntimeSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.platform.impl.SystemSensorConfig;
import rocks.inspectit.shared.cs.ci.sensor.platform.impl.ThreadSensorConfig;
import rocks.inspectit.shared.cs.communication.data.cmr.Alert;
import rocks.inspectit.shared.cs.communication.data.cmr.WritingStatus;
import rocks.inspectit.shared.cs.storage.LocalStorageData;
import rocks.inspectit.shared.cs.storage.StorageData;
import rocks.inspectit.shared.cs.storage.StorageData.StorageState;
import rocks.inspectit.shared.cs.storage.label.type.AbstractCustomStorageLabelType;
import rocks.inspectit.shared.cs.storage.label.type.AbstractStorageLabelType;
import rocks.inspectit.shared.cs.storage.label.type.impl.AssigneeLabelType;
import rocks.inspectit.shared.cs.storage.label.type.impl.CreationDateLabelType;
import rocks.inspectit.shared.cs.storage.label.type.impl.DataTimeFrameLabelType;
import rocks.inspectit.shared.cs.storage.label.type.impl.ExploredByLabelType;
import rocks.inspectit.shared.cs.storage.label.type.impl.RatingLabelType;
import rocks.inspectit.shared.cs.storage.label.type.impl.StatusLabelType;
import rocks.inspectit.shared.cs.storage.label.type.impl.UseCaseLabelType;
import rocks.inspectit.ui.rcp.InspectIT;
import rocks.inspectit.ui.rcp.InspectITImages;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition.OnlineStatus;
import rocks.inspectit.ui.rcp.repository.RepositoryDefinition;
import rocks.inspectit.ui.rcp.repository.StorageRepositoryDefinition;
import rocks.inspectit.ui.rcp.resource.CombinedIcon;
/**
* The class provide image descriptors for the different elements.
*
* @author Ivan Senic
*
*/
public final class ImageFormatter {
/**
* List of icons that can be used for custom labels.
*/
public static final String[] LABEL_ICONS = new String[] { InspectITImages.IMG_HOME, InspectITImages.IMG_MESSAGE, InspectITImages.IMG_WARNING, InspectITImages.IMG_ACTIVITY,
InspectITImages.IMG_CALENDAR, InspectITImages.IMG_ASSIGNEE_LABEL_ICON, InspectITImages.IMG_CHECKMARK, InspectITImages.IMG_CLASS, InspectITImages.IMG_PACKAGE,
InspectITImages.IMG_METHOD_DEFAULT, InspectITImages.IMG_MEMORY_OVERVIEW, InspectITImages.IMG_CPU_OVERVIEW, InspectITImages.IMG_THREADS_OVERVIEW, InspectITImages.IMG_DATABASE,
InspectITImages.IMG_DATE_LABEL_ICON, InspectITImages.IMG_USECASE_LABEL_ICON, InspectITImages.IMG_RATING_LABEL_ICON, InspectITImages.IMG_STATUS_LABEL_ICON, InspectITImages.IMG_SEARCH,
InspectITImages.IMG_TIMER, InspectITImages.IMG_TOOL, InspectITImages.IMG_TRASH, InspectITImages.IMG_PROPERTIES, InspectITImages.IMG_TIME, InspectITImages.IMG_FONT,
InspectITImages.IMG_INFORMATION, InspectITImages.IMG_FILTER, InspectITImages.IMG_HTTP_URL };
/**
* Private constructor.
*/
private ImageFormatter() {
}
/**
* Returns the {@link Image} for the composite that represents a label.
*
* @param labelType
* Label type.
* @return {@link Image} for Composite.
*/
public static Image getImageForLabel(AbstractStorageLabelType<?> labelType) {
return InspectIT.getDefault().getImage(getImageKeyForLabel(labelType));
}
/**
* Returns the {@link ImageDescriptor} for the composite that represents a label.
*
* @param labelType
* Label type.
* @return {@link ImageDescriptor} for {@link Composite}.
*/
public static ImageDescriptor getImageDescriptorForLabel(AbstractStorageLabelType<?> labelType) {
return InspectIT.getDefault().getImageDescriptor(getImageKeyForLabel(labelType));
}
/**
* Returns the image key for the label type.
*
* @param labelType
* Label type.
* @return String that represents the image key. Will never be <code>null</code>.
*/
private static String getImageKeyForLabel(AbstractStorageLabelType<?> labelType) {
if (AssigneeLabelType.class.equals(labelType.getClass())) {
return InspectITImages.IMG_ASSIGNEE_LABEL_ICON;
} else if (CreationDateLabelType.class.equals(labelType.getClass())) {
return InspectITImages.IMG_DATE_LABEL_ICON;
} else if (ExploredByLabelType.class.equals(labelType.getClass())) {
return InspectITImages.IMG_MOUNTEDBY_LABEL_ICON;
} else if (RatingLabelType.class.equals(labelType.getClass())) {
return InspectITImages.IMG_RATING_LABEL_ICON;
} else if (StatusLabelType.class.equals(labelType.getClass())) {
return InspectITImages.IMG_STATUS_LABEL_ICON;
} else if (UseCaseLabelType.class.equals(labelType.getClass())) {
return InspectITImages.IMG_USECASE_LABEL_ICON;
} else if (DataTimeFrameLabelType.class.equals(labelType.getClass())) {
return InspectITImages.IMG_TIMEFRAME;
} else if (labelType instanceof AbstractCustomStorageLabelType) {
AbstractCustomStorageLabelType<?> customLabelType = (AbstractCustomStorageLabelType<?>) labelType;
if (null != customLabelType.getImageKey()) {
// assure that the image key is registered in the image registry
if (null != InspectIT.getDefault().getImage(customLabelType.getImageKey())) { // NOPMD
return customLabelType.getImageKey();
}
}
if (Boolean.class.equals(customLabelType.getValueClass())) {
return InspectITImages.IMG_CHECKMARK;
} else if (Date.class.equals(customLabelType.getValueClass())) {
return InspectITImages.IMG_CALENDAR;
} else if (Number.class.equals(customLabelType.getValueClass())) {
return InspectITImages.IMG_NUMBER;
} else if (String.class.equals(customLabelType.getValueClass())) {
return InspectITImages.IMG_FONT;
}
}
return InspectITImages.IMG_USER_LABEL_ICON;
}
/**
*
* @param storageData
* {@link StorageData} to get picture for.
* @return Returns the {@link Image} for the storage, based on the
* {@link StorageData.StorageState}.
*/
public static Image getImageForStorageLeaf(StorageData storageData) {
if (storageData.getState() == StorageState.CREATED_NOT_OPENED) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_STORAGE);
} else if (storageData.getState() == StorageState.OPENED) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_STORAGE_OPENED);
} else if (storageData.getState() == StorageState.RECORDING) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_STORAGE_RECORDING);
} else if (storageData.getState() == StorageState.CLOSED) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_STORAGE_CLOSED);
}
return null;
}
/**
* Returns image based on the CMR repository status.
*
* @param selectedCmrRepositoryDefinition
* {@link CmrRepositoryDefinition}.
* @param small
* Should picture be small or big.
* @return Image.
*/
public static Image getCmrRepositoryImage(CmrRepositoryDefinition selectedCmrRepositoryDefinition, boolean small) {
if (selectedCmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.ONLINE) {
if (small) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_SERVER_ONLINE_SMALL);
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_SERVER_ONLINE);
}
} else if (selectedCmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.OFFLINE) {
if (small) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_SERVER_OFFLINE_SMALL);
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_SERVER_OFFLINE);
}
} else {
if (small) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_SERVER_REFRESH_SMALL);
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_SERVER_REFRESH);
}
}
}
/**
* Returns image for the title box.
*
* @param storageRepositoryDefinition
* {@link StorageRepositoryDefinition}
* @return Image for the title box.
*/
public static Image getStorageRepositoryImage(StorageRepositoryDefinition storageRepositoryDefinition) {
LocalStorageData localStorageData = storageRepositoryDefinition.getLocalStorageData();
if (localStorageData.isFullyDownloaded()) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_STORAGE_DOWNLOADED);
} else if (storageRepositoryDefinition.getCmrRepositoryDefinition().getOnlineStatus() != OnlineStatus.OFFLINE) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_STORAGE_AVAILABLE);
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_STORAGE_NOT_AVAILABLE);
}
}
/**
* Returns image that represents the {@link WritingStatus} or null if the writing status passed
* is null.
*
* @param status
* Image for {@link WritingStatus}.
* @return Returns image that represents the {@link WritingStatus} or null if the writing status
* passed is null.
*/
public static Image getWritingStatusImage(WritingStatus status) {
if (null == status) {
return null;
}
switch (status) {
case GOOD:
return InspectIT.getDefault().getImage(InspectITImages.IMG_FLAG);
case MEDIUM:
return InspectIT.getDefault().getImage(InspectITImages.IMG_WARNING);
case BAD:
return InspectIT.getDefault().getImage(InspectITImages.IMG_ALERT);
default:
return null;
}
}
/**
* Returns overlayed icon for editors with additional {@link ImageDescriptor} depending if the
* repository is CMR or Storage repository.
*
* @param original
* Original icon.
* @param repositoryDefinition
* Repository definition.
* @param resourceManager
* Resource manager that image will be created with. It is responsibility of a caller
* to provide {@link ResourceManager} for correct image disposing.
* @return Overlayed icon.
*/
public static Image getOverlayedEditorImage(Image original, RepositoryDefinition repositoryDefinition, ResourceManager resourceManager) {
if (repositoryDefinition instanceof CmrRepositoryDefinition) {
return original;
} else if (repositoryDefinition instanceof StorageRepositoryDefinition) {
ImageDescriptor overlayDescriptor = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_STORAGE_OVERLAY);
DecorationOverlayIcon icon = new DecorationOverlayIcon(original, new ImageDescriptor[] { null, null, null, overlayDescriptor, null });
Image img = resourceManager.createImage(icon);
return img;
}
return null;
}
/**
* Returns an overlayed icon of the passed main image using the passed images as overlays.
*
* @param main
* main image to be overlayed
* @param resourceManager
* Resource manager that image will be created with. It is responsibility of a caller
* to provide {@link ResourceManager} for correct image disposing.
* @param scaleFactor
* scale factor to be used to scale the overlay images. 1.0 means exactly the
* original size, 0.5 half size, 2.0 double size.
* @param overlays
* 1 to 4 overlay images. 1: top-left, 2: top-right, 3: bottom-left, 4: button-right.
* Any of the overlay positions can be null to not draw an overlay at that position.
* @return an overlayed image
*/
public static Image getOverlayedImage(Image main, ResourceManager resourceManager, double scaleFactor, Image... overlays) {
ImageDescriptor[] descriptors = new ImageDescriptor[overlays.length];
for (int i = 0; i < overlays.length; i++) {
if (null != overlays[i]) {
ImageData imageData = overlays[i].getImageData();
imageData = imageData.scaledTo((int) (scaleFactor * imageData.width), (int) (scaleFactor * imageData.height));
descriptors[i] = ImageDescriptor.createFromImageData(imageData);
}
}
DecorationOverlayIcon icon = new DecorationOverlayIcon(main, descriptors);
Image img = resourceManager.createImage(icon);
return img;
}
/**
* Returns the combined image for given array of descriptors. Orientation can be vertical or
* horizontal.
*
* @param resourceManager
* {@link ResourceManager}.
* @param orientation
* SWT#Vertical or SWT#Horizontal. Descriptors will be passed in given order.
* @param descriptors
* Array of descriptors.
*
* @return Combined {@link Image}.
*/
public static Image getCombinedImage(ResourceManager resourceManager, int orientation, ImageDescriptor... descriptors) {
return getCombinedImage(resourceManager, orientation, 0, 0, descriptors);
}
/**
* Returns the combined image for given array of descriptors. Orientation can be vertical or
* horizontal.
*
* @param resourceManager
* {@link ResourceManager}.
* @param orientation
* SWT#Vertical or SWT#Horizontal. Descriptors will be passed in given order.
* @param minWidth
* min width of image
* @param minHeight
* min height of image
* @param descriptors
* Array of descriptors.
*
* @return Combined {@link Image}.
*/
public static Image getCombinedImage(ResourceManager resourceManager, int orientation, int minWidth, int minHeight, ImageDescriptor... descriptors) {
ImageDescriptor combinedImageDescriptor = new CombinedIcon(descriptors, orientation, minWidth, minHeight);
Image img = resourceManager.createImage(combinedImageDescriptor);
return img;
}
/**
* Returns the image for the agent based on the last data sent date.
*
* @param agentStatusData
* {@link AgentStatusData} golding the information or null if it's not available.
*
* @return {@link Image}
*/
public static Image getAgentImage(AgentStatusData agentStatusData) {
if (null != agentStatusData) {
switch (agentStatusData.getAgentConnection()) {
case CONNECTED:
if (null != agentStatusData.getMillisSinceLastData()) {
long millis = agentStatusData.getMillisSinceLastData().longValue();
// at last one minute of not sending data to display as the non active
if (millis > 60000) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_AGENT_NOT_SENDING);
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_AGENT_ACTIVE);
}
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_AGENT_NOT_SENDING);
}
case NO_KEEP_ALIVE:
return InspectIT.getDefault().getImage(InspectITImages.IMG_AGENT_NO_KEEPALIVE);
default:
return InspectIT.getDefault().getImage(InspectITImages.IMG_AGENT_NOT_ACTIVE);
}
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_AGENT_NOT_ACTIVE);
}
}
/**
* Returns image for the {@link ISensorConfig}.
*
* @param sensorConfig
* {@link ISensorConfig}
* @return Image or <code>null</code> if one can not be resolved for given sensor configuration.
*/
public static Image getSensorConfigImage(ISensorConfig sensorConfig) {
return getSensorConfigImage(sensorConfig.getClass());
}
/**
* Returns image for the {@link ISensorConfig} class.
*
* @param sensorClass
* {@link ISensorConfig} class.
* @return Image or <code>null</code> if one can not be resolved for given sensor configuration.
*/
public static Image getSensorConfigImage(Class<? extends ISensorConfig> sensorClass) {
if (ObjectUtils.equals(sensorClass, ExceptionSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_EXCEPTION_SENSOR);
} else if (ObjectUtils.equals(sensorClass, ConnectionSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_DATABASE);
} else if (ObjectUtils.equals(sensorClass, HttpSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_HTTP);
} else if (ObjectUtils.equals(sensorClass, InvocationSequenceSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_INVOCATION);
} else if (ObjectUtils.equals(sensorClass, PreparedStatementParameterSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_DATABASE);
} else if (ObjectUtils.equals(sensorClass, PreparedStatementSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_DATABASE);
} else if (ObjectUtils.equals(sensorClass, StatementSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_DATABASE);
} else if (ObjectUtils.equals(sensorClass, TimerSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_TIMER);
} else if (ObjectUtils.equals(sensorClass, Log4jLoggingSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_LOG);
} else if (ObjectUtils.equals(sensorClass, ClassLoadingSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_CLASS_OVERVIEW);
} else if (ObjectUtils.equals(sensorClass, CompilationSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_COMPILATION_OVERVIEW);
} else if (ObjectUtils.equals(sensorClass, CpuSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_CPU_OVERVIEW);
} else if (ObjectUtils.equals(sensorClass, MemorySensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_MEMORY_OVERVIEW);
} else if (ObjectUtils.equals(sensorClass, RuntimeSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_VM_SUMMARY);
} else if (ObjectUtils.equals(sensorClass, SystemSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_SYSTEM_OVERVIEW);
} else if (ObjectUtils.equals(sensorClass, ThreadSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_THREADS_OVERVIEW);
} else if (ObjectUtils.equals(sensorClass, JmxSensorConfig.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_BEAN);
} else if (AbstractRemoteSensorConfig.class.isAssignableFrom(sensorClass)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_REMOTE);
}
return null;
}
/**
* Returns the image describing the method visibility of the {@link MethodSensorAssignment}.
*
* @param resourceManager
* Resource manager to create image with.
* @param methodSensorAssignment
* {@link MethodSensorAssignment} to create image for.
* @return Image
*/
public static Image getMethodVisibilityImage(ResourceManager resourceManager, MethodSensorAssignment methodSensorAssignment) {
ImageDescriptor[] descriptors = new ImageDescriptor[4];
if (methodSensorAssignment.isPublicModifier()) {
descriptors[0] = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_METHOD_PUBLIC);
} else {
descriptors[0] = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_METHOD_PUBLIC_DISABLED);
}
if (methodSensorAssignment.isProtectedModifier()) {
descriptors[1] = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_METHOD_PROTECTED);
} else {
descriptors[1] = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_METHOD_PROTECTED_DISABLED);
}
if (methodSensorAssignment.isDefaultModifier()) {
descriptors[2] = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_METHOD_DEFAULT);
} else {
descriptors[2] = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_METHOD_DEFAULT_DISABLED);
}
if (methodSensorAssignment.isPrivateModifier()) {
descriptors[3] = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_METHOD_PRIVATE);
} else {
descriptors[3] = InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_METHOD_PRIVATE_DISABLED);
}
return getCombinedImage(resourceManager, SWT.HORIZONTAL, descriptors);
}
/**
* Returns the image describing the options of the {@link AbstractClassSensorAssignment}.
*
* @param resourceManager
* Resource manager to create image with.
* @param assignment
* {@link AbstractClassSensorAssignment} to create image for.
* @return Image
*/
public static Image getSensorAssignmentOptionsImage(ResourceManager resourceManager, AbstractClassSensorAssignment<?> assignment) {
List<ImageDescriptor> descs = new ArrayList<>();
if (StringUtils.isNotEmpty(assignment.getAnnotation())) {
descs.add(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_ANNOTATION));
}
if (assignment instanceof ChartingMethodSensorAssignment) {
ChartingMethodSensorAssignment chartingAssignment = (ChartingMethodSensorAssignment) assignment;
if (chartingAssignment.isCharting()) {
descs.add(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_CHART_PIE));
}
}
if (assignment instanceof TimerMethodSensorAssignment) {
TimerMethodSensorAssignment timerAssignment = (TimerMethodSensorAssignment) assignment;
if (timerAssignment.isStartsInvocation()) {
descs.add(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_INVOCATION));
}
boolean paramsCapture = false, returnCapture = false, fieldsCapture = false;
if (CollectionUtils.isNotEmpty(timerAssignment.getContextCaptures())) {
for (AbstractContextCapture contextCapture : timerAssignment.getContextCaptures()) {
paramsCapture |= contextCapture instanceof ParameterContextCapture;
returnCapture |= contextCapture instanceof ReturnContextCapture;
fieldsCapture |= contextCapture instanceof FieldContextCapture;
}
}
if (paramsCapture) {
descs.add(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_PARAMETER));
}
if (fieldsCapture) {
descs.add(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_FIELD));
}
if (returnCapture) {
descs.add(InspectIT.getDefault().getImageDescriptor(InspectITImages.IMG_RETURN));
}
}
if (CollectionUtils.isEmpty(descs)) {
return null;
} else {
return getCombinedImage(resourceManager, SWT.HORIZONTAL, descs.toArray(new ImageDescriptor[descs.size()]));
}
}
/**
* Returns environment image.
*
* @param environment
* Environment to get image for.
* @return Returns environment image.
*/
public static Image getEnvironmentImage(Environment environment) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_BLOCK);
}
/**
* Returns profile image.
*
* @param profile
* Profile to get image for.
* @return Returns profile image.
*/
public static Image getProfileImage(Profile profile) {
if (profile.isCommonProfile()) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_ADDRESSBOOK_BLUE);
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_ADDRESSBOOK);
}
}
/**
* Returns application definition image.
*
* @param appDefinition
* {@link ApplicationDefinition} to get image for.
* @return Returns image for application definition.
*/
public static Image getApplicationDefinitionImage(ApplicationDefinition appDefinition) {
if (appDefinition.getId() == ApplicationDefinition.DEFAULT_ID) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_APPLICATION_GREY);
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_APPLICATION);
}
}
/**
* Returns business transaction definition image.
*
* @param businessTxDefinition
* {@link BusinessTransactionDefinition} to get image for.
* @return Returns image for business transaction definition.
*/
public static Image getBusinessTransactionDefinitionImage(BusinessTransactionDefinition businessTxDefinition) {
if (businessTxDefinition.getId() == BusinessTransactionDefinition.DEFAULT_ID) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_BUSINESS_TRANSACTION_GREY);
} else {
return InspectIT.getDefault().getImage(InspectITImages.IMG_BUSINESS_TRANSACTION);
}
}
/**
* Returns profile data image.
*
* @param profileData
* Profile data to get image for.
* @return Returns profile data image.
*/
public static Image getProfileDataImage(AbstractProfileData<?> profileData) {
if (profileData.isOfType(SensorAssignmentProfileData.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_TIMER);
} else if (profileData.isOfType(ExcludeRulesProfileData.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_CLASS_EXCLUDE);
} else if (profileData.isOfType(JmxDefinitionProfileData.class)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_BEAN);
}
return null;
}
/**
* Returns alert image.
*
* @param alertingDefinition
* The alerting definition to show the image for.
*
* @return Returns alert image.
*/
public static Image getAlertingDefinitionImage(AlertingDefinition alertingDefinition) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_ALARM);
}
/**
* Returns alert image.
*
* @param alert
* The alert to show the image for.
* @return Returns alert image.
*/
public static Image getAlertImage(Alert alert) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_ALARM);
}
/**
* Returns a corresponding image for a HTTP response code.
*
* @param responseCode
* The HTTP response code.
* @return Response code image if response code is valid. Returns <code>null</code> if response
* code is not valid.
*/
public static Image getResponseStatusImage(int responseCode) {
String imageKey;
if ((responseCode >= 100) && (responseCode < 200)) {
imageKey = InspectITImages.IMG_INFO_CIRCLE_FRAME;
} else if ((responseCode >= 200) && (responseCode < 300)) {
imageKey = InspectITImages.IMG_OK_CIRCLE_FRAME;
} else if ((responseCode >= 300) && (responseCode < 400)) {
imageKey = InspectITImages.IMG_NAVIGATION_CIRCLE_FRAME;
} else if ((responseCode >= 400) && (responseCode < 500)) {
imageKey = InspectITImages.IMG_WARN_CIRCLE_FRAME;
} else if ((responseCode >= 500) && (responseCode < 600)) {
imageKey = InspectITImages.IMG_ERROR_CIRCLE_FRAME;
} else {
imageKey = InspectITImages.IMG_QUESTION_CIRCLE_FRAME;
}
return InspectIT.getDefault().getImage(imageKey);
}
/**
* Returns icon for the {@link PropagationType}.
*
* @param propagationType
* {@link PropagationType}.
* @return Image
*/
public static Image getPropagationImage(PropagationType propagationType) {
if (null == propagationType) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_LOGO);
}
switch (propagationType) {
case HTTP:
return InspectIT.getDefault().getImage(InspectITImages.IMG_HTTP);
case JMS:
return InspectIT.getDefault().getImage(InspectITImages.IMG_JMS);
case PROCESS:
return InspectIT.getDefault().getImage(InspectITImages.IMG_ACTIVITY);
default:
return InspectIT.getDefault().getImage(InspectITImages.IMG_REMOTE);
}
}
/**
* Returns span image based on propagation and reference type.
*
* @param span
* Span
* @param resourceManager
* resource manager
* @return image
*/
public static Image getSpanImage(Span span, ResourceManager resourceManager) {
Image propagationImage = getPropagationImage(span.getPropagationType());
if (!span.isCaller() && !References.FOLLOWS_FROM.equals(span.getReferenceType())) {
return propagationImage;
} else {
return getOverlayedImage(propagationImage, resourceManager, 1, getReferenceImage(span.getReferenceType()));
}
}
/**
* Returns icon for the span reference.
*
* @param reference
* span reference
* @return Image
* @see References
*/
public static Image getReferenceImage(String reference) {
if (References.CHILD_OF.equals(reference)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_REFERENCE_CHILDOF);
} else if (References.FOLLOWS_FROM.equals(reference)) {
return InspectIT.getDefault().getImage(InspectITImages.IMG_REFERENCE_FOLLOWSFROM);
}
return null;
}
}