package rocks.inspectit.ui.rcp.tester;
import org.eclipse.core.expressions.PropertyTester;
import rocks.inspectit.shared.cs.storage.StorageData;
import rocks.inspectit.shared.cs.storage.StorageData.StorageState;
import rocks.inspectit.ui.rcp.InspectIT;
import rocks.inspectit.ui.rcp.provider.IStorageDataProvider;
import rocks.inspectit.ui.rcp.storage.InspectITStorageManager;
/**
* Testing the state of storage. Works if receiver is {@link StorageData} or
* {@link rocks.inspectit.ui.rcp.model.storage.StorageLeaf}.
*
* @author Ivan Senic
*
*/
public class StorageStateTester extends PropertyTester {
/**
* {@inheritDoc}
*/
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
StorageData storageData = null;
if (receiver instanceof IStorageDataProvider) {
storageData = ((IStorageDataProvider) receiver).getStorageData();
} else if (receiver instanceof StorageData) {
storageData = (StorageData) receiver;
} else {
return false;
}
if ("storageState".equals(property)) {
if ("CREATED".equalsIgnoreCase((String) expectedValue) && (storageData.getState() == StorageState.CREATED_NOT_OPENED)) {
return true;
} else if ("OPENED".equalsIgnoreCase((String) expectedValue) && (storageData.getState() == StorageState.OPENED)) {
return true;
} else if ("RECORDING".equalsIgnoreCase((String) expectedValue) && (storageData.getState() == StorageState.RECORDING)) {
return true;
} else if ("CLOSED".equalsIgnoreCase((String) expectedValue) && (storageData.getState() == StorageState.CLOSED)) {
return true;
}
return false;
}
if ("isStorageMounted".equals(property)) {
InspectITStorageManager storageManager = InspectIT.getDefault().getInspectITStorageManager();
if (Boolean.TRUE.equals(expectedValue)) {
return storageManager.isStorageMounted(storageData);
} else if (Boolean.FALSE.equals(expectedValue)) {
return !storageManager.isStorageMounted(storageData);
}
}
if ("isStorageDownloaded".equals(property)) {
InspectITStorageManager storageManager = InspectIT.getDefault().getInspectITStorageManager();
if (Boolean.TRUE.equals(expectedValue)) {
return storageManager.isFullyDownloaded(storageData);
} else if (Boolean.FALSE.equals(expectedValue)) {
return !storageManager.isFullyDownloaded(storageData);
}
}
return false;
}
}