taskjuggler 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. data/CHANGELOG +1144 -2047
  2. data/README +1 -1
  3. data/Rakefile +6 -6
  4. data/data/css/tjmanual.css +20 -0
  5. data/data/css/tjreport.css +7 -6
  6. data/doc/AppConfig.html +136 -130
  7. data/doc/Arguments.html +46 -40
  8. data/doc/CHANGELOG.html +1162 -2057
  9. data/doc/COPYING.html +8 -2
  10. data/doc/Object.html +205 -199
  11. data/doc/README.html +9 -3
  12. data/doc/RuntimeConfig.html +75 -69
  13. data/doc/String.html +69 -63
  14. data/doc/TaskJuggler.html +350 -291
  15. data/doc/TaskJuggler/Account.html +26 -20
  16. data/doc/TaskJuggler/AccountAttribute.html +24 -18
  17. data/doc/TaskJuggler/AccountScenario.html +24 -18
  18. data/doc/TaskJuggler/Allocation.html +74 -68
  19. data/doc/TaskJuggler/AllocationAttribute.html +54 -48
  20. data/doc/TaskJuggler/AttributeBase.html +172 -93
  21. data/doc/TaskJuggler/AttributeDefinition.html +22 -16
  22. data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
  23. data/doc/TaskJuggler/BatchProcessor.html +263 -257
  24. data/doc/TaskJuggler/Booking.html +44 -38
  25. data/doc/TaskJuggler/BookingListAttribute.html +25 -21
  26. data/doc/TaskJuggler/BooleanAttribute.html +24 -18
  27. data/doc/TaskJuggler/CSVFile.html +193 -187
  28. data/doc/TaskJuggler/CellSettingPattern.html +13 -7
  29. data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
  30. data/doc/TaskJuggler/Charge.html +49 -43
  31. data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
  32. data/doc/TaskJuggler/ChargeSet.html +94 -88
  33. data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
  34. data/doc/TaskJuggler/CollisionDetector.html +142 -136
  35. data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
  36. data/doc/TaskJuggler/ColumnTable.html +50 -44
  37. data/doc/TaskJuggler/Daemon.html +71 -50
  38. data/doc/TaskJuggler/DataCache.html +110 -58
  39. data/doc/TaskJuggler/DataCacheEntry.html +22 -16
  40. data/doc/TaskJuggler/DateAttribute.html +24 -18
  41. data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
  42. data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
  43. data/doc/TaskJuggler/DurationAttribute.html +25 -19
  44. data/doc/TaskJuggler/FileList.html +25 -19
  45. data/doc/TaskJuggler/FileRecord.html +17 -11
  46. data/doc/TaskJuggler/FixnumAttribute.html +16 -10
  47. data/doc/TaskJuggler/FlagListAttribute.html +25 -21
  48. data/doc/TaskJuggler/FloatAttribute.html +20 -14
  49. data/doc/TaskJuggler/FormatListAttribute.html +17 -11
  50. data/doc/TaskJuggler/GanttChart.html +242 -236
  51. data/doc/TaskJuggler/GanttContainer.html +71 -67
  52. data/doc/TaskJuggler/GanttHeader.html +113 -107
  53. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
  54. data/doc/TaskJuggler/GanttLine.html +217 -210
  55. data/doc/TaskJuggler/GanttLoadStack.html +89 -83
  56. data/doc/TaskJuggler/GanttMilestone.html +11 -6
  57. data/doc/TaskJuggler/GanttRouter.html +194 -186
  58. data/doc/TaskJuggler/GanttTaskBar.html +41 -34
  59. data/doc/TaskJuggler/HTMLDocument.html +52 -46
  60. data/doc/TaskJuggler/HTMLGraphics.html +58 -52
  61. data/doc/TaskJuggler/Interval.html +90 -84
  62. data/doc/TaskJuggler/IntervalList.html +777 -0
  63. data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
  64. data/doc/TaskJuggler/JobInfo.html +36 -30
  65. data/doc/TaskJuggler/Journal.html +188 -177
  66. data/doc/TaskJuggler/JournalEntry.html +36 -30
  67. data/doc/TaskJuggler/JournalEntryList.html +88 -82
  68. data/doc/TaskJuggler/KeywordArray.html +12 -6
  69. data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
  70. data/doc/TaskJuggler/Limits.html +111 -105
  71. data/doc/TaskJuggler/Limits/Limit.html +71 -65
  72. data/doc/TaskJuggler/LimitsAttribute.html +21 -15
  73. data/doc/TaskJuggler/ListAttributeBase.html +16 -10
  74. data/doc/TaskJuggler/Log.html +111 -105
  75. data/doc/TaskJuggler/LogFile.html +54 -48
  76. data/doc/TaskJuggler/LogicalAttribute.html +35 -29
  77. data/doc/TaskJuggler/LogicalExpression.html +32 -26
  78. data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
  79. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
  80. data/doc/TaskJuggler/LogicalFlag.html +24 -18
  81. data/doc/TaskJuggler/LogicalFunction.html +164 -158
  82. data/doc/TaskJuggler/LogicalOperation.html +138 -132
  83. data/doc/TaskJuggler/Macro.html +14 -8
  84. data/doc/TaskJuggler/MacroTable.html +42 -36
  85. data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
  86. data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
  87. data/doc/TaskJuggler/Message.html +56 -50
  88. data/doc/TaskJuggler/MessageHandler.html +73 -67
  89. data/doc/TaskJuggler/Navigator.html +92 -86
  90. data/doc/TaskJuggler/NavigatorElement.html +88 -82
  91. data/doc/TaskJuggler/NikuProject.html +15 -9
  92. data/doc/TaskJuggler/NikuReport.html +405 -370
  93. data/doc/TaskJuggler/NikuResource.html +13 -7
  94. data/doc/TaskJuggler/NodeListAttribute.html +13 -9
  95. data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
  96. data/doc/TaskJuggler/ProcessIntercom.html +116 -110
  97. data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
  98. data/doc/TaskJuggler/Project.html +1064 -895
  99. data/doc/TaskJuggler/ProjectBroker.html +439 -366
  100. data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
  101. data/doc/TaskJuggler/ProjectFileParser.html +329 -319
  102. data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
  103. data/doc/TaskJuggler/ProjectRecord.html +66 -60
  104. data/doc/TaskJuggler/ProjectServer.html +287 -280
  105. data/doc/TaskJuggler/ProjectServerIface.html +43 -37
  106. data/doc/TaskJuggler/PropertyAttribute.html +16 -10
  107. data/doc/TaskJuggler/PropertyList.html +205 -199
  108. data/doc/TaskJuggler/PropertySet.html +264 -296
  109. data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
  110. data/doc/TaskJuggler/Query.html +309 -524
  111. data/doc/TaskJuggler/RTFHandlers.html +17 -11
  112. data/doc/TaskJuggler/RTFNavigator.html +33 -27
  113. data/doc/TaskJuggler/RTFQuery.html +135 -129
  114. data/doc/TaskJuggler/RTFReport.html +63 -57
  115. data/doc/TaskJuggler/RTFReportLink.html +55 -49
  116. data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
  117. data/doc/TaskJuggler/RealFormat.html +64 -58
  118. data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
  119. data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
  120. data/doc/TaskJuggler/Report.html +294 -249
  121. data/doc/TaskJuggler/ReportBase.html +229 -223
  122. data/doc/TaskJuggler/ReportContext.html +52 -46
  123. data/doc/TaskJuggler/ReportServer.html +143 -137
  124. data/doc/TaskJuggler/ReportServerIface.html +51 -43
  125. data/doc/TaskJuggler/ReportServerRecord.html +36 -30
  126. data/doc/TaskJuggler/ReportServlet.html +167 -140
  127. data/doc/TaskJuggler/ReportTable.html +137 -131
  128. data/doc/TaskJuggler/ReportTableCell.html +332 -292
  129. data/doc/TaskJuggler/ReportTableColumn.html +46 -40
  130. data/doc/TaskJuggler/ReportTableLegend.html +43 -38
  131. data/doc/TaskJuggler/ReportTableLine.html +66 -60
  132. data/doc/TaskJuggler/Resource.html +166 -160
  133. data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
  134. data/doc/TaskJuggler/ResourceListRE.html +47 -41
  135. data/doc/TaskJuggler/ResourceScenario.html +671 -644
  136. data/doc/TaskJuggler/RichText.html +51 -45
  137. data/doc/TaskJuggler/RichTextAttribute.html +28 -22
  138. data/doc/TaskJuggler/RichTextDocument.html +96 -90
  139. data/doc/TaskJuggler/RichTextElement.html +503 -497
  140. data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
  141. data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
  142. data/doc/TaskJuggler/RichTextImage.html +14 -8
  143. data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
  144. data/doc/TaskJuggler/RichTextParser.html +59 -53
  145. data/doc/TaskJuggler/RichTextScanner.html +184 -178
  146. data/doc/TaskJuggler/RichTextSnip.html +69 -63
  147. data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
  148. data/doc/TaskJuggler/Scenario.html +13 -7
  149. data/doc/TaskJuggler/ScenarioData.html +40 -34
  150. data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
  151. data/doc/TaskJuggler/Scoreboard.html +129 -107
  152. data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
  153. data/doc/TaskJuggler/SheetReceiver.html +333 -327
  154. data/doc/TaskJuggler/SheetSender.html +227 -221
  155. data/doc/TaskJuggler/Shift.html +26 -20
  156. data/doc/TaskJuggler/ShiftAssignment.html +45 -39
  157. data/doc/TaskJuggler/ShiftAssignments.html +178 -172
  158. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
  159. data/doc/TaskJuggler/ShiftScenario.html +29 -23
  160. data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
  161. data/doc/TaskJuggler/SortListAttribute.html +17 -13
  162. data/doc/TaskJuggler/SourceFileInfo.html +19 -13
  163. data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
  164. data/doc/TaskJuggler/StatusSheetReport.html +166 -159
  165. data/doc/TaskJuggler/StatusSheetSender.html +80 -74
  166. data/doc/TaskJuggler/StringAttribute.html +20 -14
  167. data/doc/TaskJuggler/SymbolAttribute.html +16 -10
  168. data/doc/TaskJuggler/SyntaxReference.html +231 -225
  169. data/doc/TaskJuggler/TOCEntry.html +46 -40
  170. data/doc/TaskJuggler/TSResourceRecord.html +15 -9
  171. data/doc/TaskJuggler/TSTaskRecord.html +16 -10
  172. data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
  173. data/doc/TaskJuggler/TableOfContents.html +28 -22
  174. data/doc/TaskJuggler/TableReport.html +906 -866
  175. data/doc/TaskJuggler/Task.html +99 -93
  176. data/doc/TaskJuggler/TaskDependency.html +24 -18
  177. data/doc/TaskJuggler/TaskListAttribute.html +29 -25
  178. data/doc/TaskJuggler/TaskListRE.html +46 -39
  179. data/doc/TaskJuggler/TaskScenario.html +2218 -1965
  180. data/doc/TaskJuggler/TextFormatter.html +154 -148
  181. data/doc/TaskJuggler/TextParser.html +362 -348
  182. data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
  183. data/doc/TaskJuggler/TextParser/Rule.html +147 -141
  184. data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
  185. data/doc/TaskJuggler/TextParser/State.html +88 -82
  186. data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
  187. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
  188. data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
  189. data/doc/TaskJuggler/TextReport.html +80 -74
  190. data/doc/TaskJuggler/TextScanner.html +284 -272
  191. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
  192. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
  193. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
  194. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  195. data/doc/TaskJuggler/TimeSheet.html +123 -117
  196. data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
  197. data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
  198. data/doc/TaskJuggler/TimeSheetReport.html +206 -199
  199. data/doc/TaskJuggler/TimeSheetSender.html +27 -21
  200. data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
  201. data/doc/TaskJuggler/TimeSheets.html +20 -14
  202. data/doc/TaskJuggler/Tj3AppBase.html +100 -94
  203. data/doc/TaskJuggler/Tj3Client.html +407 -483
  204. data/doc/TaskJuggler/Tj3Daemon.html +116 -107
  205. data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
  206. data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
  207. data/doc/TaskJuggler/Tj3SsSender.html +64 -58
  208. data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
  209. data/doc/TaskJuggler/Tj3TsSender.html +51 -45
  210. data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
  211. data/doc/TaskJuggler/TjException.html +13 -7
  212. data/doc/TaskJuggler/TjTime.html +444 -438
  213. data/doc/TaskJuggler/TjpExample.html +84 -78
  214. data/doc/TaskJuggler/TjpExportRE.html +356 -349
  215. data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
  216. data/doc/TaskJuggler/URLParameter.html +16 -10
  217. data/doc/TaskJuggler/UserManual.html +185 -179
  218. data/doc/TaskJuggler/VimSyntax.html +144 -138
  219. data/doc/TaskJuggler/WebServer.html +46 -39
  220. data/doc/TaskJuggler/WelcomePage.html +769 -0
  221. data/doc/TaskJuggler/WorkingHours.html +185 -179
  222. data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
  223. data/doc/TaskJuggler/XMLBlob.html +21 -15
  224. data/doc/TaskJuggler/XMLComment.html +17 -11
  225. data/doc/TaskJuggler/XMLDocument.html +33 -27
  226. data/doc/TaskJuggler/XMLElement.html +97 -91
  227. data/doc/TaskJuggler/XMLNamedText.html +13 -7
  228. data/doc/TaskJuggler/XMLText.html +32 -26
  229. data/doc/index.html +601 -563
  230. data/doc/lib/AccountScenario_rb.html +5 -3
  231. data/doc/lib/Account_rb.html +5 -3
  232. data/doc/lib/Allocation_rb.html +5 -3
  233. data/doc/lib/AppConfig_rb.html +5 -3
  234. data/doc/lib/AttributeBase_rb.html +5 -3
  235. data/doc/lib/AttributeDefinition_rb.html +5 -3
  236. data/doc/lib/Attributes_rb.html +5 -3
  237. data/doc/lib/BatchProcessor_rb.html +5 -3
  238. data/doc/lib/Booking_rb.html +5 -3
  239. data/doc/lib/ChargeSet_rb.html +5 -3
  240. data/doc/lib/Charge_rb.html +5 -3
  241. data/doc/lib/DataCache_rb.html +5 -3
  242. data/doc/lib/FileList_rb.html +5 -3
  243. data/doc/lib/HTMLDocument_rb.html +5 -3
  244. data/doc/lib/IntervalList_rb.html +69 -0
  245. data/doc/lib/Interval_rb.html +5 -3
  246. data/doc/lib/Journal_rb.html +5 -3
  247. data/doc/lib/KeywordArray_rb.html +5 -3
  248. data/doc/lib/KeywordDocumentation_rb.html +5 -3
  249. data/doc/lib/Limits_rb.html +5 -3
  250. data/doc/lib/LogFile_rb.html +5 -3
  251. data/doc/lib/Log_rb.html +5 -3
  252. data/doc/lib/LogicalExpression_rb.html +5 -3
  253. data/doc/lib/LogicalFunction_rb.html +5 -3
  254. data/doc/lib/LogicalOperation_rb.html +5 -3
  255. data/doc/lib/MacroTable_rb.html +5 -3
  256. data/doc/lib/MessageHandler_rb.html +5 -3
  257. data/doc/lib/ProjectFileParser_rb.html +5 -3
  258. data/doc/lib/ProjectFileScanner_rb.html +5 -3
  259. data/doc/lib/Project_rb.html +5 -3
  260. data/doc/lib/PropertyList_rb.html +5 -3
  261. data/doc/lib/PropertySet_rb.html +5 -3
  262. data/doc/lib/PropertyTreeNode_rb.html +5 -3
  263. data/doc/lib/Query_rb.html +5 -3
  264. data/doc/lib/RTFHandlers_rb.html +5 -3
  265. data/doc/lib/RTFNavigator_rb.html +5 -3
  266. data/doc/lib/RTFQuery_rb.html +5 -3
  267. data/doc/lib/RTFReportLink_rb.html +5 -3
  268. data/doc/lib/RTFReport_rb.html +5 -3
  269. data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
  270. data/doc/lib/RealFormat_rb.html +5 -3
  271. data/doc/lib/ResourceScenario_rb.html +5 -3
  272. data/doc/lib/Resource_rb.html +5 -3
  273. data/doc/lib/RichTextDocument_rb.html +5 -3
  274. data/doc/lib/RichTextElement_rb.html +5 -3
  275. data/doc/lib/RichTextFunctionExample_rb.html +5 -3
  276. data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
  277. data/doc/lib/RichTextParser_rb.html +5 -3
  278. data/doc/lib/RichTextScanner_rb.html +5 -3
  279. data/doc/lib/RichTextSnip_rb.html +5 -3
  280. data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
  281. data/doc/lib/RichText_rb.html +5 -3
  282. data/doc/lib/RuntimeConfig_rb.html +5 -3
  283. data/doc/lib/ScenarioData_rb.html +5 -3
  284. data/doc/lib/Scenario_rb.html +5 -3
  285. data/doc/lib/Scoreboard_rb.html +7 -3
  286. data/doc/lib/SheetHandlerBase_rb.html +5 -3
  287. data/doc/lib/SheetReceiver_rb.html +5 -3
  288. data/doc/lib/SheetSender_rb.html +5 -3
  289. data/doc/lib/ShiftAssignments_rb.html +5 -3
  290. data/doc/lib/ShiftScenario_rb.html +5 -3
  291. data/doc/lib/Shift_rb.html +5 -3
  292. data/doc/lib/SimpleQueryExpander_rb.html +5 -3
  293. data/doc/lib/SourceFileInfo_rb.html +5 -3
  294. data/doc/lib/StatusSheetReceiver_rb.html +5 -3
  295. data/doc/lib/StatusSheetSender_rb.html +5 -3
  296. data/doc/lib/SyntaxReference_rb.html +5 -3
  297. data/doc/lib/TOCEntry_rb.html +5 -3
  298. data/doc/lib/TableColumnDefinition_rb.html +5 -3
  299. data/doc/lib/TableOfContents_rb.html +5 -3
  300. data/doc/lib/TaskDependency_rb.html +5 -3
  301. data/doc/lib/TaskJuggler_rb.html +5 -3
  302. data/doc/lib/TaskScenario_rb.html +5 -3
  303. data/doc/lib/Task_rb.html +5 -3
  304. data/doc/lib/TextFormatter_rb.html +6 -4
  305. data/doc/lib/TextParser/Pattern_rb.html +5 -3
  306. data/doc/lib/TextParser/Rule_rb.html +5 -3
  307. data/doc/lib/TextParser/StackElement_rb.html +5 -3
  308. data/doc/lib/TextParser/State_rb.html +6 -4
  309. data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
  310. data/doc/lib/TextParser_rb.html +5 -3
  311. data/doc/lib/TextScanner_rb.html +5 -3
  312. data/doc/lib/TimeSheetReceiver_rb.html +5 -3
  313. data/doc/lib/TimeSheetSender_rb.html +5 -3
  314. data/doc/lib/TimeSheetSummary_rb.html +6 -4
  315. data/doc/lib/TimeSheets_rb.html +5 -3
  316. data/doc/lib/Tj3AppBase_rb.html +5 -3
  317. data/doc/lib/Tj3Config_rb.html +5 -3
  318. data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
  319. data/doc/lib/TjException_rb.html +5 -3
  320. data/doc/lib/TjTime_rb.html +5 -3
  321. data/doc/lib/TjpExample_rb.html +5 -3
  322. data/doc/lib/TjpSyntaxRules_rb.html +5 -3
  323. data/doc/lib/URLParameter_rb.html +5 -3
  324. data/doc/lib/UTF8String_rb.html +5 -3
  325. data/doc/lib/UserManual_rb.html +5 -3
  326. data/doc/lib/VimSyntax_rb.html +6 -4
  327. data/doc/lib/WorkingHours_rb.html +5 -3
  328. data/doc/lib/XMLDocument_rb.html +5 -3
  329. data/doc/lib/XMLElement_rb.html +5 -3
  330. data/doc/lib/daemon/Daemon_rb.html +5 -3
  331. data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
  332. data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
  333. data/doc/lib/daemon/ProjectServer_rb.html +5 -3
  334. data/doc/lib/daemon/ReportServer_rb.html +5 -3
  335. data/doc/lib/daemon/ReportServlet_rb.html +69 -0
  336. data/doc/lib/daemon/WebServer_rb.html +9 -3
  337. data/doc/lib/daemon/WelcomePage_rb.html +71 -0
  338. data/doc/lib/deep_copy_rb.html +5 -3
  339. data/doc/lib/reports/CSVFile_rb.html +5 -3
  340. data/doc/lib/reports/CollisionDetector_rb.html +5 -3
  341. data/doc/lib/reports/ColumnTable_rb.html +5 -3
  342. data/doc/lib/reports/GanttChart_rb.html +5 -3
  343. data/doc/lib/reports/GanttContainer_rb.html +5 -3
  344. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
  345. data/doc/lib/reports/GanttHeader_rb.html +5 -3
  346. data/doc/lib/reports/GanttLine_rb.html +5 -3
  347. data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
  348. data/doc/lib/reports/GanttMilestone_rb.html +5 -3
  349. data/doc/lib/reports/GanttRouter_rb.html +5 -3
  350. data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
  351. data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
  352. data/doc/lib/reports/Navigator_rb.html +5 -3
  353. data/doc/lib/reports/NikuReport_rb.html +5 -3
  354. data/doc/lib/reports/ReportBase_rb.html +5 -3
  355. data/doc/lib/reports/ReportContext_rb.html +5 -3
  356. data/doc/lib/reports/ReportTableCell_rb.html +5 -3
  357. data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
  358. data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
  359. data/doc/lib/reports/ReportTableLine_rb.html +5 -3
  360. data/doc/lib/reports/ReportTable_rb.html +5 -3
  361. data/doc/lib/reports/Report_rb.html +5 -3
  362. data/doc/lib/reports/ResourceListRE_rb.html +5 -3
  363. data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
  364. data/doc/lib/reports/TableReport_rb.html +5 -3
  365. data/doc/lib/reports/TaskListRE_rb.html +5 -3
  366. data/doc/lib/reports/TextReport_rb.html +5 -3
  367. data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
  368. data/doc/lib/reports/TjpExportRE_rb.html +5 -3
  369. data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
  370. data/doc/lib/tj3client_rb.html +5 -3
  371. data/doc/lib/tj3d_rb.html +6 -4
  372. data/doc/lib/tj3man_rb.html +5 -3
  373. data/doc/lib/tj3ss_receiver_rb.html +5 -3
  374. data/doc/lib/tj3ss_sender_rb.html +5 -3
  375. data/doc/lib/tj3ts_receiver_rb.html +5 -3
  376. data/doc/lib/tj3ts_sender_rb.html +5 -3
  377. data/doc/lib/tj3ts_summary_rb.html +5 -3
  378. data/examples/tutorial.tjp +13 -5
  379. data/gem_spec.rb +3 -0
  380. data/lib/Account.rb +2 -1
  381. data/lib/AccountScenario.rb +2 -1
  382. data/lib/Allocation.rb +2 -1
  383. data/lib/AppConfig.rb +2 -1
  384. data/lib/AttributeBase.rb +19 -5
  385. data/lib/AttributeDefinition.rb +2 -1
  386. data/lib/Attributes.rb +49 -38
  387. data/lib/BatchProcessor.rb +2 -1
  388. data/lib/Booking.rb +2 -1
  389. data/lib/Charge.rb +2 -1
  390. data/lib/ChargeSet.rb +2 -1
  391. data/lib/DataCache.rb +15 -1
  392. data/lib/FileList.rb +2 -1
  393. data/lib/HTMLDocument.rb +2 -1
  394. data/lib/Interval.rb +2 -1
  395. data/lib/IntervalList.rb +100 -0
  396. data/lib/Journal.rb +8 -2
  397. data/lib/KeywordArray.rb +2 -1
  398. data/lib/KeywordDocumentation.rb +10 -6
  399. data/lib/Limits.rb +2 -1
  400. data/lib/Log.rb +3 -2
  401. data/lib/LogFile.rb +2 -1
  402. data/lib/LogicalExpression.rb +2 -1
  403. data/lib/LogicalFunction.rb +2 -1
  404. data/lib/LogicalOperation.rb +2 -1
  405. data/lib/MacroTable.rb +2 -1
  406. data/lib/MessageHandler.rb +2 -1
  407. data/lib/Project.rb +92 -25
  408. data/lib/ProjectFileParser.rb +7 -2
  409. data/lib/ProjectFileScanner.rb +2 -1
  410. data/lib/PropertyList.rb +2 -1
  411. data/lib/PropertySet.rb +2 -6
  412. data/lib/PropertyTreeNode.rb +22 -44
  413. data/lib/Query.rb +32 -13
  414. data/lib/RTFHandlers.rb +2 -1
  415. data/lib/RTFNavigator.rb +2 -1
  416. data/lib/RTFQuery.rb +3 -2
  417. data/lib/RTFReport.rb +2 -1
  418. data/lib/RTFReportLink.rb +2 -1
  419. data/lib/RTFWithQuerySupport.rb +2 -1
  420. data/lib/RealFormat.rb +2 -1
  421. data/lib/Resource.rb +2 -1
  422. data/lib/ResourceScenario.rb +35 -14
  423. data/lib/RichText.rb +2 -1
  424. data/lib/RichTextDocument.rb +2 -1
  425. data/lib/RichTextElement.rb +2 -1
  426. data/lib/RichTextFunctionExample.rb +2 -1
  427. data/lib/RichTextFunctionHandler.rb +2 -1
  428. data/lib/RichTextParser.rb +2 -1
  429. data/lib/RichTextScanner.rb +2 -1
  430. data/lib/RichTextSnip.rb +2 -1
  431. data/lib/RichTextSyntaxRules.rb +2 -1
  432. data/lib/RuntimeConfig.rb +2 -1
  433. data/lib/Scenario.rb +2 -1
  434. data/lib/ScenarioData.rb +2 -1
  435. data/lib/Scoreboard.rb +27 -8
  436. data/lib/SheetHandlerBase.rb +2 -1
  437. data/lib/SheetReceiver.rb +2 -1
  438. data/lib/SheetSender.rb +2 -1
  439. data/lib/Shift.rb +2 -1
  440. data/lib/ShiftAssignments.rb +2 -1
  441. data/lib/ShiftScenario.rb +2 -1
  442. data/lib/SimpleQueryExpander.rb +2 -1
  443. data/lib/SourceFileInfo.rb +2 -1
  444. data/lib/StatusSheetReceiver.rb +2 -1
  445. data/lib/StatusSheetSender.rb +2 -1
  446. data/lib/SyntaxReference.rb +2 -1
  447. data/lib/TOCEntry.rb +2 -1
  448. data/lib/TableColumnDefinition.rb +9 -2
  449. data/lib/TableOfContents.rb +2 -1
  450. data/lib/Task.rb +2 -1
  451. data/lib/TaskDependency.rb +2 -1
  452. data/lib/TaskJuggler.rb +8 -6
  453. data/lib/TaskScenario.rb +337 -153
  454. data/lib/TextFormatter.rb +3 -2
  455. data/lib/TextParser.rb +7 -2
  456. data/lib/TextParser/Pattern.rb +2 -1
  457. data/lib/TextParser/Rule.rb +2 -1
  458. data/lib/TextParser/StackElement.rb +2 -1
  459. data/lib/TextParser/State.rb +3 -2
  460. data/lib/TextParser/TokenDoc.rb +2 -1
  461. data/lib/TextScanner.rb +12 -5
  462. data/lib/TimeSheetReceiver.rb +2 -1
  463. data/lib/TimeSheetSender.rb +2 -1
  464. data/lib/TimeSheetSummary.rb +3 -2
  465. data/lib/TimeSheets.rb +2 -1
  466. data/lib/Tj3AppBase.rb +6 -5
  467. data/lib/Tj3Config.rb +5 -4
  468. data/lib/Tj3SheetAppBase.rb +2 -1
  469. data/lib/TjException.rb +2 -1
  470. data/lib/TjTime.rb +2 -1
  471. data/lib/TjpExample.rb +2 -1
  472. data/lib/TjpSyntaxRules.rb +264 -65
  473. data/lib/URLParameter.rb +2 -1
  474. data/lib/UTF8String.rb +2 -1
  475. data/lib/UserManual.rb +2 -1
  476. data/lib/VimSyntax.rb +3 -2
  477. data/lib/WorkingHours.rb +2 -1
  478. data/lib/XMLDocument.rb +2 -1
  479. data/lib/XMLElement.rb +2 -1
  480. data/lib/daemon/Daemon.rb +3 -1
  481. data/lib/daemon/ProcessIntercom.rb +3 -1
  482. data/lib/daemon/ProjectBroker.rb +84 -32
  483. data/lib/daemon/ProjectServer.rb +5 -3
  484. data/lib/daemon/ReportServer.rb +8 -5
  485. data/lib/daemon/ReportServlet.rb +166 -0
  486. data/lib/daemon/WebServer.rb +6 -150
  487. data/lib/daemon/WelcomePage.rb +80 -0
  488. data/lib/deep_copy.rb +2 -1
  489. data/lib/reports/CSVFile.rb +2 -1
  490. data/lib/reports/CollisionDetector.rb +2 -1
  491. data/lib/reports/ColumnTable.rb +2 -1
  492. data/lib/reports/GanttChart.rb +2 -1
  493. data/lib/reports/GanttContainer.rb +3 -4
  494. data/lib/reports/GanttHeader.rb +2 -1
  495. data/lib/reports/GanttHeaderScaleItem.rb +2 -1
  496. data/lib/reports/GanttLine.rb +12 -10
  497. data/lib/reports/GanttLoadStack.rb +2 -1
  498. data/lib/reports/GanttMilestone.rb +3 -3
  499. data/lib/reports/GanttRouter.rb +4 -1
  500. data/lib/reports/GanttTaskBar.rb +9 -7
  501. data/lib/reports/HTMLGraphics.rb +2 -1
  502. data/lib/reports/Navigator.rb +2 -1
  503. data/lib/reports/NikuReport.rb +79 -49
  504. data/lib/reports/Report.rb +42 -10
  505. data/lib/reports/ReportBase.rb +2 -1
  506. data/lib/reports/ReportContext.rb +2 -1
  507. data/lib/reports/ReportTable.rb +2 -1
  508. data/lib/reports/ReportTableCell.rb +63 -28
  509. data/lib/reports/ReportTableColumn.rb +2 -1
  510. data/lib/reports/ReportTableLegend.rb +5 -5
  511. data/lib/reports/ReportTableLine.rb +2 -1
  512. data/lib/reports/ResourceListRE.rb +2 -1
  513. data/lib/reports/StatusSheetReport.rb +4 -2
  514. data/lib/reports/TableReport.rb +42 -38
  515. data/lib/reports/TaskListRE.rb +4 -2
  516. data/lib/reports/TextReport.rb +2 -1
  517. data/lib/reports/TimeSheetReport.rb +4 -2
  518. data/lib/reports/TjpExportRE.rb +4 -2
  519. data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
  520. data/lib/tj3client.rb +19 -36
  521. data/lib/tj3d.rb +6 -2
  522. data/lib/tj3man.rb +4 -3
  523. data/lib/tj3ss_receiver.rb +2 -1
  524. data/lib/tj3ss_sender.rb +2 -1
  525. data/lib/tj3ts_receiver.rb +2 -1
  526. data/lib/tj3ts_sender.rb +2 -1
  527. data/lib/tj3ts_summary.rb +2 -1
  528. data/manual/Day_To_Day_Juggling +36 -0
  529. data/manual/How_To_Contribute +9 -4
  530. data/manual/Installation +10 -3
  531. data/manual/TaskJuggler_Internals +0 -2
  532. data/manual/Tutorial +25 -3
  533. data/prj_cfg.rb +4 -2
  534. data/spec/IntervalList_spec.rb +138 -0
  535. data/spec/ProjectBroker_spec.rb +133 -0
  536. data/tasks/changelog.rake +41 -24
  537. data/tasks/csts.rake +1 -0
  538. data/tasks/gem.rake +1 -0
  539. data/tasks/rcov.rake +1 -1
  540. data/tasks/spec.rake +7 -0
  541. data/tasks/test.rake +1 -0
  542. data/test/MessageChecker.rb +2 -1
  543. data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
  544. data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
  545. data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
  546. data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
  547. data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
  548. data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
  549. data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
  550. data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
  551. data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
  552. data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
  553. data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
  554. data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
  555. data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
  556. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
  557. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
  558. data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
  559. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
  560. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
  561. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
  562. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
  563. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
  564. data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
  565. data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
  566. data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
  567. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
  568. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
  569. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
  570. data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
  571. data/test/TestSuite/StatusSheets/sender.log +256 -0
  572. data/test/TestSuite/StatusSheets/statussheets.log +9 -0
  573. data/test/TestSuite/StatusSheets/tj3d.log +395 -0
  574. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
  575. data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
  576. data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
  577. data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
  578. data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
  579. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
  580. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
  581. data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
  582. data/test/all.rb +2 -4
  583. data/test/test_BatchProcessor.rb +2 -1
  584. data/test/test_CSV-Reports.rb +34 -23
  585. data/test/test_CSVFile.rb +2 -1
  586. data/test/test_CollisionDetector.rb +3 -2
  587. data/test/test_Journal.rb +2 -1
  588. data/test/test_Limits.rb +2 -1
  589. data/test/test_LogicalExpression.rb +2 -1
  590. data/test/test_MacroTable.rb +2 -1
  591. data/test/test_Project.rb +3 -2
  592. data/test/test_ProjectFileScanner.rb +2 -1
  593. data/test/test_PropertySet.rb +2 -1
  594. data/test/test_Query.rb +2 -1
  595. data/test/test_RealFormat.rb +2 -1
  596. data/test/test_ReportGenerator.rb +2 -1
  597. data/test/test_RichText.rb +2 -1
  598. data/test/test_Scheduler.rb +2 -1
  599. data/test/test_ShiftAssignments.rb +2 -1
  600. data/test/test_SimpleQueryExpander.rb +2 -1
  601. data/test/test_Syntax.rb +2 -1
  602. data/test/test_TextFormatter.rb +3 -2
  603. data/test/test_TjTime.rb +2 -1
  604. data/test/test_TjpExample.rb +2 -1
  605. data/test/test_URLParameter.rb +2 -1
  606. data/test/test_UTF8String.rb +2 -1
  607. data/test/test_WorkingHours.rb +2 -1
  608. data/test/test_deep_copy.rb +2 -1
  609. metadata +74 -20
  610. data/doc/StringIO.html +0 -595
  611. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
  612. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
  613. data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
