/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.toolkit.modules.introspection.internal;
import java.util.ArrayList;
import java.util.List;
import de.rcenvironment.toolkit.modules.introspection.api.StatusCollectionContributor;
import de.rcenvironment.toolkit.modules.introspection.api.StatusCollectionRegistry;
import de.rcenvironment.toolkit.modules.introspection.api.StatusCollectionService;
import de.rcenvironment.toolkit.utils.internal.StringUtils;
import de.rcenvironment.toolkit.utils.text.impl.BufferingTextLinesReceiver;
import de.rcenvironment.toolkit.utils.text.impl.MultiLineOutputWrapper;
/**
* Default {@link StatusCollectionService} implementation.
*
* @author Robert Mischke
*/
public class StatusCollectionServiceImpl implements StatusCollectionService, StatusCollectionRegistry {
private final List<StatusCollectionContributor> contributors = new ArrayList<>();
@Override
public synchronized MultiLineOutputWrapper getCollectedDefaultStateInformation() {
final BufferingTextLinesReceiver buffer = new BufferingTextLinesReceiver();
for (StatusCollectionContributor c : contributors) {
final String description = c.getStandardDescription();
if (description == null) {
continue;
}
buffer.addLine(StringUtils.format("=== %s ===", description));
c.printDefaultStateInformation(buffer);
}
return new MultiLineOutputWrapper(buffer.getCollectedLines()); // safe as the wrapper object is discarded, so no further writes
// can happen
}
@Override
public synchronized MultiLineOutputWrapper getCollectedUnfinishedOperationsInformation() {
final BufferingTextLinesReceiver buffer = new BufferingTextLinesReceiver();
for (StatusCollectionContributor c : contributors) {
final String description = c.getUnfinishedOperationsDescription();
if (description == null) {
continue;
}
buffer.addLine(StringUtils.format("=== %s ===", description));
c.printUnfinishedOperationsInformation(buffer);
}
return new MultiLineOutputWrapper(buffer.getCollectedLines()); // safe as the wrapper object is discarded, so no further writes
// can happen
}
@Override
public synchronized void addContributor(StatusCollectionContributor contributor) {
contributors.add(contributor);
}
}