package gr.upatras.ece.nam.fstoolkit.providerAdapters; import java.util.ArrayList; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.ui.IViewSite; import brokermodel.experimentRuntime.RunningScenarios; import brokermodel.federationscenarios.RequestedFederationScenario; import brokermodel.federationscenarios.ResourceGroup; import brokermodel.federationscenarios.ResourceRequest; import brokermodel.uiObjects.UiObjectsFactory; import brokermodel.uiObjects.ui_TaxonomyTreeItem; public class RunningScenariosContentProvider implements IStructuredContentProvider, ITreeContentProvider { private IViewSite viewSite; private ui_TaxonomyTreeItem invisibleRoot; /* The content provider class is responsible for * providing objects to the view. It can wrap * existing objects in adapters or simply return * objects as-is. These objects may be sensitive * to the current input of the view, or ignore * it and always show the same content * (like Task List, for example). */ public RunningScenariosContentProvider(IViewSite viewSite) { super(); this.viewSite = viewSite; } @Override public void dispose() { // TODO Auto-generated method stub } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // TODO Auto-generated method stub } @Override public Object[] getChildren(Object parentElement) { if (parentElement instanceof ui_TaxonomyTreeItem) { if (((ui_TaxonomyTreeItem)parentElement).getChildNodes().size()>0){ return ((ui_TaxonomyTreeItem)parentElement).getChildNodes().toArray() ; } } return new Object[0]; } @Override public Object getParent(Object child) { if (child instanceof ui_TaxonomyTreeItem) { return ((ui_TaxonomyTreeItem)child).getParentNode(); } return null; } @Override public boolean hasChildren(Object parentElement) { if (parentElement instanceof ui_TaxonomyTreeItem) return ((ui_TaxonomyTreeItem)parentElement).getChildNodes().size()>0 ; return false; } @Override public Object[] getElements(Object parent) { if (parent.equals( viewSite )) { if (invisibleRoot==null) { invisibleRoot = UiObjectsFactory.eINSTANCE.createui_TaxonomyTreeItem(); //ui_TaxonomyTreeItem( null ); invisibleRoot.setDisplayName("Invisible root"); } return getChildren(invisibleRoot); } return getChildren(parent); } // public void AddBrokersFromManager(BrokerManager officeMng) { // for (int i = 0; i < officeMng.getBrokersRef().size() ; i++) { // AddBroker(officeMng.getBrokersRef().get(i)); // } // // } public void AddRunningScenarios(RunningScenarios runningScenarios) { //ui_TaxonomyTreeItem rootBroker = UiObjectsFactory.eINSTANCE.createui_TaxonomyTreeItem(); //rootBroker.setBrokerElement( null ); if (invisibleRoot==null) { invisibleRoot = UiObjectsFactory.eINSTANCE.createui_TaxonomyTreeItem(); invisibleRoot.setDisplayName("Invisible node"); } //invisibleRoot.getChildNodes().add(rootBroker); //rootBroker.setParentNode(invisibleRoot); AddUserRunningScenarios(invisibleRoot, runningScenarios ); } private void AddUserRunningScenarios(ui_TaxonomyTreeItem rootObj, RunningScenarios runningScenarios) { ui_TaxonomyTreeItem rootMyRunScen = rootObj; for (int j = 0; j < runningScenarios.getRequestedScenarios().size(); j++){ ui_TaxonomyTreeItem root = UiObjectsFactory.eINSTANCE.createui_TaxonomyTreeItem(); RequestedFederationScenario rs = runningScenarios.getRequestedScenarios().get(j); root.setBrokerElement( rs ); rootMyRunScen.getChildNodes().add(root); AddResourcesOfScenario(root, rs); } } public void AddResourcesOfScenario(ui_TaxonomyTreeItem root, RequestedFederationScenario aFS) { if ( aFS.getInfrastructureRequest() == null) return; //this array will be used only here to signal requests that are inside a group, so not to add them again ArrayList<ResourceRequest> tempRes = new ArrayList<ResourceRequest>(); //add groups first for (int i = 0; i < aFS.getInfrastructureRequest().getResourceGroups().size() ; i++) { ui_TaxonomyTreeItem treeItemGroup = UiObjectsFactory.eINSTANCE.createui_TaxonomyTreeItem(); ResourceGroup resG = aFS.getInfrastructureRequest().getResourceGroups().get(i); treeItemGroup.setBrokerElement( resG ); root.getChildNodes().add(treeItemGroup); treeItemGroup.setParentNode(root); for (int j = 0; j < resG.getGroupedResources().size() ; j++) { ui_TaxonomyTreeItem treeItem = UiObjectsFactory.eINSTANCE.createui_TaxonomyTreeItem(); treeItem.setBrokerElement( resG.getGroupedResources().get(j) ); treeItemGroup.getChildNodes().add(treeItem); treeItem.setParentNode(treeItemGroup); tempRes.add(resG.getGroupedResources().get(j)); } } for (int i = 0; i < aFS.getInfrastructureRequest().getReqOfferedResources().size() ; i++) if ( ! tempRes.contains(aFS.getInfrastructureRequest().getReqOfferedResources().get(i)) ){ //if not added already the resource in a group ui_TaxonomyTreeItem treeItem = UiObjectsFactory.eINSTANCE.createui_TaxonomyTreeItem(); treeItem.setBrokerElement( aFS.getInfrastructureRequest().getReqOfferedResources().get(i) ); root.getChildNodes().add(treeItem); treeItem.setParentNode(root); } } public void updateModel(){ } public void clearScenarios() { invisibleRoot.getChildNodes().clear() ; } }