package rocks.inspectit.ui.rcp.model.ci;
import java.util.List;
import org.eclipse.core.runtime.Assert;
import rocks.inspectit.shared.cs.ci.business.impl.ApplicationDefinition;
import rocks.inspectit.ui.rcp.model.Leaf;
import rocks.inspectit.ui.rcp.provider.IApplicationProvider;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition;
/**
* Application leaf for displaying in the tree.
*
* @author Alexander Wert
*
*/
public class ApplicationLeaf extends Leaf implements IApplicationProvider {
/**
* {@link ApplicationDefinition}.
*/
private ApplicationDefinition application;
/**
* {@link CmrRepositoryDefinition}.
*/
private final CmrRepositoryDefinition cmrRepositoryDefinition;
/**
* The parent list containing this {@link ApplicationLeaf} instance. This list is used to
* retrieve the position of this {@link ApplicationLeaf} instance.
*/
private final List<? extends IApplicationProvider> parentList;
/**
* Default constructor.
*
* @param application
* {@link ApplicationDefinition}
* @param parentList
* The parent list containing the {@link ApplicationDefinition} instance represented
* by this {@link ApplicationLeaf}.
* @param cmrRepositoryDefinition
* {@link CmrRepositoryDefinition}.
*/
public ApplicationLeaf(ApplicationDefinition application, List<? extends IApplicationProvider> parentList, CmrRepositoryDefinition cmrRepositoryDefinition) {
Assert.isNotNull(application);
Assert.isNotNull(cmrRepositoryDefinition);
Assert.isNotNull(parentList);
this.setApplication(application);
this.cmrRepositoryDefinition = cmrRepositoryDefinition;
this.setName(application.getApplicationName());
this.setTooltip(application.getApplicationName());
this.parentList = parentList;
}
/**
* {@inheritDoc}
*/
@Override
public int getIndexInParentList() {
return getParentList().indexOf(this);
}
@Override
public CmrRepositoryDefinition getCmrRepositoryDefinition() {
return cmrRepositoryDefinition;
}
/**
* {@inheritDoc}
*/
@Override
public ApplicationDefinition getApplication() {
return application;
}
/**
* {@inheritDoc}
*/
@Override
public List<? extends IApplicationProvider> getParentList() {
return parentList;
}
/**
* Sets {@link #application}.
*
* @param application
* New value for {@link #application}
*/
public void setApplication(ApplicationDefinition application) {
this.application = application;
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((application == null) ? 0 : application.getId());
result = prime * result + ((cmrRepositoryDefinition == null) ? 0 : cmrRepositoryDefinition.hashCode());
return result;
}
/**
* {@inheritDoc}
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (null == obj) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
ApplicationLeaf other = (ApplicationLeaf) obj;
if (application == null) {
if (other.application != null) {
return false;
}
} else if (application.getId() != other.application.getId()) {
return false;
}
if (cmrRepositoryDefinition == null) {
if (other.cmrRepositoryDefinition != null) {
return false;
}
} else if (!cmrRepositoryDefinition.equals(other.cmrRepositoryDefinition)) {
return false;
}
return true;
}
}