package rocks.inspectit.server.influx.builder; import org.influxdb.dto.Point.Builder; import org.springframework.stereotype.Component; import rocks.inspectit.server.influx.constants.Series; import rocks.inspectit.shared.all.communication.data.HttpTimerData; import rocks.inspectit.shared.all.communication.data.HttpTimerDataHelper; import rocks.inspectit.shared.all.communication.data.InvocationSequenceData; import rocks.inspectit.shared.all.communication.data.cmr.BusinessTransactionData; import rocks.inspectit.shared.cs.ci.business.impl.ApplicationDefinition; import rocks.inspectit.shared.cs.ci.business.impl.BusinessTransactionDefinition; import rocks.inspectit.shared.cs.communication.data.InvocationSequenceDataHelper; /** * Point builder for the business transactions. Information is derived from the * {@link InvocationSequenceData}. * * @author Ivan Senic * @author Alexander Wert * */ @Component public class BusinessTransactionPointBuilder extends DefaultDataPointBuilder<InvocationSequenceData> { /** * {@inheritDoc} */ @Override public Class<InvocationSequenceData> getDataClass() { return InvocationSequenceData.class; } /** * {@inheritDoc} */ @Override protected String getSeriesName() { return Series.BusinessTransaction.NAME; } /** * {@inheritDoc} */ @Override protected void addTags(InvocationSequenceData data, Builder builder) { super.addTags(data, builder); String businessTxName = BusinessTransactionDefinition.UNKNOWN_BUSINESS_TX; String applicationName = ApplicationDefinition.UNKNOWN_APP; BusinessTransactionData businessTx = cachedDataService.getBusinessTransactionForId(data.getApplicationId(), data.getBusinessTransactionId()); if (null != businessTx) { businessTxName = businessTx.getName(); applicationName = businessTx.getApplication().getName(); } builder.tag(Series.BusinessTransaction.TAG_APPLICATION_NAME, applicationName); builder.tag(Series.BusinessTransaction.TAG_BUSINESS_TRANSACTION_NAME, businessTxName); } /** * {@inheritDoc} */ @Override protected void addFields(InvocationSequenceData data, Builder builder) { builder.addField(Series.BusinessTransaction.FIELD_DURATION, data.getDuration()); builder.addField(Series.BusinessTransaction.FIELD_TRACE_ID, data.getId()); if (InvocationSequenceDataHelper.hasHttpTimerData(data) && HttpTimerDataHelper.hasResponseCode((HttpTimerData) data.getTimerData())) { builder.addField(Series.BusinessTransaction.FIELD_HTTP_RESPONSE_CODE, ((HttpTimerData) data.getTimerData()).getHttpResponseStatus()); } } }