package com.sap.coghead.tree;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.core.resources.IProject;
import coghead.Account;
import com.sap.ide.treeprovider.GenericRefObjectNode;
import com.sap.ide.treeprovider.RootNodeProvider;
import com.sap.mi.fwk.IPartitionScopeProvider;
import com.sap.mi.fwk.PartitionService;
import com.sap.mi.fwk.QueryService;
import com.sap.mi.fwk.ui.tree.nodes.ITreeNode;
import com.sap.tc.moin.repository.Connection;
import com.sap.tc.moin.repository.mmi.model.MofClass;
import com.sap.tc.moin.repository.mmi.reflect.RefObject;
import com.sap.tc.moin.repository.mql.MQLResultSet;
import com.sap.tc.moin.repository.mql.QueryScopeProvider;
public class CogheadRootNodeProvider implements RootNodeProvider {
private static List<MofClass> topLevelModelElementTypes;
@Override
public List<ITreeNode<?>> getChildren(Object parent, IProject project, Connection connection) {
IPartitionScopeProvider partitionScopeProvider = PartitionService.getInstance().getPartitionScopeProvider(project, connection,
com.sap.mi.fwk.IPartitionScopeProvider.PartitionScope.INNER);
QueryScopeProvider queryScopeProvider = QueryService.getInstance().getQueryScopeProvider(partitionScopeProvider);
MQLResultSet accountSet = connection.getMQLProcessor().execute(
"select acc from coghead::Account as acc", queryScopeProvider); //$NON-NLS-1$
List<ITreeNode<?>> children = new ArrayList<ITreeNode<?>>();
for (RefObject acc : accountSet.getRefObjects("acc")) {
children.add(new GenericRefObjectNode(parent, (Account) acc));
}
return children;
}
@Override
public List<MofClass> getTopLevelModelElementTypes(Connection connection) {
if (connection == null) {
return Collections.emptyList();
}
else if (topLevelModelElementTypes == null) {
topLevelModelElementTypes = new ArrayList<MofClass>(1);
topLevelModelElementTypes.add(connection.getClass(Account.CLASS_DESCRIPTOR).refMetaObject());
}
return topLevelModelElementTypes;
}
@Override
public String getPartionFolderName() {
return "src";
}
@Override
public String getPartitionExtension() {
return "types";
}
}