package rocks.inspectit.ui.rcp.model.storage;
import org.eclipse.core.runtime.Assert;
import com.google.common.base.Objects;
import rocks.inspectit.shared.cs.storage.StorageData;
import rocks.inspectit.ui.rcp.formatter.ImageFormatter;
import rocks.inspectit.ui.rcp.model.Leaf;
import rocks.inspectit.ui.rcp.provider.IStorageDataProvider;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition;
/**
* Leaf used for displaying the storages in the storage tree.
*
* @author Ivan Senic
*
*/
public class StorageLeaf extends Leaf implements IStorageDataProvider {
/**
* {@link StorageData}.
*/
private StorageData storageData;
/**
* {@link CmrRepositoryDefinition}.
*/
private CmrRepositoryDefinition cmrRepositoryDefinition;
/**
* Default constructor.
*
* @param storageData
* {@link StorageData}
* @param cmrRepositoryDefinition
* {@link CmrRepositoryDefinition}.
*/
public StorageLeaf(StorageData storageData, CmrRepositoryDefinition cmrRepositoryDefinition) {
super();
Assert.isNotNull(storageData);
Assert.isNotNull(cmrRepositoryDefinition);
this.storageData = storageData;
this.cmrRepositoryDefinition = cmrRepositoryDefinition;
this.setName(storageData.getName());
this.setImage(ImageFormatter.getImageForStorageLeaf(storageData));
this.setTooltip(storageData.getName());
}
/**
* {@inheritDoc}
*/
@Override
public StorageData getStorageData() {
return storageData;
}
/**
* {@inheritDoc}
*/
@Override
public CmrRepositoryDefinition getCmrRepositoryDefinition() {
return cmrRepositoryDefinition;
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
return Objects.hashCode(storageData, cmrRepositoryDefinition);
}
/**
* {@inheritDoc}
*/
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object == null) {
return false;
}
if (getClass() != object.getClass()) {
return false;
}
if (!super.equals(object)) {
return false;
}
StorageLeaf that = (StorageLeaf) object;
return Objects.equal(this.storageData, that.storageData) && Objects.equal(this.cmrRepositoryDefinition, that.cmrRepositoryDefinition);
}
}