package rocks.inspectit.ui.rcp.ci.form.input;
import java.util.Collection;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
import rocks.inspectit.shared.cs.ci.Environment;
import rocks.inspectit.shared.cs.ci.Profile;
import rocks.inspectit.ui.rcp.provider.IEnvironmentProvider;
import rocks.inspectit.ui.rcp.repository.CmrRepositoryDefinition;
/**
* Input for environment editor.
*
* @author Ivan Senic
*
*/
public class EnvironmentEditorInput implements IEditorInput, IEnvironmentProvider {
/**
* {@link Environment}.
*/
private final Environment environment;
/**
* {@link CmrRepositoryDefinition}.
*/
private final CmrRepositoryDefinition cmrRepositoryDefinition;
/**
* Profiles environment can be linked with.
*/
private final Collection<Profile> profiles;
/**
* @param environment
* {@link Environment}.
* @param profiles
* Profiles environment can be linked with.
* @param cmrRepositoryDefinition
* {@link CmrRepositoryDefinition}.
*/
public EnvironmentEditorInput(Environment environment, Collection<Profile> profiles, CmrRepositoryDefinition cmrRepositoryDefinition) {
Assert.isNotNull(environment);
Assert.isNotNull(profiles);
Assert.isNotNull(cmrRepositoryDefinition);
this.environment = environment;
this.profiles = profiles;
this.cmrRepositoryDefinition = cmrRepositoryDefinition;
}
/**
* {@inheritDoc}
*/
@Override
public boolean exists() {
return false;
}
/**
* {@inheritDoc}
*/
@Override
public ImageDescriptor getImageDescriptor() {
return ImageDescriptor.getMissingImageDescriptor();
}
/**
* {@inheritDoc}
*/
@Override
public String getName() {
return environment.getName();
}
/**
* {@inheritDoc}
*/
@Override
public IPersistableElement getPersistable() {
return null;
}
/**
* {@inheritDoc}
*/
@Override
public String getToolTipText() {
return "";
}
/**
* {@inheritDoc}
*/
@SuppressWarnings("rawtypes")
@Override
public Object getAdapter(Class adapter) {
if (Environment.class.equals(adapter)) {
return environment;
} else if (CmrRepositoryDefinition.class.equals(adapter)) {
return cmrRepositoryDefinition;
}
return null;
}
/**
* Gets {@link #environment}.
*
* @return {@link #environment}
*/
@Override
public Environment getEnvironment() {
return environment;
}
/**
* Gets {@link #profiles}.
*
* @return {@link #profiles}
*/
public Collection<Profile> getProfiles() {
return profiles;
}
/**
* Gets {@link #cmrRepositoryDefinition}.
*
* @return {@link #cmrRepositoryDefinition}
*/
@Override
public CmrRepositoryDefinition getCmrRepositoryDefinition() {
return cmrRepositoryDefinition;
}
/**
* {@inheritDoc}
*/
@Override
public int hashCode() {
// hash code only for CMR and environments, as we want editor per environment and CMR
final int prime = 31;
int result = 1;
result = (prime * result) + ((cmrRepositoryDefinition == null) ? 0 : cmrRepositoryDefinition.hashCode());
result = (prime * result) + ((environment == null) ? 0 : environment.hashCode());
return result;
}
/**
* {@inheritDoc}
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
EnvironmentEditorInput other = (EnvironmentEditorInput) obj;
if (cmrRepositoryDefinition == null) {
if (other.cmrRepositoryDefinition != null) {
return false;
}
} else if (!cmrRepositoryDefinition.equals(other.cmrRepositoryDefinition)) {
return false;
}
if (environment == null) {
if (other.environment != null) {
return false;
}
} else if (!environment.equals(other.environment)) {
return false;
}
return true;
}
}