@@ -127,6 +127,8 @@
127
127
 
128
128
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
129
129
 
130
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
131
+
130
132
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
131
133
 
132
134
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -205,6 +207,8 @@
205
207
 
206
208
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
207
209
 
210
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
211
+
208
212
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
209
213
 
210
214
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -237,6 +241,8 @@
237
241
 
238
242
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
239
243
 
244
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
245
+
240
246
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
241
247
 
242
248
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -517,6 +523,8 @@
517
523
 
518
524
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
519
525
 
526
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
527
+
520
528
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
521
529
 
522
530
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -543,8 +551,6 @@
543
551
 
544
552
  <li><a href="../String.html">String</a></li>
545
553
 
546
- <li><a href="../StringIO.html">StringIO</a></li>
547
-
548
554
  </ul>
549
555
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
550
556
  </div>
@@ -733,50 +739,50 @@ accessable via Project.reportContexts.last().
733
739
  <div class="method-source-code"
734
740
  id="new-source">
735
741
  <pre>
736
- <span class="ruby-comment cmt"># File lib/reports/ReportContext.rb, line 24</span>
737
- 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">project</span>, <span class="ruby-identifier">report</span>)
738
- 25: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">project</span>
739
- 26: <span class="ruby-ivar">@report</span> = <span class="ruby-identifier">report</span>
740
- 27: <span class="ruby-ivar">@childReportCounter</span> = <span class="ruby-value">0</span>
741
- 28: <span class="ruby-ivar">@attributeBackup</span> = <span class="ruby-keyword kw">nil</span>
742
- 29: <span class="ruby-identifier">queryAttrs</span> = {
743
- 30: <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
744
- 31: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'loadUnit'</span>),
745
- 32: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'numberFormat'</span>),
746
- 33: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'timeFormat'</span>),
747
- 34: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'currencyFormat'</span>),
748
- 35: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'start'</span>),
749
- 36: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'end'</span>),
750
- 37: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'costAccount'</span>),
751
- 38: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'revenueAccount'</span>)
752
- 39: }
753
- 40: <span class="ruby-ivar">@query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
754
- 41: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@parent</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">reportContexts</span>.<span class="ruby-identifier">last</span>)
755
- 42: <span class="ruby-comment cmt"># For interactive reports we need some ID that uniquely identifies the</span>
756
- 43: <span class="ruby-comment cmt"># report within the composed report. Since a project report can be</span>
757
- 44: <span class="ruby-comment cmt"># included multiple times in the same report, we need to generate</span>
758
- 45: <span class="ruby-comment cmt"># another ID for each instantiated report. We create this report by</span>
759
- 46: <span class="ruby-comment cmt"># using a counter for the number of child reports that each report</span>
760
- 47: <span class="ruby-comment cmt"># has. The unique ID is then the concatenated list of counters from</span>
761
- 48: <span class="ruby-comment cmt"># parent to leaf, separating each value by a '.'.</span>
762
- 49: <span class="ruby-ivar">@dynamicReportId</span> = <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">dynamicReportId</span> <span class="ruby-operator">+</span>
763
- 50: <span class="ruby-node">&quot;.#{@parent.childReportCounter}&quot;</span>
764
- 51: <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">childReportCounter</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
765
- 52: <span class="ruby-comment cmt"># If the new ReportContext is created from within an existing context,</span>
766
- 53: <span class="ruby-comment cmt"># this is used as parent context and the settings are copied as</span>
767
- 54: <span class="ruby-comment cmt"># default initial values.</span>
768
- 55: <span class="ruby-ivar">@tasks</span> = <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">dup</span>
769
- 56: <span class="ruby-ivar">@resources</span> = <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">resources</span>.<span class="ruby-identifier">dup</span>
770
- 57: <span class="ruby-keyword kw">else</span>
771
- 58: <span class="ruby-comment cmt"># The ID of the root report is always &quot;0&quot;. The first child will then</span>
772
- 59: <span class="ruby-comment cmt"># be &quot;0.0&quot;, the seconds &quot;0.1&quot; and so on.</span>
773
- 60: <span class="ruby-ivar">@dynamicReportId</span> = <span class="ruby-value str">&quot;0&quot;</span>
774
- 61: <span class="ruby-comment cmt"># There is no existing ReportContext yet, so we create one based on</span>
775
- 62: <span class="ruby-comment cmt"># the settings of the report.</span>
776
- 63: <span class="ruby-ivar">@tasks</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">dup</span>
777
- 64: <span class="ruby-ivar">@resources</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>.<span class="ruby-identifier">dup</span>
778
- 65: <span class="ruby-keyword kw">end</span>
779
- 66: <span class="ruby-keyword kw">end</span></pre>
742
+ <span class="ruby-comment cmt"># File lib/reports/ReportContext.rb, line 25</span>
743
+ 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">project</span>, <span class="ruby-identifier">report</span>)
744
+ 26: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">project</span>
745
+ 27: <span class="ruby-ivar">@report</span> = <span class="ruby-identifier">report</span>
746
+ 28: <span class="ruby-ivar">@childReportCounter</span> = <span class="ruby-value">0</span>
747
+ 29: <span class="ruby-ivar">@attributeBackup</span> = <span class="ruby-keyword kw">nil</span>
748
+ 30: <span class="ruby-identifier">queryAttrs</span> = {
749
+ 31: <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
750
+ 32: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'loadUnit'</span>),
751
+ 33: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'numberFormat'</span>),
752
+ 34: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'timeFormat'</span>),
753
+ 35: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'currencyFormat'</span>),
754
+ 36: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'start'</span>),
755
+ 37: <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'end'</span>),
756
+ 38: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'costAccount'</span>),
757
+ 39: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'revenueAccount'</span>)
758
+ 40: }
759
+ 41: <span class="ruby-ivar">@query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
760
+ 42: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@parent</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">reportContexts</span>.<span class="ruby-identifier">last</span>)
761
+ 43: <span class="ruby-comment cmt"># For interactive reports we need some ID that uniquely identifies the</span>
762
+ 44: <span class="ruby-comment cmt"># report within the composed report. Since a project report can be</span>
763
+ 45: <span class="ruby-comment cmt"># included multiple times in the same report, we need to generate</span>
764
+ 46: <span class="ruby-comment cmt"># another ID for each instantiated report. We create this report by</span>
765
+ 47: <span class="ruby-comment cmt"># using a counter for the number of child reports that each report</span>
766
+ 48: <span class="ruby-comment cmt"># has. The unique ID is then the concatenated list of counters from</span>
767
+ 49: <span class="ruby-comment cmt"># parent to leaf, separating each value by a '.'.</span>
768
+ 50: <span class="ruby-ivar">@dynamicReportId</span> = <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">dynamicReportId</span> <span class="ruby-operator">+</span>
769
+ 51: <span class="ruby-node">&quot;.#{@parent.childReportCounter}&quot;</span>
770
+ 52: <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">childReportCounter</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
771
+ 53: <span class="ruby-comment cmt"># If the new ReportContext is created from within an existing context,</span>
772
+ 54: <span class="ruby-comment cmt"># this is used as parent context and the settings are copied as</span>
773
+ 55: <span class="ruby-comment cmt"># default initial values.</span>
774
+ 56: <span class="ruby-ivar">@tasks</span> = <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">dup</span>
775
+ 57: <span class="ruby-ivar">@resources</span> = <span class="ruby-ivar">@parent</span>.<span class="ruby-identifier">resources</span>.<span class="ruby-identifier">dup</span>
776
+ 58: <span class="ruby-keyword kw">else</span>
777
+ 59: <span class="ruby-comment cmt"># The ID of the root report is always &quot;0&quot;. The first child will then</span>
778
+ 60: <span class="ruby-comment cmt"># be &quot;0.0&quot;, the seconds &quot;0.1&quot; and so on.</span>
779
+ 61: <span class="ruby-ivar">@dynamicReportId</span> = <span class="ruby-value str">&quot;0&quot;</span>
780
+ 62: <span class="ruby-comment cmt"># There is no existing ReportContext yet, so we create one based on</span>
781
+ 63: <span class="ruby-comment cmt"># the settings of the report.</span>
782
+ 64: <span class="ruby-ivar">@tasks</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>.<span class="ruby-identifier">dup</span>
783
+ 65: <span class="ruby-ivar">@resources</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>.<span class="ruby-identifier">dup</span>
784
+ 66: <span class="ruby-keyword kw">end</span>
785
+ 67: <span class="ruby-keyword kw">end</span></pre>
780
786
  </div>
