package rocks.inspectit.server.alerting.util; import rocks.inspectit.server.influx.constants.Series; import rocks.inspectit.shared.cs.ci.AlertingDefinition; /** * This class provides utility functions for alerting purposes. * * @author Alexander Wert * */ public final class AlertingUtils { /** * Private constructor due to utility class. */ private AlertingUtils() { } /** * Checks whether the given {@link AlertingDefinition} belongs to a business transaction metric. * * @param alertingDefinition * {@link AlertingDefinition} instance to check. * @return <code>true</code> if the given {@link AlertingDefinition} instance refers to a * business transaction metric, otherwise <code>false</code> */ public static boolean isBusinessTransactionAlert(AlertingDefinition alertingDefinition) { if (alertingDefinition == null) { throw new IllegalArgumentException("The given alerting definition may not be null."); } return Series.BusinessTransaction.NAME.equals(alertingDefinition.getMeasurement()) && Series.BusinessTransaction.FIELD_DURATION.equals(alertingDefinition.getField()); } /** * Retrieves the business transaction name from a business transaction related * {@link AlertingDefinition}. * * @param alertingDefinition * The {@link AlertingDefinition} instance to retrieve the name from. * @return The business transaction name or <code>null</code> if no business transaction is * specified. */ public static String retrieveBusinessTransactionName(AlertingDefinition alertingDefinition) { if (!isBusinessTransactionAlert(alertingDefinition)) { return null; } return alertingDefinition.getTags().get(Series.BusinessTransaction.TAG_BUSINESS_TRANSACTION_NAME); } /** * Retrieves the application name from a business transaction related * {@link AlertingDefinition}. * * @param alertingDefinition * The {@link AlertingDefinition} instance to retrieve the name from. * @return The application name or <code>null</code> if no application is specified. */ public static String retrieveApplicaitonName(AlertingDefinition alertingDefinition) { if (!isBusinessTransactionAlert(alertingDefinition)) { return null; } return alertingDefinition.getTags().get(Series.BusinessTransaction.TAG_APPLICATION_NAME); } }