package rocks.inspectit.ui.rcp.util.data; import java.util.ArrayList; import java.util.List; import com.google.common.base.Objects; import rocks.inspectit.shared.all.cmr.model.MethodSensorTypeIdent; import rocks.inspectit.shared.all.cmr.model.MethodSensorTypeIdentHelper; import rocks.inspectit.shared.all.communication.data.AggregatedHttpTimerData; import rocks.inspectit.shared.all.communication.data.HttpTimerData; import rocks.inspectit.shared.all.communication.data.HttpTimerDataHelper; /** * Simple extension of {@link AggregatedHttpTimerData}. * * @author Ivan Senic * */ public class RegExAggregatedHttpTimerData extends AggregatedHttpTimerData { /** * Generated UID. */ private static final long serialVersionUID = -7733383915089404688L; /** * Transformed URI. */ private String transformedUri; /** * List of aggregated HTTP datas. */ private List<HttpTimerData> aggregatedDataList = new ArrayList<>(); /** * No-arg constructor. */ public RegExAggregatedHttpTimerData() { } /** * Default constructor. * * @param transformedUri * Transformed URI. */ public RegExAggregatedHttpTimerData(String transformedUri) { this.transformedUri = transformedUri; } /** * Returns transformed URI. * * @param object * {@link HttpTimerData} * @param httpSensorTypeIdent * Sensor that holds the regEx expression and the template. * @return Transformed URI or URI if regular expression is not provided or can not be compiled. */ public static String getTransformedUri(HttpTimerData object, MethodSensorTypeIdent httpSensorTypeIdent) { try { if ((null != httpSensorTypeIdent) && (null != MethodSensorTypeIdentHelper.getRegEx(httpSensorTypeIdent))) { return HttpTimerDataHelper.getTransformedUri(object, MethodSensorTypeIdentHelper.getRegEx(httpSensorTypeIdent), MethodSensorTypeIdentHelper.getRegExTemplate(httpSensorTypeIdent)); } else { return object.getHttpInfo().getUri(); } } catch (IllegalArgumentException e) { return object.getHttpInfo().getUri(); } } /** * Gets {@link #transformedUri}. * * @return {@link #transformedUri} */ public String getTransformedUri() { return transformedUri; } /** * Sets {@link #transformedUri}. * * @param transformedUri * New value for {@link #transformedUri} */ public void setTransformedUri(String transformedUri) { this.transformedUri = transformedUri; } /** * Gets {@link #aggregatedDataList}. * * @return {@link #aggregatedDataList} */ public List<HttpTimerData> getAggregatedDataList() { return aggregatedDataList; } /** * {@inheritDoc} */ @Override public int hashCode() { return Objects.hashCode(transformedUri, aggregatedDataList); } /** * {@inheritDoc} */ @Override public boolean equals(Object object) { if (this == object) { return true; } if (object == null) { return false; } if (getClass() != object.getClass()) { return false; } RegExAggregatedHttpTimerData that = (RegExAggregatedHttpTimerData) object; return Objects.equal(this.transformedUri, that.transformedUri) && Objects.equal(this.aggregatedDataList, that.aggregatedDataList); } }