/*************************************************************************************
* Copyright (c) 2013 Red Hat, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* JBoss by Red Hat - Initial implementation.
************************************************************************************/
package org.jboss.tools.runtime.core.internal;
import java.io.File;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.jboss.tools.runtime.core.model.AbstractRuntimeDetectorDelegate;
import org.jboss.tools.runtime.core.model.IRuntimeDetector;
import org.jboss.tools.runtime.core.model.IRuntimeDetectorDelegate;
import org.jboss.tools.runtime.core.model.RuntimeDefinition;
/**
* A class representing your runtime detector.
* @noinstantiate This class is not intended to be instantiated by clients
*/
public class RuntimeDetector implements IRuntimeDetector {
private String name, id, preferenceId;
private int priority;
private IRuntimeDetectorDelegate delegate;
private boolean enabled;
public RuntimeDetector(String name, String id,
String preferenceId, int priority,
IRuntimeDetectorDelegate delegate) {
this.name = name;
this.id = id;
this.preferenceId = preferenceId;
this.priority = priority;
this.delegate = delegate;
enabled = true;
}
public IRuntimeDetectorDelegate getDelegate() {
return delegate;
}
@Override
public RuntimeDefinition getRuntimeDefinition(File root,
IProgressMonitor monitor) {
if( delegate != null )
return delegate.getRuntimeDefinition(root, monitor);
return null;
}
@Override
public String getVersion(RuntimeDefinition runtimeDefinition) {
if( delegate != null )
return delegate.getVersion(runtimeDefinition);
return null;
}
@Override
public boolean exists(RuntimeDefinition runtimeDefinition) {
if( delegate != null)
return delegate.exists(runtimeDefinition);
return false;
}
@Override
public int compareTo(IRuntimeDetector o) {
if( this.equals(o))
return 0;
int p1 = this.getPriority();
int p2 = o.getPriority();
int dif = p1 - p2;
if( dif != 0 )
return dif;
return getId().compareTo(o.getId());
}
@Override
public String getName() {
return name;
}
@Override
public String getPreferenceId() {
return preferenceId;
}
@Override
public String getId() {
return id;
}
@Override
public boolean isEnabled() {
return enabled;
}
// Framework method
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
@Override
public int getPriority() {
return priority;
}
@Override
public boolean isValid() {
return true;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
IRuntimeDetector other = (IRuntimeDetector) obj;
if (id == null) {
if (other.getId() != null)
return false;
} else if (!id.equals(other.getId()))
return false;
return true;
}
@Override
public boolean initializeRuntime(RuntimeDefinition runtimeDefinition) throws CoreException {
if( delegate != null )
return delegate.initializeRuntime(runtimeDefinition);
return false;
}
@Override
public RuntimeDefinition[] computeIncludedDefinitions(RuntimeDefinition runtimeDefinition) {
if( delegate != null )
return delegate.computeIncludedDefinitions(runtimeDefinition);
return new RuntimeDefinition[0];
}
@Override @Deprecated
public void initializeRuntimes(List<RuntimeDefinition> runtimeDefinitions) {
if( delegate != null )
delegate.initializeRuntimes(runtimeDefinitions);
}
@Override @Deprecated
public void computeIncludedRuntimeDefinition(
RuntimeDefinition runtimeDefinition) {
if( delegate != null )
delegate.computeIncludedRuntimeDefinition(runtimeDefinition);
}
public void refreshProblems(RuntimeDefinition def) {
if( delegate != null && delegate instanceof AbstractRuntimeDetectorDelegate) {
((AbstractRuntimeDetectorDelegate)delegate).calculateProblems(def);
}
}
}