Guest User

Untitled

a guest
Feb 21st, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. require 'java'
  2. require 'rbconfig'
  3.  
  4. import org.concord.modeler.event.PageListener
  5. import org.concord.modeler.event.PageEvent
  6. import org.concord.modeler.event.ModelListener
  7. import org.concord.modeler.event.ModelEvent
  8.  
  9. # import java.lang.Class
  10. import java.lang.System
  11.  
  12. $page = $objView.getPage();
  13.  
  14. class MyPageListener
  15. include org.concord.modeler.event.PageListener
  16.  
  17. def pageUpdate(event)
  18. if (event.getType() == PageEvent::PAGE_READ_END)
  19. postMWInit
  20. end
  21. end
  22. end
  23.  
  24. $pageListener = MyPageListener.new
  25.  
  26. class MyModelListener
  27. org.concord.modeler.event.ModelListener
  28.  
  29. def modelUpdate(event)
  30. if (event.getID() == ModelEvent::MODEL_RESET || event.getID() == ModelEvent::MODEL_INPUT)
  31. end_run()
  32. elsif (event.getID() == ModelEvent::MODEL_RUN)
  33. start_run()
  34. log_location()
  35. elsif (event.getID() == ModelEvent::MODEL_STOP)
  36. end_run()
  37. end
  38. end
  39. end
  40.  
  41. $modelListener = MyModelListener.new
  42.  
  43.  
  44. def init()
  45. $page.addPageListener($pageListener)
  46. init_logging()
  47. return true
  48. end
  49.  
  50. def save()
  51. $page.removePageListener($pageListener)
  52. $model.removeModelListener($modelListener)
  53. finalize_logging()
  54. return true
  55. end
  56.  
  57.  
  58. def postMWInit()
  59. models = $page.getEmbeddedComponent(java.lang.Class.forName("org.concord.modeler.ModelCanvas")).values().toArray()
  60. if (models != nil)
  61. for i in 0..models.length-1
  62. $model = models[i].getContainer().getModel()
  63. $model.addModelListener($modelListener)
  64. end
  65. end
  66. end
  67.  
  68. def log_location()
  69. x = $model.getModelTime()/1000;
  70. cmX = x.round
  71. # $stderr.puts "X is: " + x.to_s + ", " + cmX.to_s
  72. log_ci("Location", cmX.to_s)
  73. end
  74.  
  75. # for logging
  76. $mad;
  77. $modelruns;
  78. $current_run;
  79. $ci_array = {};
  80. $ra_array = {};
  81.  
  82. def init_logging()
  83. # set up MAD
  84. $mad = $context.getOTObject("org.concord.otrunk.modelactivitydata.OTModelActivityData");
  85. $otContents.add($mad);
  86.  
  87. $mad.setName("Hanging With Friends - Vector Motion Model");
  88. $modelruns = $mad.getModelRuns();
  89.  
  90. $mad.setStartTime(now());
  91. # set up CI's
  92. # Location of the object
  93. add_computational_input("Location");
  94.  
  95. # reset event
  96. # add_representational_attribute("Reset Event", new Array("Reset"));
  97. end
  98.  
  99. def add_computational_input(ci_name)
  100. comp_inputs = $mad.getComputationalInputs();
  101. # new comp_input
  102. ci = $context.getOTObject("org.concord.otrunk.modelactivitydata.OTComputationalInput");
  103. ci.setName(ci_name);
  104.  
  105. # add to comp_inputs
  106. comp_inputs.add(ci);
  107.  
  108. # add to ci_array
  109. $ci_array[ci_name] = ci;
  110. end
  111.  
  112. def add_representational_attribute(ra_name, values)
  113. ras = $mad.getRepresentationalAttributes();
  114. ra = $context.getOTObject("org.concord.otrunk.modelactivitydata.OTRepresentationalAttribute");
  115. ra.setName(ra_name);
  116. # if (values != nil)
  117. # vals = ra.getValueList();
  118. # for i in 0..values.length-1
  119. # FIXME: skip for now
  120. # vals.add(values[i]);
  121. # end
  122. # end
  123. ras.add(ra);
  124. $ra_array[ra_name] = ra;
  125. end
  126.  
  127. def start_run()
  128. if ($current_run == nil)
  129. $current_run = $context.getOTObject("org.concord.otrunk.modelactivitydata.OTModelRun");
  130. $modelruns.add($current_run);
  131. $current_run.setStartTime(now());
  132. end
  133. end
  134.  
  135. def end_run()
  136. if ($current_run != nil)
  137. $current_run.setEndTime(now());
  138. $current_run = nil;
  139. end
  140. end
  141.  
  142. def log_ci(ci_idx, value)
  143. if ($current_run == nil)
  144. start_run();
  145. end
  146.  
  147. ci = $ci_array[ci_idx];
  148. civ = $context.getOTObject("org.concord.otrunk.modelactivitydata.OTComputationalInputValue");
  149. civ.setTime(now());
  150. civ.setValue(value);
  151. civ.setReference(ci);
  152. $current_run.getComputationalInputValues().add(civ);
  153. end
  154.  
  155. def log_ra(ra_idx, value)
  156. if (current_run == nil)
  157. start_run();
  158. end
  159.  
  160. ra = $ra_array[ra_idx];
  161. rav = $context.getOTObject("org.concord.otrunk.modelactivitydata.OTRepresentationalAttributeValue");
  162. rav.setTime(now());
  163. rav.setValue(value);
  164. rav.setReference(ra);
  165. $current_run.getRepresentationalAttributeValues().add(rav);
  166. end
  167.  
  168. def finalize_logging()
  169. end_run();
  170. $mad.setEndTime(now());
  171. end
  172.  
  173. def now()
  174. return System.currentTimeMillis();
  175. end
Add Comment
Please, Sign In to add comment