781
787
 
782
788
  </div>
@@ -152,6 +152,8 @@
152
152
 
153
153
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
154
154
 
155
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
156
+
155
157
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
156
158
 
157
159
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -230,6 +232,8 @@
230
232
 
231
233
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
232
234
 
235
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
236
+
233
237
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
234
238
 
235
239
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -262,6 +266,8 @@
262
266
 
263
267
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
264
268
 
269
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
270
+
265
271
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
266
272
 
267
273
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -542,6 +548,8 @@
542
548
 
543
549
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
544
550
 
551
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
552
+
545
553
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
546
554
 
547
555
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -568,8 +576,6 @@
568
576
 
569
577
  <li><a href="../String.html">String</a></li>
570
578
 
571
- <li><a href="../StringIO.html">StringIO</a></li>
572
-
573
579
  </ul>
574
580
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
575
581
  </div>
@@ -653,76 +659,76 @@
653
659
  <div class="method-source-code"
654
660
  id="new-source">
655
661
  <pre>
656
- <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 25</span>
657
- 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">tj</span>, <span class="ruby-identifier">logConsole</span> = <span class="ruby-keyword kw">false</span>)
658
- 26: <span class="ruby-identifier">initIntercom</span>
659
- 27:
660
- 28: <span class="ruby-ivar">@pid</span> = <span class="ruby-keyword kw">nil</span>
661
- 29: <span class="ruby-ivar">@uri</span> = <span class="ruby-keyword kw">nil</span>
662
- 30:
663
- 31: <span class="ruby-comment cmt"># A reference to the TaskJuggler object that holds the project data.</span>
664
- 32: <span class="ruby-ivar">@tj</span> = <span class="ruby-identifier">tj</span>
665
- 33:
666
- 34: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
667
- 35:
668
- 36: <span class="ruby-comment cmt"># We've started a DRb server before. This will continue to live somewhat</span>
669
- 37: <span class="ruby-comment cmt"># in the child. All attempts to create a DRb connection from the child</span>
670
- 38: <span class="ruby-comment cmt"># to the parent will end up in the child again. So we use a Pipe to</span>
671
- 39: <span class="ruby-comment cmt"># communicate the URI of the child DRb server to the parent. The</span>
672
- 40: <span class="ruby-comment cmt"># communication from the parent to the child is not affected by the</span>
673
- 41: <span class="ruby-comment cmt"># zombie DRb server in the child process.</span>
674
- 42: <span class="ruby-identifier">rd</span>, <span class="ruby-identifier">wr</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">pipe</span>
675
- 43:
676
- 44: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@pid</span> = <span class="ruby-identifier">fork</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
677
- 45: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'ReportServer fork failed'</span>)
678
- 46: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@pid</span>.<span class="ruby-identifier">nil?</span>
679
- 47: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">logConsole</span>
680
- 48: <span class="ruby-comment cmt"># If the Broker wasn't daemonized, log stdout and stderr to PID</span>
681
- 49: <span class="ruby-comment cmt"># specific files.</span>
682
- 50: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-node">&quot;tj3d.rs.#{$$}.stderr&quot;</span>, <span class="ruby-value str">'w'</span>)
683
- 51: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-node">&quot;tj3d.rs.#{$$}.stdout&quot;</span>, <span class="ruby-value str">'w'</span>)
684
- 52: <span class="ruby-keyword kw">end</span>
685
- 53: <span class="ruby-keyword kw">begin</span>
686
- 54: <span class="ruby-comment cmt"># This is the child</span>
687
- 55: <span class="ruby-identifier">$SAFE</span> = <span class="ruby-value">1</span>
688
- 56: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">install_acl</span>(<span class="ruby-constant">ACL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">] deny all
689
- 57: allow 127.0.0.1 ]</span>))
690
- 58: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>
691
- 59: <span class="ruby-identifier">iFace</span> = <span class="ruby-constant">ReportServerIface</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>)
692
- 60: <span class="ruby-keyword kw">begin</span>
693
- 61: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>(<span class="ruby-value str">'druby://127.0.0.1:0'</span>, <span class="ruby-identifier">iFace</span>).<span class="ruby-identifier">uri</span>
694
- 62: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Report server is listening on #{uri}&quot;</span>)
695
- 63: <span class="ruby-keyword kw">rescue</span>
696
- 64: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">&quot;ReportServer can't start DRb: #{$!}&quot;</span>)
697
- 65: <span class="ruby-keyword kw">end</span>
698
- 66:
699
- 67: <span class="ruby-comment cmt"># Send the URI of the newly started DRb server to the parent process.</span>
700
- 68: <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">close</span>
701
- 69: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">uri</span>
702
- 70: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">close</span>
703
- 71:
704
- 72: <span class="ruby-comment cmt"># Start a Thread that waits for the @terminate flag to be set and does</span>
705
- 73: <span class="ruby-comment cmt"># other background tasks.</span>
706
- 74: <span class="ruby-identifier">startTerminator</span>
707
- 75: <span class="ruby-identifier">startWatchDog</span>
708
- 76:
709
- 77: <span class="ruby-comment cmt"># Cleanup the DRb threads</span>
710
- 78: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">thread</span>.<span class="ruby-identifier">join</span>
711
- 79: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">'Report server terminated'</span>)
712
- 80: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
713
- 81: <span class="ruby-keyword kw">rescue</span>
714
- 82: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>
715
- 83: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
716
- 84: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">&quot;ReportServer caught unexpected exception: #{$!}&quot;</span>)
717
- 85: <span class="ruby-keyword kw">end</span>
718
- 86: <span class="ruby-keyword kw">else</span>
719
- 87: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">detach</span>(<span class="ruby-ivar">@pid</span>)
720
- 88: <span class="ruby-comment cmt"># This is the parent</span>
721
- 89: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">close</span>
722
- 90: <span class="ruby-ivar">@uri</span> = <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">read</span>
723
- 91: <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">close</span>
724
- 92: <span class="ruby-keyword kw">end</span>
725
- 93: <span class="ruby-keyword kw">end</span></pre>
662
+ <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 26</span>
663
+ 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">tj</span>, <span class="ruby-identifier">logConsole</span> = <span class="ruby-keyword kw">false</span>)
664
+ 27: <span class="ruby-identifier">initIntercom</span>
665
+ 28:
666
+ 29: <span class="ruby-ivar">@pid</span> = <span class="ruby-keyword kw">nil</span>
667
+ 30: <span class="ruby-ivar">@uri</span> = <span class="ruby-keyword kw">nil</span>
668
+ 31:
669
+ 32: <span class="ruby-comment cmt"># A reference to the TaskJuggler object that holds the project data.</span>
670
+ 33: <span class="ruby-ivar">@tj</span> = <span class="ruby-identifier">tj</span>
671
+ 34:
672
+ 35: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
673
+ 36:
674
+ 37: <span class="ruby-comment cmt"># We've started a DRb server before. This will continue to live somewhat</span>
675
+ 38: <span class="ruby-comment cmt"># in the child. All attempts to create a DRb connection from the child</span>
676
+ 39: <span class="ruby-comment cmt"># to the parent will end up in the child again. So we use a Pipe to</span>
677
+ 40: <span class="ruby-comment cmt"># communicate the URI of the child DRb server to the parent. The</span>
678
+ 41: <span class="ruby-comment cmt"># communication from the parent to the child is not affected by the</span>
679
+ 42: <span class="ruby-comment cmt"># zombie DRb server in the child process.</span>
680
+ 43: <span class="ruby-identifier">rd</span>, <span class="ruby-identifier">wr</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">pipe</span>
681
+ 44:
682
+ 45: <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@pid</span> = <span class="ruby-identifier">fork</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
683
+ 46: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'ReportServer fork failed'</span>)
684
+ 47: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@pid</span>.<span class="ruby-identifier">nil?</span>
685
+ 48: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">logConsole</span>
686
+ 49: <span class="ruby-comment cmt"># If the Broker wasn't daemonized, log stdout and stderr to PID</span>
687
+ 50: <span class="ruby-comment cmt"># specific files.</span>
688
+ 51: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-node">&quot;tj3d.rs.#{$$}.stderr&quot;</span>, <span class="ruby-value str">'w'</span>)
689
+ 52: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-node">&quot;tj3d.rs.#{$$}.stdout&quot;</span>, <span class="ruby-value str">'w'</span>)
690
+ 53: <span class="ruby-keyword kw">end</span>
691
+ 54: <span class="ruby-keyword kw">begin</span>
692
+ 55: <span class="ruby-comment cmt"># This is the child</span>
693
+ 56: <span class="ruby-identifier">$SAFE</span> = <span class="ruby-value">1</span>
694
+ 57: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">install_acl</span>(<span class="ruby-constant">ACL</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">] deny all
695
+ 58: allow 127.0.0.1 ]</span>))
696
+ 59: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>
697
+ 60: <span class="ruby-identifier">iFace</span> = <span class="ruby-constant">ReportServerIface</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>)
698
+ 61: <span class="ruby-keyword kw">begin</span>
699
+ 62: <span class="ruby-identifier">uri</span> = <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>(<span class="ruby-value str">'druby://127.0.0.1:0'</span>, <span class="ruby-identifier">iFace</span>).<span class="ruby-identifier">uri</span>
700
+ 63: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Report server is listening on #{uri}&quot;</span>)
701
+ 64: <span class="ruby-keyword kw">rescue</span>
702
+ 65: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">&quot;ReportServer can't start DRb: #{$!}&quot;</span>)
703
+ 66: <span class="ruby-keyword kw">end</span>
704
+ 67:
705
+ 68: <span class="ruby-comment cmt"># Send the URI of the newly started DRb server to the parent process.</span>
706
+ 69: <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">close</span>
707
+ 70: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">uri</span>
708
+ 71: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">close</span>
709
+ 72:
710
+ 73: <span class="ruby-comment cmt"># Start a Thread that waits for the @terminate flag to be set and does</span>
711
+ 74: <span class="ruby-comment cmt"># other background tasks.</span>
712
+ 75: <span class="ruby-identifier">startTerminator</span>
713
+ 76: <span class="ruby-identifier">startWatchDog</span>
714
+ 77:
715
+ 78: <span class="ruby-comment cmt"># Cleanup the DRb threads</span>
716
+ 79: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">thread</span>.<span class="ruby-identifier">join</span>
717
+ 80: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-value str">'Report server terminated'</span>)
718
+ 81: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
719
+ 82: <span class="ruby-keyword kw">rescue</span>
720
+ 83: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>
721
+ 84: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">print</span> <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
722
+ 85: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-node">&quot;ReportServer caught unexpected exception: #{$!}&quot;</span>)
723
+ 86: <span class="ruby-keyword kw">end</span>
724
+ 87: <span class="ruby-keyword kw">else</span>
725
+ 88: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">detach</span>(<span class="ruby-ivar">@pid</span>)
726
+ 89: <span class="ruby-comment cmt"># This is the parent</span>
727
+ 90: <span class="ruby-identifier">wr</span>.<span class="ruby-identifier">close</span>
728
+ 91: <span class="ruby-ivar">@uri</span> = <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">read</span>
729
+ 92: <span class="ruby-identifier">rd</span>.<span class="ruby-identifier">close</span>
730
+ 93: <span class="ruby-keyword kw">end</span>
731
+ 94: <span class="ruby-keyword kw">end</span></pre>
726
732
  </div>
