package rocks.inspectit.shared.cs.indexing.aggregation.impl;
import java.io.Serializable;
import rocks.inspectit.shared.all.communication.IAggregatedData;
import rocks.inspectit.shared.all.communication.data.ThreadInformationData;
import rocks.inspectit.shared.cs.indexing.aggregation.IAggregator;
/**
* {@link IAggregator} for the {@link ThreadInformationData}.
*
* @author Ivan Senic
*
*/
public class ThreadInformationDataAggregator implements IAggregator<ThreadInformationData>, Serializable {
/**
* Generated UID.
*/
private static final long serialVersionUID = 749269646913958594L;
/**
* {@inheritDoc}
*/
@Override
public void aggregate(IAggregatedData<ThreadInformationData> aggregatedObject, ThreadInformationData objectToAdd) {
aggregatedObject.aggregate(objectToAdd);
}
/**
* {@inheritDoc}
*/
@Override
public ThreadInformationData getClone(ThreadInformationData threadInformationData) {
ThreadInformationData clone = new ThreadInformationData();
clone.setPlatformIdent(threadInformationData.getPlatformIdent());
clone.setSensorTypeIdent(threadInformationData.getSensorTypeIdent());
return clone;
}
/**
* {@inheritDoc}
*/
public boolean isCloning() {
return true;
}
/**
* {@inheritDoc}
*/
@Override
public Object getAggregationKey(ThreadInformationData object) {
return object.getPlatformIdent();
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
// we must make constant hashCode because of the caching
result = (prime * result) + this.getClass().getName().hashCode();
return result;
}
/**
* {@inheritDoc}
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
return true;
}
}