/personalisation/CACIDiscovery/src/test/java/org/societies/personalisation/CACIDiscovery/test/CACIDiscoveryNonJunitTests.java

https://github.com/societies/SOCIETIES-Platform · Java · 209 lines · 116 code · 72 blank · 21 comment · 3 complexity · 3dd91b933ea8a53df7136064df482f96 MD5 · raw file

  1. package org.societies.personalisation.CACIDiscovery.test;
  2. import java.io.Serializable;
  3. import java.net.URI;
  4. import java.net.URISyntaxException;
  5. import java.util.ArrayList;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import org.societies.api.internal.context.model.CtxAttributeTypes;
  9. import org.societies.api.schema.servicelifecycle.model.ServiceResourceIdentifier;
  10. import org.societies.personalisation.CACIDiscovery.impl.CACIDiscovery;
  11. import org.societies.personalisation.CACIDiscovery.impl.UIModelSimilarityEval;
  12. import org.societies.personalisation.CAUI.api.CAUITaskManager.ICAUITaskManager;
  13. import org.societies.personalisation.CAUI.api.model.IUserIntentAction;
  14. import org.societies.personalisation.CAUI.api.model.UserIntentModelData;
  15. public class CACIDiscoveryNonJunitTests {
  16. CACIDiscovery discovery = null;
  17. static ICAUITaskManager cauiTaskManager = null;
  18. private static final String SERVICE_SRI1 = "css://requestor.societies.org/HelloWorld";
  19. private static final String SERVICE_TYPE = "radio_service";
  20. private static ServiceResourceIdentifier serviceSri1;
  21. //private static final String SERVICE_SRI2 = "css://requestor.societies.org/HelloWorld";
  22. //private static ServiceResourceIdentifier serviceSri2;
  23. CACIDiscoveryNonJunitTests() throws URISyntaxException{
  24. serviceSri1 = new ServiceResourceIdentifier();
  25. serviceSri1.setServiceInstanceIdentifier(SERVICE_SRI1);
  26. serviceSri1.setIdentifier(new URI(SERVICE_SRI1));
  27. /*
  28. serviceSri2 = new ServiceResourceIdentifier();
  29. serviceSri2.setServiceInstanceIdentifier(SERVICE_SRI2);
  30. serviceSri2.setIdentifier(new URI(SERVICE_SRI2));
  31. */
  32. discovery = new CACIDiscovery();
  33. cauiTaskManager = discovery.getCauiTaskManager();
  34. }
  35. public void testCommunityModelGeneration() {
  36. UserIntentModelData modelA = createCAUIModelA();
  37. UserIntentModelData modelB = createCAUIModelB();
  38. System.out.println("printModel(modelA)");
  39. printModel(modelA);
  40. System.out.println("printModel(modelB)");
  41. printModel(modelB);
  42. List<UserIntentModelData> uiModelList = new ArrayList<UserIntentModelData>();
  43. uiModelList.add(modelA);
  44. uiModelList.add(modelB);
  45. // uiModelList.add(modelC);
  46. //discovery.generateNewCommunityModel(uiModelList);
  47. UserIntentModelData merged = discovery.mergeModels(uiModelList);
  48. //System.out.println("1 merged:"+ merged);
  49. //System.out.println("2 merged:"+ merged.getActionModel().keySet());
  50. //System.out.println("3 merged:"+ merged.getActionModel());
  51. System.out.println("printModel(merged)");
  52. printModel(merged);
  53. System.out.println("context merge");
  54. }
  55. public static UserIntentModelData createCAUIModelA() {
  56. HashMap<String,Serializable> context1 = new HashMap<String,Serializable>();
  57. context1.put(CtxAttributeTypes.LOCATION_SYMBOLIC, "home");
  58. context1.put(CtxAttributeTypes.HOUR_OF_DAY, 1);
  59. context1.put(CtxAttributeTypes.DAY_OF_WEEK, "monday");
  60. HashMap<String,Serializable> context2 = new HashMap<String,Serializable>();
  61. context2.put(CtxAttributeTypes.LOCATION_SYMBOLIC, "office");
  62. context2.put(CtxAttributeTypes.HOUR_OF_DAY, 2);
  63. context2.put(CtxAttributeTypes.DAY_OF_WEEK, "tuesday");
  64. HashMap<String,Serializable> context3 = new HashMap<String,Serializable>();
  65. context3.put(CtxAttributeTypes.LOCATION_SYMBOLIC, "office");
  66. context3.put(CtxAttributeTypes.HOUR_OF_DAY, 3);
  67. context3.put(CtxAttributeTypes.DAY_OF_WEEK, "tuesday");
  68. UserIntentModelData modelDataA = cauiTaskManager.createModel();
  69. //IUserIntentAction userActionOn1 = new UserIntentAction(serviceSri ,SERVICE_TYPE,"A","on",10L);
  70. IUserIntentAction userActionOn1 = cauiTaskManager.createAction(serviceSri1 ,SERVICE_TYPE,"A","A");
  71. userActionOn1.setActionContext(context1);
  72. //IUserIntentAction userActionSetVol = new UserIntentAction(serviceSri ,SERVICE_TYPE,"SetVolume","medium",11L);
  73. IUserIntentAction userActionSetVol = cauiTaskManager.createAction(serviceSri1 ,SERVICE_TYPE,"B","B");
  74. userActionSetVol.setActionContext(context1);
  75. //IUserIntentAction userActionSetChannel = new UserIntentAction(serviceSri ,SERVICE_TYPE,"SetChannel","radio1",11L);
  76. IUserIntentAction userActionSetChannel = cauiTaskManager.createAction(serviceSri1 ,SERVICE_TYPE,"C","C");
  77. userActionSetChannel.setActionContext(context3);
  78. //IUserIntentAction userActionOff1 = new UserIntentAction(serviceSri ,SERVICE_TYPE,"A","off",12L);
  79. IUserIntentAction userActionOff1 = cauiTaskManager.createAction(serviceSri1 ,SERVICE_TYPE,"D","D");
  80. userActionOff1.setActionContext(context2);
  81. //On --> setVol 0.5
  82. cauiTaskManager.setActionLink(userActionOn1, userActionSetVol, 0.3d);
  83. cauiTaskManager.setActionLink(userActionOn1, userActionSetChannel, 0.7d);
  84. cauiTaskManager.setActionLink(userActionSetVol, userActionOff1, 1.0d);
  85. cauiTaskManager.setActionLink(userActionSetChannel, userActionOff1, 1.0d);
  86. modelDataA = cauiTaskManager.retrieveModel();
  87. System.out.println("A CAUI modelData ::"+modelDataA.getActionModel());
  88. return modelDataA;
  89. }
  90. public static UserIntentModelData createCAUIModelB(){
  91. HashMap<String,Serializable> context1 = new HashMap<String,Serializable>();
  92. context1.put(CtxAttributeTypes.LOCATION_SYMBOLIC, "office");
  93. context1.put(CtxAttributeTypes.HOUR_OF_DAY, 2);
  94. context1.put(CtxAttributeTypes.DAY_OF_WEEK, "tuesday");
  95. HashMap<String,Serializable> context2 = new HashMap<String,Serializable>();
  96. context2.put(CtxAttributeTypes.LOCATION_SYMBOLIC, "home");
  97. context2.put(CtxAttributeTypes.HOUR_OF_DAY, 1);
  98. context2.put(CtxAttributeTypes.DAY_OF_WEEK, "monday");
  99. UserIntentModelData modelData = cauiTaskManager.createModel();
  100. IUserIntentAction actA = cauiTaskManager.createAction(serviceSri1 ,SERVICE_TYPE,"A","A");
  101. actA.setActionContext(context1);
  102. //IUserIntentAction userActionOff1 = cauiTaskManager.createAction(serviceSri ,SERVICE_TYPE,"B","off");
  103. IUserIntentAction actB = cauiTaskManager.createAction(serviceSri1 ,SERVICE_TYPE,"B","B");
  104. actB.setActionContext(context1);
  105. IUserIntentAction actE = cauiTaskManager.createAction(serviceSri1 ,SERVICE_TYPE,"E","E");
  106. IUserIntentAction actD = cauiTaskManager.createAction(serviceSri1 ,SERVICE_TYPE,"D","D");
  107. actD.setActionContext(context1);
  108. //On --> setVol 0.5
  109. cauiTaskManager.setActionLink(actA, actB, 0.8d);
  110. cauiTaskManager.setActionLink(actA, actE, 0.2d);
  111. cauiTaskManager.setActionLink(actE, actD, 1.0d);
  112. cauiTaskManager.setActionLink(actB, actE, 1.0d);
  113. modelData = cauiTaskManager.retrieveModel();
  114. System.out.println("B CAUI modelData ::"+modelData.getActionModel());
  115. //printModel(modelData);
  116. return modelData;
  117. }
  118. private static void printModel(UserIntentModelData model){
  119. HashMap<IUserIntentAction, HashMap<IUserIntentAction, Double>> allActions = new HashMap<IUserIntentAction, HashMap<IUserIntentAction, Double>>();
  120. allActions = model.getActionModel();
  121. //System.out.println("------------printModel start ---------------");
  122. for(IUserIntentAction action : allActions.keySet()){
  123. System.out.println("source:"+action.getparameterName()+"/"+action.getvalue() +" ctx:"+ action.getActionContext());
  124. if(allActions.get(action)!=null){
  125. HashMap<IUserIntentAction, Double> targetActions = allActions.get(action);
  126. for(IUserIntentAction actionTarget : targetActions.keySet()){
  127. System.out.println("--> target:"+actionTarget.getparameterName()+"/"+actionTarget.getvalue()+"/"+ targetActions.get(actionTarget)/*+" ctx:"+ actionTarget.getActionContext()*/);
  128. }
  129. }
  130. }
  131. System.out.println("------------printModel end ---------------");
  132. }
  133. public static void main(String[] args) throws URISyntaxException {
  134. CACIDiscoveryNonJunitTests cdt = new CACIDiscoveryNonJunitTests();
  135. cdt.testCommunityModelGeneration();
  136. }
  137. }