727
733
 
728
734
  </div>
@@ -759,16 +765,16 @@
759
765
  <div class="method-source-code"
760
766
  id="add-ile-source">
761
767
  <pre>
762
- <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 99</span>
763
- 99: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addFile</span>(<span class="ruby-identifier">file</span>)
764
- 100: <span class="ruby-keyword kw">begin</span>
765
- 101: <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">parseFile</span>(<span class="ruby-identifier">file</span>, <span class="ruby-value">:properties</span>)
766
- 102: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
767
- 103: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
768
- 104: <span class="ruby-keyword kw">end</span>
769
- 105: <span class="ruby-identifier">restartTimer</span>
770
- 106: <span class="ruby-keyword kw">true</span>
771
- 107: <span class="ruby-keyword kw">end</span></pre>
768
+ <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 100</span>
769
+ 100: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addFile</span>(<span class="ruby-identifier">file</span>)
770
+ 101: <span class="ruby-keyword kw">begin</span>
771
+ 102: <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">parseFile</span>(<span class="ruby-identifier">file</span>, <span class="ruby-value">:properties</span>)
772
+ 103: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
773
+ 104: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
774
+ 105: <span class="ruby-keyword kw">end</span>
775
+ 106: <span class="ruby-identifier">restartTimer</span>
776
+ 107: <span class="ruby-keyword kw">true</span>
777
+ 108: <span class="ruby-keyword kw">end</span></pre>
772
778
  </div>
