private void capture(final ProcessGroupStatus groupStatus, final Date timestamp) {
final ComponentDetails groupDetails = ComponentDetails.forProcessGroup(groupStatus);
final StatusSnapshot groupSnapshot = ComponentMetrics.createSnapshot(groupStatus, timestamp);
updateStatusHistory(groupSnapshot, groupDetails, timestamp);
for (final ProcessorStatus processorStatus : groupStatus.getProcessorStatus()) {
final ComponentDetails componentDetails = ComponentDetails.forProcessor(processorStatus);
final StatusSnapshot snapshot = ComponentMetrics.createSnapshot(processorStatus, timestamp);
updateStatusHistory(snapshot, componentDetails, timestamp);
}
for (final ConnectionStatus connectionStatus : groupStatus.getConnectionStatus()) {
final ComponentDetails componentDetails = ComponentDetails.forConnection(connectionStatus);
final StatusSnapshot snapshot = ComponentMetrics.createSnapshot(connectionStatus, timestamp);
updateStatusHistory(snapshot, componentDetails, timestamp);
}
for (final RemoteProcessGroupStatus rpgStatus : groupStatus.getRemoteProcessGroupStatus()) {
final ComponentDetails componentDetails = ComponentDetails.forRemoteProcessGroup(rpgStatus);
final StatusSnapshot snapshot = ComponentMetrics.createSnapshot(rpgStatus, timestamp);
updateStatusHistory(snapshot, componentDetails, timestamp);
}
for (final ProcessGroupStatus childStatus : groupStatus.getProcessGroupStatus()) {
capture(childStatus, timestamp);
}
}