package rocks.inspectit.ui.rcp.tester;
import org.eclipse.core.expressions.PropertyTester;
import rocks.inspectit.shared.cs.storage.recording.RecordingState;
import rocks.inspectit.ui.rcp.InspectIT;
import rocks.inspectit.ui.rcp.provider.ICmrRepositoryAndAgentProvider;
import rocks.inspectit.ui.rcp.provider.ICmrRepositoryProvider;
import rocks.inspectit.ui.rcp.provider.IInputDefinitionProvider;
import rocks.inspectit.ui.rcp.provider.IStorageDataProvider;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition.OnlineStatus;
import rocks.inspectit.ui.rcp.repository.RepositoryDefinition;
/**
* Tester for CMR Online Status.
*
* @author Ivan Senic
*
*/
public class CmrOnlineStatusTester extends PropertyTester {
/**
* {@inheritDoc}
*/
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
CmrRepositoryDefinition cmrRepositoryDefinition = null;
if (receiver instanceof ICmrRepositoryProvider) {
cmrRepositoryDefinition = ((ICmrRepositoryProvider) receiver).getCmrRepositoryDefinition();
} else if (receiver instanceof ICmrRepositoryAndAgentProvider) {
cmrRepositoryDefinition = ((ICmrRepositoryAndAgentProvider) receiver).getCmrRepositoryDefinition();
} else if (receiver instanceof IStorageDataProvider) {
cmrRepositoryDefinition = ((IStorageDataProvider) receiver).getCmrRepositoryDefinition();
} else if (receiver instanceof IInputDefinitionProvider) {
RepositoryDefinition repository = ((IInputDefinitionProvider) receiver).getInputDefinition().getRepositoryDefinition();
if (repository instanceof CmrRepositoryDefinition) {
cmrRepositoryDefinition = (CmrRepositoryDefinition) repository;
} else {
return false;
}
} else if ("anyOnline".equals(property)) {
for (CmrRepositoryDefinition cmr : InspectIT.getDefault().getCmrRepositoryManager().getCmrRepositoryDefinitions()) {
if (cmr.getOnlineStatus().equals(OnlineStatus.ONLINE)) {
return true;
}
}
return false;
} else {
return false;
}
if ("onlineStatus".equals(property)) {
if ("ONLINE".equals(expectedValue)) {
return cmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.ONLINE;
} else if ("OFFLINE".equals(expectedValue)) {
return cmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.OFFLINE;
} else if ("CHECKING".equals(expectedValue)) {
return cmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.CHECKING;
}
} else if ("recordingActive".equals(property)) {
if (expectedValue instanceof Boolean) {
if (cmrRepositoryDefinition.getOnlineStatus() != OnlineStatus.OFFLINE) {
boolean recordingActive = cmrRepositoryDefinition.getStorageService().getRecordingState() != RecordingState.OFF;
return ((Boolean) expectedValue).booleanValue() == recordingActive;
} else {
return false;
}
}
}
return false;
}
}