773
779
 
774
780
  </div>
@@ -799,14 +805,14 @@
799
805
  <div class="method-source-code"
800
806
  id="check-tatus-heet-source">
801
807
  <pre>
802
- <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 140</span>
803
- 140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkStatusSheet</span>(<span class="ruby-identifier">sheet</span>)
804
- 141: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Checking status sheet #{sheet}&quot;</span>)
805
- 142: <span class="ruby-identifier">ok</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">checkStatusSheet</span>(<span class="ruby-identifier">sheet</span>)
806
- 143: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Status sheet #{sheet} is #{ok ? '' : 'not '}ok&quot;</span>)
807
- 144: <span class="ruby-identifier">restartTimer</span>
808
- 145: <span class="ruby-identifier">ok</span>
809
- 146: <span class="ruby-keyword kw">end</span></pre>
808
+ <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 141</span>
809
+ 141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkStatusSheet</span>(<span class="ruby-identifier">sheet</span>)
810
+ 142: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Checking status sheet #{sheet}&quot;</span>)
811
+ 143: <span class="ruby-identifier">ok</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">checkStatusSheet</span>(<span class="ruby-identifier">sheet</span>)
812
+ 144: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Status sheet #{sheet} is #{ok ? '' : 'not '}ok&quot;</span>)
813
+ 145: <span class="ruby-identifier">restartTimer</span>
814
+ 146: <span class="ruby-identifier">ok</span>
815
+ 147: <span class="ruby-keyword kw">end</span></pre>
810
816
  </div>
