/*
* 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 org.eclipse.core.runtime.IAdapterFactory;
import org.teiid.designer.runtime.spi.ITeiidServer;
import org.teiid.designer.runtime.ui.views.content.AbstractTeiidFolder;
import org.teiid.designer.runtime.ui.views.content.ITeiidResourceNode;
/**
* Adapt a {@link ITeiidResourceNode}
*/
public class TeiidFolderAdapterFactory implements IAdapterFactory {
@Override
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (! (adaptableObject instanceof AbstractTeiidFolder))
return null;
AbstractTeiidFolder<?> abstractTeiidFolder = (AbstractTeiidFolder<?>) adaptableObject;
if (ITeiidResourceNode.class == adapterType)
return adaptToTeiidResourceNode(abstractTeiidFolder);
else if (ITeiidServer.class.isAssignableFrom(adapterType))
return adaptToTeiidServer(abstractTeiidFolder);
return null;
}
/**
* Try and adapt to a {@link ITeiidResourceNode}
*
* @param teiidDataNode
* @param adapterType
* @return
*/
private Object adaptToTeiidResourceNode(AbstractTeiidFolder<?> teiidDataNode) {
ITeiidResourceNode parent = teiidDataNode.getParent();
return parent != null ? parent : null;
}
/**
* Try and adapt to a {@link ITeiidServer}
*
* @param adaptableObject
*/
private ITeiidServer adaptToTeiidServer(AbstractTeiidFolder<?> abstractTeiidFolder) {
return abstractTeiidFolder.getTeiidServer();
}
@Override
public Class[] getAdapterList() {
return new Class[] {ITeiidResourceNode.class, ITeiidServer.class};
}
}