package gr.upatras.ece.nam.fstoolkit.uop;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EOperation;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.resource.Resource;
import gr.upatras.ece.nam.fci.core.ParameterValuePair;
import gr.upatras.ece.nam.fci.core.ResourceContext;
import gr.upatras.ece.nam.fci.core.ResourceProxy;
import brokermodel.extensionInterfaces.IProvisionResource;
import brokermodel.federationscenarios.RequestedFederationScenario;
import brokermodel.federationscenarios.ResourceRequest;
import brokermodel.federationscenarios.ResourceSettingInstance;
public class ProvisionResource implements IProvisionResource {
public ProvisionResource() {
// TODO Auto-generated constructor stub
}
@Override
public EClass eClass() {
// TODO Auto-generated method stub
return null;
}
@Override
public Resource eResource() {
// TODO Auto-generated method stub
return null;
}
@Override
public EObject eContainer() {
// TODO Auto-generated method stub
return null;
}
@Override
public EStructuralFeature eContainingFeature() {
// TODO Auto-generated method stub
return null;
}
@Override
public EReference eContainmentFeature() {
// TODO Auto-generated method stub
return null;
}
@Override
public EList<EObject> eContents() {
// TODO Auto-generated method stub
return null;
}
@Override
public TreeIterator<EObject> eAllContents() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean eIsProxy() {
// TODO Auto-generated method stub
return false;
}
@Override
public EList<EObject> eCrossReferences() {
// TODO Auto-generated method stub
return null;
}
@Override
public Object eGet(EStructuralFeature feature) {
// TODO Auto-generated method stub
return null;
}
@Override
public Object eGet(EStructuralFeature feature, boolean resolve) {
// TODO Auto-generated method stub
return null;
}
@Override
public void eSet(EStructuralFeature feature, Object newValue) {
// TODO Auto-generated method stub
}
@Override
public boolean eIsSet(EStructuralFeature feature) {
// TODO Auto-generated method stub
return false;
}
@Override
public void eUnset(EStructuralFeature feature) {
// TODO Auto-generated method stub
}
@Override
public Object eInvoke(EOperation operation, EList<?> arguments)
throws InvocationTargetException {
// TODO Auto-generated method stub
return null;
}
@Override
public EList<Adapter> eAdapters() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean eDeliver() {
// TODO Auto-generated method stub
return false;
}
@Override
public void eSetDeliver(boolean deliver) {
// TODO Auto-generated method stub
}
@Override
public void eNotify(Notification notification) {
// TODO Auto-generated method stub
}
@Override
public boolean supportsBroker(String officeName) {
return Activator.getDefault().getBrokerName().equalsIgnoreCase(officeName);
}
@Override
public String getSupportedBrokerName() {
return Activator.getDefault().getBrokerName();
}
@Override
public String provisionResource(String officeName,
RequestedFederationScenario scenario, ResourceRequest resourceReq) {
System.out.println("officeName = "+officeName+", scenario=" +scenario.toString()
+", resource=" +resourceReq.toString());
System.out.println(", getRefOfferedResource=" +resourceReq.getRefOfferedResource().toString() );
System.out.println(", getBelongsToSite=" +resourceReq.getRefOfferedResource().getBelongsToSite().toString() );
System.out.println(", getBelongsToProvider=" +resourceReq.getRefOfferedResource().getBelongsToSite().getBelongsToProvider().toString() );
System.out.println(", getPtm=" +resourceReq.getRefOfferedResource().getBelongsToSite().getDomainManager().getIP() );
System.out.println(", getImplOfferedService=" +resourceReq.getRefOfferedResource().getImplOfferedService().toString() );
System.out.println(", getImplOfferedService.eContainer=" +resourceReq.getRefOfferedResource().getImplOfferedService().eContainer().toString() );
System.out.println(", BrokerProvider.getInstance()="+ Activator.getDefault().getResourceContext().toString() );
System.out.println(", BrokerProvider.getInstance()="+ Activator.getDefault().getResourceContext().getBrokerModel().toString() );
ResourceContext uop = Activator.getDefault().getResourceContext();
ResourceProxy rproxy = uop.createResourceProxyByResourceRequest(scenario.getName() , resourceReq);
if (rproxy!=null)
return rproxy.getGUID();
else
return "";
}
@Override
public String deleteResource(String officeName,
RequestedFederationScenario scenario, ResourceRequest resourceReq) {
System.out.println("DELETE RESOURCE: officeName = "+officeName+", scenario=" +scenario.toString()
+", resource=" +resourceReq.toString());
ResourceContext uop = Activator.getDefault().getResourceContext();
//ResourceProxy rproxy = panlab. createResourceProxyByResourceRequest((scenario.getName() , resourceReq);
ResourceProxy rproxy = uop.getResourceProxy( resourceReq.getRuntimeInfo().getGUID() );
if (rproxy==null)
rproxy = uop.createResourceProxyByResourceRequest(scenario.getName(), resourceReq);
if (rproxy!=null)
return rproxy.DeleteResource() ;
return "failed";
}
@Override
public String updateResource(String officeName,
RequestedFederationScenario scenario, ResourceRequest resourceReq,
EList<ResourceSettingInstance> assignedSetting) {
System.out.println("officeName = "+officeName+
", read resource w guid =" + resourceReq.getRuntimeInfo().getGUID() );
ResourceContext uop = Activator.getDefault().getResourceContext();
ResourceProxy rproxy = uop.getResourceProxy( resourceReq.getRuntimeInfo().getGUID() );
if (rproxy==null)
rproxy = uop.createResourceProxyByResourceRequest(scenario.getName(), resourceReq);
List<ParameterValuePair> params = new ArrayList<ParameterValuePair>();
for (Iterator iterator = assignedSetting.iterator(); iterator.hasNext();) {
ResourceSettingInstance resourceSettingInstance = (ResourceSettingInstance) iterator.next();
ParameterValuePair p = new ParameterValuePair(
resourceSettingInstance.getRefResourceSetting().getName() ,
resourceSettingInstance.getStaticValue(),
resourceSettingInstance.getName() );
params.add(p);
}
if (rproxy!=null)
return rproxy.UpdateResource(params);
// updateParameterValueOfResource(assignedSetting.getRefResourceSetting().getName(),
// assignedSetting.getStaticValue());
return "failed";
}
@Override
public String readResource(String officeName,
RequestedFederationScenario scenario, ResourceRequest resourceReq,
ResourceSettingInstance assignedSetting, boolean forceUpdate) {
System.out.println("officeName = "+officeName+
", read resource w guid =" + resourceReq.getRuntimeInfo().getGUID() );
ResourceContext uop = Activator.getDefault().getResourceContext();
ResourceProxy rproxy = uop.getResourceProxy( resourceReq.getRuntimeInfo().getGUID() );
if (rproxy==null)
rproxy = uop.createResourceProxyByResourceRequest(scenario.getName(), resourceReq);
if (rproxy!=null)
return rproxy.getParameterValueOfResource(assignedSetting.getRefResourceSetting().getName() , forceUpdate);
return "failed";
}
}