811
817
 
812
818
  </div>
@@ -837,14 +843,14 @@
837
843
  <div class="method-source-code"
838
844
  id="check-ime-heet-source">
839
845
  <pre>
840
- <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 132</span>
841
- 132: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheet</span>(<span class="ruby-identifier">sheet</span>)
842
- 133: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Checking time sheet #{sheet}&quot;</span>)
843
- 134: <span class="ruby-identifier">ok</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">checkTimeSheet</span>(<span class="ruby-identifier">sheet</span>)
844
- 135: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Time sheet #{sheet} is #{ok ? '' : 'not '}ok&quot;</span>)
845
- 136: <span class="ruby-identifier">restartTimer</span>
846
- 137: <span class="ruby-identifier">ok</span>
847
- 138: <span class="ruby-keyword kw">end</span></pre>
846
+ <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 133</span>
847
+ 133: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkTimeSheet</span>(<span class="ruby-identifier">sheet</span>)
848
+ 134: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Checking time sheet #{sheet}&quot;</span>)
849
+ 135: <span class="ruby-identifier">ok</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">checkTimeSheet</span>(<span class="ruby-identifier">sheet</span>)
850
+ 136: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Time sheet #{sheet} is #{ok ? '' : 'not '}ok&quot;</span>)
851
+ 137: <span class="ruby-identifier">restartTimer</span>
852
+ 138: <span class="ruby-identifier">ok</span>
853
+ 139: <span class="ruby-keyword kw">end</span></pre>
848
854
  </div>
