package org.societies.useragent.dmcomms; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.societies.api.comm.xmpp.datatypes.Stanza; import org.societies.api.comm.xmpp.exceptions.CommunicationException; import org.societies.api.comm.xmpp.exceptions.XMPPError; import org.societies.api.comm.xmpp.interfaces.ICommManager; import org.societies.api.comm.xmpp.interfaces.IFeatureServer; import org.societies.api.identity.IIdentityManager; import org.societies.api.internal.personalisation.model.IOutcome; import org.societies.api.schema.servicelifecycle.model.ServiceResourceIdentifier; import org.societies.api.schema.useragent.decisionmaking.DecisionMakingBean; import org.societies.useragent.decisionmaking.DecisionMaker; public class DMCommsServer implements IFeatureServer { private static final List<String> NAMESPACES = Collections .unmodifiableList(Arrays .asList("http://societies.org/api/schema/useragent/decisionmaking")); private static final List<String> PACKAGES = Collections .unmodifiableList(Arrays .asList("org.societies.api.schema.useragent.decisionmaking")); // PRIVATE VARIABLES private ICommManager commManager; private DecisionMaker dmaker; private IIdentityManager idManager; // PROPERTIES public ICommManager getCommManager() { return commManager; } public void setCommManager(ICommManager commManager) { this.commManager = commManager; } public DecisionMaker getDmaker() { return dmaker; } public void setDmaker(DecisionMaker dmaker) { this.dmaker = dmaker; } // METHODS public DMCommsServer() { } public void InitService() { // REGISTER OUR CommsManager WITH THE XMPP Communication Manager try { getCommManager().register(this); } catch (CommunicationException e) { e.printStackTrace(); } idManager = commManager.getIdManager(); } public List<String> getJavaPackages() { return PACKAGES; } public List<String> getXMLNamespaces() { return NAMESPACES; } public void receiveMessage(Stanza stanza, Object payload) { // CHECK WHICH END BUNDLE TO BE CALLED THAT I MANAGE if (payload instanceof DecisionMakingBean) { this.receiveMessage(stanza, (DecisionMakingBean) payload); } } public void receiveMessage(Stanza stanza, DecisionMakingBean payload) { // ---- UAM Bundle --- DecisionMakingBean dmakingBean = (DecisionMakingBean) payload; try { // IIdentity owner = idManager.fromJid(monitorBean.getIdentity()); // ServiceResourceIdentifier serviceId = monitorBean // .getServiceResourceIdentifier(); // String serviceType = monitorBean.getServiceType(); // String parameterName = monitorBean.getParameterName(); // String value = monitorBean.getValue(); // IAction action = new Action(serviceId, serviceType, // parameterName, value); // uam.monitor(owner, action); // break; List<IOutcome> intents = new ArrayList<IOutcome>(); List<IOutcome> preferences = new ArrayList<IOutcome>(); List<ServiceResourceIdentifier> intentServiceIds = dmakingBean .getIntentServiceIds(); List<String> intentServiceTypes = dmakingBean .getIntentServiceTypes(); List<String> intentParameterNames = dmakingBean .getIntentParameterNames(); List<ServiceResourceIdentifier> preferenceServiceIds = dmakingBean .getPreferenceServiceIds(); List<String> preferenceServiceTypes = dmakingBean .getPreferenceServiceTypes(); List<String> preferenceParameterNames = dmakingBean .getPreferenceParameterNames(); List<Integer> intentConfidenceLevels=dmakingBean .getIntentConfidenceLevel(); List<Integer> preferenceConfidenceLevels=dmakingBean .getPreferenceConfidenceLevel(); List<String> intentValues = dmakingBean .getIntentValues(); List<String> preferenceValues = dmakingBean .getPreferenceValues(); int intentSize=dmakingBean.getIntentSize(); int preferenceSize=dmakingBean.getPreferenceSize(); for(int i=0;i<intentSize;i++){ IOutcome intent=new IOutcomeDO( intentServiceIds.get(i), intentServiceTypes.get(i), intentParameterNames.get(i), intentValues.get(i), intentConfidenceLevels.get(i)); intents.add(intent); } for(int i=0;i<preferenceSize;i++){ IOutcome preference=new IOutcomeDO( preferenceServiceIds.get(i), preferenceServiceTypes.get(i), preferenceParameterNames.get(i), preferenceValues.get(i), preferenceConfidenceLevels.get(i)); preferences.add(preference); } this.dmaker.makeDecision(intents, preferences); } catch (Exception e) { e.printStackTrace(); } } public Object getQuery(Stanza arg0, Object arg1) throws XMPPError { // PUT FUNCTIONALITY HERE FOR IF THERE IS A RETURN TYPE return null; } public Object setQuery(Stanza arg0, Object arg1) throws XMPPError { return null; } }