package com.sap.mi.tcs.editor.tree;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.ResourceSet;
import com.sap.furcas.metamodel.TCS.ConcreteSyntax;
import com.sap.ide.treeprovider.GenericRefObjectNode;
import com.sap.ide.treeprovider.RootNodeProvider;
/**
* Computes the root nodes of the TCS metamodel which are the deployment
* units.
*
*
*/
public class TcsRootNodeProvider implements RootNodeProvider {
private static List<EClass> topLevelModelElementTypes;
@Override
public List<ITreeNode<?>> getChildren(Object parent, IProject project, ResourceSet connection) {
IPartitionScopeProvider partitionScopeProvider = PartitionService.getInstance().getPartitionScopeProvider(project, connection,
com.sap.mi.fwk.IPartitionScopeProvider.PartitionScope.INNER);
QueryScopeProvider queryScopeProvider = QueryService.getInstance().getQueryScopeProvider(partitionScopeProvider);
MQLResultSet concreteSytnaxes = connection.getMQLProcessor().execute(
"select cs from TCS::ConcreteSyntax as cs", queryScopeProvider); //$NON-NLS-1$
EObject[] concreteSytnax = concreteSytnaxes.getRefObjects("cs"); //$NON-NLS-1$
List<ITreeNode<?>> children = new ArrayList<ITreeNode<?>>(concreteSytnax.length + 1);
for (int i = 0; i < concreteSytnax.length; i++) {
children.add(new GenericRefObjectNode(parent, (ConcreteSyntax) concreteSytnax[i]));
}
return children;
}
@Override
public List<EClass> getTopLevelModelElementTypes(ResourceSet connection) {
if (connection == null) {
return Collections.emptyList();
}
else if (topLevelModelElementTypes == null) {
topLevelModelElementTypes = new ArrayList<EClass>(1);
topLevelModelElementTypes.add(connection.getClass(ConcreteSyntax.CLASS_DESCRIPTOR).refMetaObject());
}
return topLevelModelElementTypes;
}
@Override
public String getPartionFolderName() {
return "mappings";
}
@Override
public String getPartitionExtension() {
return "xmi";
}
}