849
855
 
850
856
  </div>
@@ -861,7 +867,7 @@
861
867
  <div class="method-heading">
862
868
 
863
869
  <span class="method-name">generateReport</span><span
864
- class="method-args">(id, regExpMode, dynamicAttributes)</span>
870
+ class="method-args">(id, regExpMode, formats, dynamicAttributes)</span>
865
871
  <span class="method-click-advice">click to toggle source</span>
866
872
 
867
873
  </div>
@@ -875,18 +881,18 @@
875
881
  <div class="method-source-code"
876
882
  id="generate-eport-source">
877
883
  <pre>
878
- <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 109</span>
879
- 109: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">dynamicAttributes</span>)
880
- 110: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Generating report #{id}&quot;</span>)
881
- 111: <span class="ruby-identifier">startTime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
882
- 112: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ok</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">dynamicAttributes</span>))
883
- 113: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Report #{id} generated in #{Time.now - startTime} seconds&quot;</span>)
884
- 114: <span class="ruby-keyword kw">else</span>
885
- 115: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Report generation of #{id} failed&quot;</span>)
886
- 116: <span class="ruby-keyword kw">end</span>
887
- 117: <span class="ruby-identifier">restartTimer</span>
888
- 118: <span class="ruby-identifier">ok</span>
889
- 119: <span class="ruby-keyword kw">end</span></pre>
884
+ <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 110</span>
885
+ 110: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">formats</span>, <span class="ruby-identifier">dynamicAttributes</span>)
886
+ 111: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Generating report #{id}&quot;</span>)
887
+ 112: <span class="ruby-identifier">startTime</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
888
+ 113: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ok</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">regExpMode</span>, <span class="ruby-identifier">formats</span>, <span class="ruby-identifier">dynamicAttributes</span>))
889
+ 114: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Report #{id} generated in #{Time.now - startTime} seconds&quot;</span>)
890
+ 115: <span class="ruby-keyword kw">else</span>
891
+ 116: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Report generation of #{id} failed&quot;</span>)
892
+ 117: <span class="ruby-keyword kw">end</span>
893
+ 118: <span class="ruby-identifier">restartTimer</span>
894
+ 119: <span class="ruby-identifier">ok</span>
895
+ 120: <span class="ruby-keyword kw">end</span></pre>
890
896
  </div>
