/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.runtime.ui.views.content.adapter;
import java.util.List;
import org.eclipse.core.runtime.IAdapterFactory;
import org.teiid.designer.runtime.spi.ITeiidServer;
import org.teiid.designer.runtime.ui.views.content.ITeiidContentNode;
import org.teiid.designer.runtime.ui.views.content.ITeiidResourceNode;
import org.teiid.designer.runtime.ui.views.content.TeiidServerContainerNode;
/**
* Adapt a {@link ITeiidResourceNode}
*/
public class TeiidResourceNodeAdapterFactory implements IAdapterFactory {
@Override
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (! (adaptableObject instanceof ITeiidResourceNode))
return null;
ITeiidResourceNode teiidResourceNode = (ITeiidResourceNode) adaptableObject;
if (ITeiidResourceNode.class == adapterType)
return teiidResourceNode;
if (ITeiidServer.class.isAssignableFrom(adapterType))
return adaptToTeiidServer(teiidResourceNode);
if (TeiidServerContainerNode.class == adapterType)
return adaptToTeiidServerContainerNode(teiidResourceNode);
return null;
}
/**
* Adapt to a {@link ITeiidServer}
*
* @param adaptableObject
*/
private ITeiidServer adaptToTeiidServer(ITeiidResourceNode teiidResourceNode) {
return teiidResourceNode.getTeiidServer();
}
/**
* Adapt to a {@link TeiidServerContainerNode}
*
* @param adaptableObject
* @return
*/
private TeiidServerContainerNode adaptToTeiidServerContainerNode(ITeiidResourceNode teiidResourceNode) {
if (teiidResourceNode.hasChildren()) {
List<? extends ITeiidContentNode<?>> children = teiidResourceNode.getChildren();
if (children == null)
return null;
ITeiidContentNode<?> child = children.get(0);
if (child instanceof TeiidServerContainerNode)
return (TeiidServerContainerNode) child;
}
return null;
}
@Override
public Class[] getAdapterList() {
return new Class[] { ITeiidServer.class, ITeiidResourceNode.class, TeiidServerContainerNode.class };
}
}