891
897
 
892
898
  </div>
@@ -917,17 +923,17 @@
917
923
  <div class="method-source-code"
918
924
  id="list-eports-source">
919
925
  <pre>
920
- <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 121</span>
921
- 121: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">regExpMode</span>)
922
- 122: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Listing report #{id}&quot;</span>)
923
- 123: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ok</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">regExpMode</span>))
924
- 124: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Report list for #{id} generated&quot;</span>)
925
- 125: <span class="ruby-keyword kw">else</span>
926
- 126: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Report list compilation of #{id} failed&quot;</span>)
927
- 127: <span class="ruby-keyword kw">end</span>
928
- 128: <span class="ruby-identifier">restartTimer</span>
929
- 129: <span class="ruby-identifier">ok</span>
930
- 130: <span class="ruby-keyword kw">end</span></pre>
926
+ <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 122</span>
927
+ 122: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">regExpMode</span>)
928
+ 123: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;Listing report #{id}&quot;</span>)
929
+ 124: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">ok</span> = <span class="ruby-ivar">@tj</span>.<span class="ruby-identifier">listReports</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">regExpMode</span>))
930
+ 125: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Report list for #{id} generated&quot;</span>)
931
+ 126: <span class="ruby-keyword kw">else</span>
932
+ 127: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">error</span>(<span class="ruby-node">&quot;Report list compilation of #{id} failed&quot;</span>)
933
+ 128: <span class="ruby-keyword kw">end</span>
934
+ 129: <span class="ruby-identifier">restartTimer</span>
935
+ 130: <span class="ruby-identifier">ok</span>
936
+ 131: <span class="ruby-keyword kw">end</span></pre>
931
937
  </div>
932
938
 
933
939
  </div>
@@ -958,10 +964,10 @@
958
964
  <div class="method-source-code"
959
965
  id="ping-source">
960
966
  <pre>
961
- <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 95</span>
962
- 95: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ping</span>
963
- 96: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
964
- 97: <span class="ruby-keyword kw">end</span></pre>
967
+ <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 96</span>
968
+ 96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ping</span>
969
+ 97: <span class="ruby-ivar">@lastPing</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>
970
+ 98: <span class="ruby-keyword kw">end</span></pre>
965
971
  </div>
966
972
 
967
973
  </div>
@@ -998,17 +1004,17 @@
998
1004
  <div class="method-source-code"
999
1005
  id="start-atch-og-source">
1000
1006
  <pre>
1001
- <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 150</span>
1002
- 150: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startWatchDog</span>
1003
- 151: <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
1004
- 152: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
1005
- 153: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lastPing</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">120</span>
1006
- 154: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'Heartbeat from ProjectServer lost. Terminating.'</span>)
1007
- 155: <span class="ruby-keyword kw">end</span>
1008
- 156: <span class="ruby-identifier">sleep</span> <span class="ruby-value">30</span>
1009
- 157: <span class="ruby-keyword kw">end</span>
1010
- 158: <span class="ruby-keyword kw">end</span>
1011
- 159: <span class="ruby-keyword kw">end</span></pre>
1007
+ <span class="ruby-comment cmt"># File lib/daemon/ReportServer.rb, line 151</span>
1008
+ 151: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startWatchDog</span>
1009
+ 152: <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword kw">do</span>
1010
+ 153: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
1011
+ 154: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lastPing</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">120</span>
1012
+ 155: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'Heartbeat from ProjectServer lost. Terminating.'</span>)
1013
+ 156: <span class="ruby-keyword kw">end</span>
1014
+ 157: <span class="ruby-identifier">sleep</span> <span class="ruby-value">30</span>
1015
+ 158: <span class="ruby-keyword kw">end</span>
1016
+ 159: <span class="ruby-keyword kw">end</span>
1017
+ 160: <span class="ruby-keyword kw">end</span></pre>
1012
1018
  </div>
1013
1019
 
1014
1020
  </div>