taskjuggler 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (492) hide show
  1. data/CHANGELOG +7 -0
  2. data/data/tjp.vim +1 -1
  3. data/lib/exchangebug.rb +42 -0
  4. data/lib/ruby-signal-bug.rb +55 -0
  5. data/lib/taskjuggler/DataCache.rb +30 -41
  6. data/lib/taskjuggler/ResourceScenario.rb +19 -20
  7. data/lib/taskjuggler/TaskScenario.rb +11 -8
  8. data/lib/taskjuggler/Tj3Config.rb +1 -1
  9. data/prj_cfg.rb +3 -3
  10. data/test/TestSuite/Export-Reports/refs/DST.tjp +60 -0
  11. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +80 -0
  12. data/test/TestSuite/Export-Reports/tp.tjp +49 -0
  13. data/test/TestSuite/HTML-Reports/Alerts.html +412 -160
  14. data/test/TestSuite/HTML-Reports/TimeSheet.html +79 -0
  15. data/test/TestSuite/HTML-Reports/css/tjmanual.css +20 -0
  16. data/test/TestSuite/HTML-Reports/css/tjreport.css +7 -6
  17. data/test/TestSuite/HTML-Reports/reference.html +51 -0
  18. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +86 -0
  19. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/css/tjreport.css +0 -0
  20. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/details.png +0 -0
  21. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/flag-green.png +0 -0
  22. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/flag-red.png +0 -0
  23. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/flag-yellow.png +0 -0
  24. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/resource.png +0 -0
  25. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/resourcegroup.png +0 -0
  26. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/task.png +0 -0
  27. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/taskgroup.png +0 -0
  28. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/trend-down.png +0 -0
  29. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/trend-flat.png +0 -0
  30. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/icons/trend-up.png +0 -0
  31. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
  32. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
  33. data/test/TestSuite/{Scheduler/Errors → ReportGenerator/Correct}/scripts/wz_tooltip.js +0 -0
  34. data/test/TestSuite/Scheduler/Correct/Allocate.html +1075 -0
  35. data/test/TestSuite/Scheduler/Correct/Duration.html +610 -0
  36. data/test/TestSuite/Scheduler/{Errors → Correct}/css/tjmanual.css +0 -0
  37. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +413 -0
  38. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  39. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  40. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  41. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  42. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  43. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  44. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  45. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  46. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  47. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  48. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  49. data/test/TestSuite/{HTML-Reports/scripts → Scheduler/Correct}/scripts/wz_tooltip.js +20 -20
  50. data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
  51. data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
  52. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
  53. data/test/TestSuite/Syntax/Correct/DST.tjp +11 -0
  54. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +32 -0
  55. data/test/TestSuite/TimeSheets/receiver.log.mod +1056 -0
  56. data/test/TestSuite/TimeSheets/uu.txt +29 -0
  57. metadata +672 -1076
  58. data/benchmarks/UTF-8-Strings.rb +0 -58
  59. data/benchmarks/htmltaskreport-1.html +0 -47702
  60. data/benchmarks/htmltaskreport-2.html +0 -23345
  61. data/benchmarks/htmltaskreport-3.html +0 -23265
  62. data/benchmarks/htmltaskreport-4.html +0 -22135
  63. data/benchmarks/profile.clt +0 -36082
  64. data/benchmarks/tj3.profile +0 -0
  65. data/benchmarks/tj3.profile.grind +0 -6185
  66. data/benchmarks/tj3.profile.symbols +0 -432
  67. data/benchmarks/tj3.profile.txt +0 -448
  68. data/doc/AppConfig.html +0 -1515
  69. data/doc/CHANGELOG.html +0 -2441
  70. data/doc/COPYING.html +0 -923
  71. data/doc/Diff.html +0 -1217
  72. data/doc/Diff/Hunk.html +0 -1050
  73. data/doc/Diffable.html +0 -708
  74. data/doc/DiffableString.html +0 -708
  75. data/doc/Object.html +0 -744
  76. data/doc/README_rdoc.html +0 -774
  77. data/doc/RuntimeConfig.html +0 -880
  78. data/doc/String.html +0 -1029
  79. data/doc/TaskJuggler.html +0 -2698
  80. data/doc/TaskJuggler/Account.html +0 -777
  81. data/doc/TaskJuggler/AccountAttribute.html +0 -793
  82. data/doc/TaskJuggler/AccountScenario.html +0 -736
  83. data/doc/TaskJuggler/Allocation.html +0 -987
  84. data/doc/TaskJuggler/AllocationAttribute.html +0 -823
  85. data/doc/TaskJuggler/AttributeBase.html +0 -1379
  86. data/doc/TaskJuggler/AttributeDefinition.html +0 -839
  87. data/doc/TaskJuggler/AttributeOverwrite.html +0 -630
  88. data/doc/TaskJuggler/BatchProcessor.html +0 -1202
  89. data/doc/TaskJuggler/Booking.html +0 -883
  90. data/doc/TaskJuggler/BookingListAttribute.html +0 -793
  91. data/doc/TaskJuggler/BooleanAttribute.html +0 -793
  92. data/doc/TaskJuggler/CSVFile.html +0 -1152
  93. data/doc/TaskJuggler/CellSettingPattern.html +0 -724
  94. data/doc/TaskJuggler/CellSettingPatternList.html +0 -773
  95. data/doc/TaskJuggler/Charge.html +0 -801
  96. data/doc/TaskJuggler/ChargeListAttribute.html +0 -757
  97. data/doc/TaskJuggler/ChargeSet.html +0 -973
  98. data/doc/TaskJuggler/ChargeSetListAttribute.html +0 -802
  99. data/doc/TaskJuggler/CollisionDetector.html +0 -1113
  100. data/doc/TaskJuggler/ColumnListAttribute.html +0 -757
  101. data/doc/TaskJuggler/ColumnTable.html +0 -787
  102. data/doc/TaskJuggler/Daemon.html +0 -843
  103. data/doc/TaskJuggler/DataCache.html +0 -1049
  104. data/doc/TaskJuggler/DataCacheEntry.html +0 -761
  105. data/doc/TaskJuggler/DateAttribute.html +0 -761
  106. data/doc/TaskJuggler/DefinitionListAttribute.html +0 -679
  107. data/doc/TaskJuggler/DependencyListAttribute.html +0 -797
  108. data/doc/TaskJuggler/DurationAttribute.html +0 -794
  109. data/doc/TaskJuggler/FileList.html +0 -817
  110. data/doc/TaskJuggler/FileRecord.html +0 -726
  111. data/doc/TaskJuggler/FixnumAttribute.html +0 -715
  112. data/doc/TaskJuggler/FlagListAttribute.html +0 -793
  113. data/doc/TaskJuggler/FloatAttribute.html +0 -757
  114. data/doc/TaskJuggler/FormatListAttribute.html +0 -721
  115. data/doc/TaskJuggler/GanttChart.html +0 -1511
  116. data/doc/TaskJuggler/GanttContainer.html +0 -969
  117. data/doc/TaskJuggler/GanttHeader.html +0 -972
  118. data/doc/TaskJuggler/GanttHeaderScaleItem.html +0 -786
  119. data/doc/TaskJuggler/GanttLine.html +0 -1349
  120. data/doc/TaskJuggler/GanttLoadStack.html +0 -852
  121. data/doc/TaskJuggler/GanttMilestone.html +0 -950
  122. data/doc/TaskJuggler/GanttRouter.html +0 -1160
  123. data/doc/TaskJuggler/GanttTaskBar.html +0 -972
  124. data/doc/TaskJuggler/HTMLDocument.html +0 -800
  125. data/doc/TaskJuggler/HTMLElements.html +0 -623
  126. data/doc/TaskJuggler/HTMLGraphics.html +0 -861
  127. data/doc/TaskJuggler/ICalReport.html +0 -864
  128. data/doc/TaskJuggler/ICalendar.html +0 -1035
  129. data/doc/TaskJuggler/ICalendar/Component.html +0 -969
  130. data/doc/TaskJuggler/ICalendar/Event.html +0 -742
  131. data/doc/TaskJuggler/ICalendar/Journal.html +0 -722
  132. data/doc/TaskJuggler/ICalendar/Person.html +0 -633
  133. data/doc/TaskJuggler/ICalendar/Todo.html +0 -789
  134. data/doc/TaskJuggler/Interval.html +0 -1003
  135. data/doc/TaskJuggler/IntervalList.html +0 -821
  136. data/doc/TaskJuggler/JobInfo.html +0 -967
  137. data/doc/TaskJuggler/Journal.html +0 -1272
  138. data/doc/TaskJuggler/JournalEntry.html +0 -884
  139. data/doc/TaskJuggler/JournalEntryList.html +0 -1253
  140. data/doc/TaskJuggler/KeywordArray.html +0 -720
  141. data/doc/TaskJuggler/KeywordDocumentation.html +0 -2274
  142. data/doc/TaskJuggler/Limits.html +0 -1019
  143. data/doc/TaskJuggler/Limits/Limit.html +0 -1022
  144. data/doc/TaskJuggler/LimitsAttribute.html +0 -759
  145. data/doc/TaskJuggler/ListAttributeBase.html +0 -727
  146. data/doc/TaskJuggler/Log.html +0 -1187
  147. data/doc/TaskJuggler/LogFile.html +0 -1004
  148. data/doc/TaskJuggler/LogicalAttribute.html +0 -784
  149. data/doc/TaskJuggler/LogicalExpression.html +0 -825
  150. data/doc/TaskJuggler/LogicalExpressionAttribute.html +0 -715
  151. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +0 -715
  152. data/doc/TaskJuggler/LogicalFlag.html +0 -777
  153. data/doc/TaskJuggler/LogicalFunction.html +0 -1433
  154. data/doc/TaskJuggler/LogicalOperation.html +0 -1168
  155. data/doc/TaskJuggler/ManagerResponsibilities.html +0 -760
  156. data/doc/TaskJuggler/ManagerStatusRecord.html +0 -764
  157. data/doc/TaskJuggler/Message.html +0 -861
  158. data/doc/TaskJuggler/MessageHandler.html +0 -1102
  159. data/doc/TaskJuggler/Navigator.html +0 -967
  160. data/doc/TaskJuggler/NavigatorElement.html +0 -1018
  161. data/doc/TaskJuggler/NikuProject.html +0 -748
  162. data/doc/TaskJuggler/NikuReport.html +0 -1494
  163. data/doc/TaskJuggler/NikuResource.html +0 -718
  164. data/doc/TaskJuggler/NodeListAttribute.html +0 -679
  165. data/doc/TaskJuggler/PlaceHolderCell.html +0 -772
  166. data/doc/TaskJuggler/ProcessIntercom.html +0 -1041
  167. data/doc/TaskJuggler/ProcessIntercomIface.html +0 -797
  168. data/doc/TaskJuggler/Project.html +0 -3741
  169. data/doc/TaskJuggler/ProjectBroker.html +0 -1700
  170. data/doc/TaskJuggler/ProjectBrokerIface.html +0 -875
  171. data/doc/TaskJuggler/ProjectFileParser.html +0 -2127
  172. data/doc/TaskJuggler/ProjectFileScanner.html +0 -1921
  173. data/doc/TaskJuggler/ProjectRecord.html +0 -1002
  174. data/doc/TaskJuggler/ProjectServer.html +0 -1273
  175. data/doc/TaskJuggler/ProjectServerIface.html +0 -892
  176. data/doc/TaskJuggler/PropertyAttribute.html +0 -715
  177. data/doc/TaskJuggler/PropertyList.html +0 -1423
  178. data/doc/TaskJuggler/PropertySet.html +0 -1816
  179. data/doc/TaskJuggler/PropertyTreeNode.html +0 -2895
  180. data/doc/TaskJuggler/Query.html +0 -1783
  181. data/doc/TaskJuggler/RTFHandlers.html +0 -688
  182. data/doc/TaskJuggler/RTFNavigator.html +0 -816
  183. data/doc/TaskJuggler/RTFQuery.html +0 -1107
  184. data/doc/TaskJuggler/RTFReport.html +0 -844
  185. data/doc/TaskJuggler/RTFReportLink.html +0 -836
  186. data/doc/TaskJuggler/RTFWithQuerySupport.html +0 -726
  187. data/doc/TaskJuggler/RealFormat.html +0 -829
  188. data/doc/TaskJuggler/RealFormatAttribute.html +0 -679
  189. data/doc/TaskJuggler/ReferenceAttribute.html +0 -904
  190. data/doc/TaskJuggler/Report.html +0 -1645
  191. data/doc/TaskJuggler/ReportBase.html +0 -1192
  192. data/doc/TaskJuggler/ReportContext.html +0 -861
  193. data/doc/TaskJuggler/ReportScenario.html +0 -633
  194. data/doc/TaskJuggler/ReportServer.html +0 -1092
  195. data/doc/TaskJuggler/ReportServerIface.html +0 -926
  196. data/doc/TaskJuggler/ReportServerRecord.html +0 -805
  197. data/doc/TaskJuggler/ReportServlet.html +0 -1053
  198. data/doc/TaskJuggler/ReportTable.html +0 -1203
  199. data/doc/TaskJuggler/ReportTableCell.html +0 -1690
  200. data/doc/TaskJuggler/ReportTableColumn.html +0 -914
  201. data/doc/TaskJuggler/ReportTableLegend.html +0 -1084
  202. data/doc/TaskJuggler/ReportTableLine.html +0 -1091
  203. data/doc/TaskJuggler/Resource.html +0 -1066
  204. data/doc/TaskJuggler/ResourceListAttribute.html +0 -853
  205. data/doc/TaskJuggler/ResourceListRE.html +0 -761
  206. data/doc/TaskJuggler/ResourceScenario.html +0 -2591
  207. data/doc/TaskJuggler/RichText.html +0 -903
  208. data/doc/TaskJuggler/RichTextAttribute.html +0 -835
  209. data/doc/TaskJuggler/RichTextDocument.html +0 -1062
  210. data/doc/TaskJuggler/RichTextElement.html +0 -1804
  211. data/doc/TaskJuggler/RichTextFunctionExample.html +0 -823
  212. data/doc/TaskJuggler/RichTextFunctionHandler.html +0 -774
  213. data/doc/TaskJuggler/RichTextImage.html +0 -736
  214. data/doc/TaskJuggler/RichTextIntermediate.html +0 -1309
  215. data/doc/TaskJuggler/RichTextParser.html +0 -892
  216. data/doc/TaskJuggler/RichTextScanner.html +0 -1589
  217. data/doc/TaskJuggler/RichTextSnip.html +0 -1024
  218. data/doc/TaskJuggler/RichTextSyntaxRules.html +0 -2076
  219. data/doc/TaskJuggler/Scenario.html +0 -680
  220. data/doc/TaskJuggler/ScenarioData.html +0 -905
  221. data/doc/TaskJuggler/ScenarioListAttribute.html +0 -757
  222. data/doc/TaskJuggler/Scoreboard.html +0 -1265
  223. data/doc/TaskJuggler/ScoreboardInterval.html +0 -1116
  224. data/doc/TaskJuggler/SheetHandlerBase.html +0 -1321
  225. data/doc/TaskJuggler/SheetReceiver.html +0 -1422
  226. data/doc/TaskJuggler/SheetSender.html +0 -1192
  227. data/doc/TaskJuggler/Shift.html +0 -775
  228. data/doc/TaskJuggler/ShiftAssignment.html +0 -1032
  229. data/doc/TaskJuggler/ShiftAssignments.html +0 -1438
  230. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +0 -759
  231. data/doc/TaskJuggler/ShiftScenario.html +0 -806
  232. data/doc/TaskJuggler/SimpleQueryExpander.html +0 -756
  233. data/doc/TaskJuggler/SortListAttribute.html +0 -715
  234. data/doc/TaskJuggler/StatusSheetReceiver.html +0 -702
  235. data/doc/TaskJuggler/StatusSheetReport.html +0 -959
  236. data/doc/TaskJuggler/StatusSheetSender.html +0 -832
  237. data/doc/TaskJuggler/StdIoWrapper.html +0 -720
  238. data/doc/TaskJuggler/StringAttribute.html +0 -757
  239. data/doc/TaskJuggler/SymbolAttribute.html +0 -715
  240. data/doc/TaskJuggler/SyntaxReference.html +0 -1264
  241. data/doc/TaskJuggler/TOCEntry.html +0 -860
  242. data/doc/TaskJuggler/TSResourceRecord.html +0 -756
  243. data/doc/TaskJuggler/TSTaskRecord.html +0 -768
  244. data/doc/TaskJuggler/TableColumnDefinition.html +0 -973
  245. data/doc/TaskJuggler/TableOfContents.html +0 -814
  246. data/doc/TaskJuggler/TableReport.html +0 -2580
  247. data/doc/TaskJuggler/TagFile.html +0 -817
  248. data/doc/TaskJuggler/TagFile/TagFileEntry.html +0 -841
  249. data/doc/TaskJuggler/Task.html +0 -914
  250. data/doc/TaskJuggler/TaskDepListAttribute.html +0 -797
  251. data/doc/TaskJuggler/TaskDependency.html +0 -856
  252. data/doc/TaskJuggler/TaskListAttribute.html +0 -797
  253. data/doc/TaskJuggler/TaskListRE.html +0 -760
  254. data/doc/TaskJuggler/TaskScenario.html +0 -5237
  255. data/doc/TaskJuggler/TernarySearchTree.html +0 -1365
  256. data/doc/TaskJuggler/TextFormatter.html +0 -997
  257. data/doc/TaskJuggler/TextParser.html +0 -1886
  258. data/doc/TaskJuggler/TextParser/Macro.html +0 -732
  259. data/doc/TaskJuggler/TextParser/MacroTable.html +0 -856
  260. data/doc/TaskJuggler/TextParser/Pattern.html +0 -1767
  261. data/doc/TaskJuggler/TextParser/Rule.html +0 -1443
  262. data/doc/TaskJuggler/TextParser/Scanner.html +0 -1542
  263. data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +0 -685
  264. data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +0 -751
  265. data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +0 -748
  266. data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +0 -1128
  267. data/doc/TaskJuggler/TextParser/SourceFileInfo.html +0 -784
  268. data/doc/TaskJuggler/TextParser/StackElement.html +0 -964
  269. data/doc/TaskJuggler/TextParser/State.html +0 -1039
  270. data/doc/TaskJuggler/TextParser/StateTransition.html +0 -832
  271. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +0 -735
  272. data/doc/TaskJuggler/TextParser/TokenDoc.html +0 -766
  273. data/doc/TaskJuggler/TextReport.html +0 -945
  274. data/doc/TaskJuggler/TimeInterval.html +0 -841
  275. data/doc/TaskJuggler/TimeIntervalListAttribute.html +0 -797
  276. data/doc/TaskJuggler/TimeSheet.html +0 -1288
  277. data/doc/TaskJuggler/TimeSheetReceiver.html +0 -699
  278. data/doc/TaskJuggler/TimeSheetRecord.html +0 -1439
  279. data/doc/TaskJuggler/TimeSheetReport.html +0 -1037
  280. data/doc/TaskJuggler/TimeSheetSender.html +0 -724
  281. data/doc/TaskJuggler/TimeSheetSummary.html +0 -983
  282. data/doc/TaskJuggler/TimeSheets.html +0 -760
  283. data/doc/TaskJuggler/Tj3.html +0 -896
  284. data/doc/TaskJuggler/Tj3AppBase.html +0 -966
  285. data/doc/TaskJuggler/Tj3Client.html +0 -1534
  286. data/doc/TaskJuggler/Tj3Daemon.html +0 -894
  287. data/doc/TaskJuggler/Tj3Man.html +0 -792
  288. data/doc/TaskJuggler/Tj3SheetAppBase.html +0 -782
  289. data/doc/TaskJuggler/Tj3SsReceiver.html +0 -771
  290. data/doc/TaskJuggler/Tj3SsSender.html +0 -804
  291. data/doc/TaskJuggler/Tj3TsReceiver.html +0 -771
  292. data/doc/TaskJuggler/Tj3TsSender.html +0 -791
  293. data/doc/TaskJuggler/Tj3TsSummary.html +0 -799
  294. data/doc/TaskJuggler/TjException.html +0 -716
  295. data/doc/TaskJuggler/TjRuntimeError.html +0 -630
  296. data/doc/TaskJuggler/TjTime.html +0 -3179
  297. data/doc/TaskJuggler/TjpExample.html +0 -921
  298. data/doc/TaskJuggler/TjpExportRE.html +0 -1851
  299. data/doc/TaskJuggler/TjpSyntaxRules.html +0 -14721
  300. data/doc/TaskJuggler/URLParameter.html +0 -715
  301. data/doc/TaskJuggler/UserManual.html +0 -1248
  302. data/doc/TaskJuggler/VimSyntax.html +0 -1088
  303. data/doc/TaskJuggler/WebServer.html +0 -781
  304. data/doc/TaskJuggler/WelcomePage.html +0 -813
  305. data/doc/TaskJuggler/WorkingHours.html +0 -1293
  306. data/doc/TaskJuggler/WorkingHoursAttribute.html +0 -780
  307. data/doc/TaskJuggler/XMLBlob.html +0 -731
  308. data/doc/TaskJuggler/XMLComment.html +0 -726
  309. data/doc/TaskJuggler/XMLDocument.html +0 -827
  310. data/doc/TaskJuggler/XMLElement.html +0 -1014
  311. data/doc/TaskJuggler/XMLNamedText.html +0 -687
  312. data/doc/TaskJuggler/XMLText.html +0 -741
  313. data/doc/index.html +0 -4664
  314. data/doc/lib/taskjuggler/AccountScenario_rb.html +0 -69
  315. data/doc/lib/taskjuggler/Account_rb.html +0 -71
  316. data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +0 -67
  317. data/doc/lib/taskjuggler/Allocation_rb.html +0 -71
  318. data/doc/lib/taskjuggler/AppConfig_rb.html +0 -69
  319. data/doc/lib/taskjuggler/AttributeBase_rb.html +0 -69
  320. data/doc/lib/taskjuggler/AttributeDefinition_rb.html +0 -67
  321. data/doc/lib/taskjuggler/Attributes_rb.html +0 -83
  322. data/doc/lib/taskjuggler/BatchProcessor_rb.html +0 -71
  323. data/doc/lib/taskjuggler/Booking_rb.html +0 -67
  324. data/doc/lib/taskjuggler/ChargeSet_rb.html +0 -69
  325. data/doc/lib/taskjuggler/Charge_rb.html +0 -69
  326. data/doc/lib/taskjuggler/DataCache_rb.html +0 -71
  327. data/doc/lib/taskjuggler/FileList_rb.html +0 -67
  328. data/doc/lib/taskjuggler/HTMLDocument_rb.html +0 -71
  329. data/doc/lib/taskjuggler/HTMLElements_rb.html +0 -69
  330. data/doc/lib/taskjuggler/ICalendar_rb.html +0 -69
  331. data/doc/lib/taskjuggler/IntervalList_rb.html +0 -69
  332. data/doc/lib/taskjuggler/Interval_rb.html +0 -69
  333. data/doc/lib/taskjuggler/Journal_rb.html +0 -67
  334. data/doc/lib/taskjuggler/KeywordArray_rb.html +0 -67
  335. data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +0 -77
  336. data/doc/lib/taskjuggler/Limits_rb.html +0 -69
  337. data/doc/lib/taskjuggler/LogFile_rb.html +0 -69
  338. data/doc/lib/taskjuggler/Log_rb.html +0 -71
  339. data/doc/lib/taskjuggler/LogicalExpression_rb.html +0 -73
  340. data/doc/lib/taskjuggler/LogicalFunction_rb.html +0 -69
  341. data/doc/lib/taskjuggler/LogicalOperation_rb.html +0 -69
  342. data/doc/lib/taskjuggler/MessageHandler_rb.html +0 -69
  343. data/doc/lib/taskjuggler/ProjectFileParser_rb.html +0 -77
  344. data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +0 -69
  345. data/doc/lib/taskjuggler/Project_rb.html +0 -113
  346. data/doc/lib/taskjuggler/PropertyList_rb.html +0 -67
  347. data/doc/lib/taskjuggler/PropertySet_rb.html +0 -71
  348. data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +0 -67
  349. data/doc/lib/taskjuggler/Query_rb.html +0 -69
  350. data/doc/lib/taskjuggler/RealFormat_rb.html +0 -67
  351. data/doc/lib/taskjuggler/ResourceScenario_rb.html +0 -69
  352. data/doc/lib/taskjuggler/Resource_rb.html +0 -71
  353. data/doc/lib/taskjuggler/RichText/Document_rb.html +0 -73
  354. data/doc/lib/taskjuggler/RichText/Element_rb.html +0 -75
  355. data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +0 -73
  356. data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +0 -67
  357. data/doc/lib/taskjuggler/RichText/Parser_rb.html +0 -75
  358. data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +0 -75
  359. data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +0 -73
  360. data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +0 -73
  361. data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +0 -75
  362. data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +0 -71
  363. data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +0 -69
  364. data/doc/lib/taskjuggler/RichText/Scanner_rb.html +0 -71
  365. data/doc/lib/taskjuggler/RichText/Snip_rb.html +0 -71
  366. data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +0 -67
  367. data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +0 -71
  368. data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +0 -71
  369. data/doc/lib/taskjuggler/RichText_rb.html +0 -73
  370. data/doc/lib/taskjuggler/RuntimeConfig_rb.html +0 -69
  371. data/doc/lib/taskjuggler/ScenarioData_rb.html +0 -71
  372. data/doc/lib/taskjuggler/Scenario_rb.html +0 -69
  373. data/doc/lib/taskjuggler/Scoreboard_rb.html +0 -69
  374. data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +0 -75
  375. data/doc/lib/taskjuggler/SheetReceiver_rb.html +0 -81
  376. data/doc/lib/taskjuggler/SheetSender_rb.html +0 -79
  377. data/doc/lib/taskjuggler/ShiftAssignments_rb.html +0 -71
  378. data/doc/lib/taskjuggler/ShiftScenario_rb.html +0 -69
  379. data/doc/lib/taskjuggler/Shift_rb.html +0 -71
  380. data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +0 -69
  381. data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +0 -69
  382. data/doc/lib/taskjuggler/StatusSheetSender_rb.html +0 -69
  383. data/doc/lib/taskjuggler/StdIoWrapper_rb.html +0 -67
  384. data/doc/lib/taskjuggler/SyntaxReference_rb.html +0 -75
  385. data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +0 -67
  386. data/doc/lib/taskjuggler/TaskDependency_rb.html +0 -67
  387. data/doc/lib/taskjuggler/TaskJuggler_rb.html +0 -75
  388. data/doc/lib/taskjuggler/TaskScenario_rb.html +0 -71
  389. data/doc/lib/taskjuggler/Task_rb.html +0 -71
  390. data/doc/lib/taskjuggler/TernarySearchTree_rb.html +0 -69
  391. data/doc/lib/taskjuggler/TextFormatter_rb.html +0 -69
  392. data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +0 -67
  393. data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +0 -71
  394. data/doc/lib/taskjuggler/TextParser/Rule_rb.html +0 -69
  395. data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +0 -77
  396. data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +0 -67
  397. data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +0 -67
  398. data/doc/lib/taskjuggler/TextParser/State_rb.html +0 -67
  399. data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +0 -67
  400. data/doc/lib/taskjuggler/TextParser_rb.html +0 -79
  401. data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +0 -69
  402. data/doc/lib/taskjuggler/TimeSheetSender_rb.html +0 -69
  403. data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +0 -69
  404. data/doc/lib/taskjuggler/TimeSheets_rb.html +0 -67
  405. data/doc/lib/taskjuggler/Tj3AppBase_rb.html +0 -79
  406. data/doc/lib/taskjuggler/Tj3Config_rb.html +0 -71
  407. data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +0 -69
  408. data/doc/lib/taskjuggler/TjException_rb.html +0 -67
  409. data/doc/lib/taskjuggler/TjTime_rb.html +0 -71
  410. data/doc/lib/taskjuggler/TjpExample_rb.html +0 -69
  411. data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +0 -67
  412. data/doc/lib/taskjuggler/URLParameter_rb.html +0 -69
  413. data/doc/lib/taskjuggler/UTF8String_rb.html +0 -69
  414. data/doc/lib/taskjuggler/UserManual_rb.html +0 -81
  415. data/doc/lib/taskjuggler/VimSyntax_rb.html +0 -69
  416. data/doc/lib/taskjuggler/WorkingHours_rb.html +0 -71
  417. data/doc/lib/taskjuggler/XMLDocument_rb.html +0 -69
  418. data/doc/lib/taskjuggler/XMLElement_rb.html +0 -69
  419. data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +0 -75
  420. data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +0 -75
  421. data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +0 -75
  422. data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +0 -71
  423. data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +0 -71
  424. data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +0 -71
  425. data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +0 -71
  426. data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +0 -71
  427. data/doc/lib/taskjuggler/apps/Tj3_rb.html +0 -71
  428. data/doc/lib/taskjuggler/daemon/Daemon_rb.html +0 -69
  429. data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +0 -71
  430. data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +0 -83
  431. data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +0 -85
  432. data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +0 -73
  433. data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +0 -69
  434. data/doc/lib/taskjuggler/daemon/WebServer_rb.html +0 -81
  435. data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +0 -71
  436. data/doc/lib/taskjuggler/deep_copy_rb.html +0 -67
  437. data/doc/lib/taskjuggler/reports/CSVFile_rb.html +0 -69
  438. data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +0 -69
  439. data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +0 -69
  440. data/doc/lib/taskjuggler/reports/GanttChart_rb.html +0 -75
  441. data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +0 -69
  442. data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +0 -67
  443. data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +0 -69
  444. data/doc/lib/taskjuggler/reports/GanttLine_rb.html +0 -79
  445. data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +0 -69
  446. data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +0 -69
  447. data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +0 -69
  448. data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +0 -69
  449. data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +0 -67
  450. data/doc/lib/taskjuggler/reports/ICalReport_rb.html +0 -71
  451. data/doc/lib/taskjuggler/reports/Navigator_rb.html +0 -69
  452. data/doc/lib/taskjuggler/reports/NikuReport_rb.html +0 -71
  453. data/doc/lib/taskjuggler/reports/ReportBase_rb.html +0 -67
  454. data/doc/lib/taskjuggler/reports/ReportContext_rb.html +0 -67
  455. data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +0 -67
  456. data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +0 -67
  457. data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +0 -67
  458. data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +0 -69
  459. data/doc/lib/taskjuggler/reports/ReportTable_rb.html +0 -71
  460. data/doc/lib/taskjuggler/reports/Report_rb.html +0 -97
  461. data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +0 -75
  462. data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +0 -69
  463. data/doc/lib/taskjuggler/reports/TableReport_rb.html +0 -77
  464. data/doc/lib/taskjuggler/reports/TagFile_rb.html +0 -71
  465. data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +0 -75
  466. data/doc/lib/taskjuggler/reports/TextReport_rb.html +0 -69
  467. data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +0 -69
  468. data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +0 -69
  469. data/doc/lib/tj3_rb.html +0 -69
  470. data/doc/lib/tj3client_rb.html +0 -69
  471. data/doc/lib/tj3d_rb.html +0 -69
  472. data/doc/lib/tj3man_rb.html +0 -69
  473. data/doc/lib/tj3ss_receiver_rb.html +0 -69
  474. data/doc/lib/tj3ss_sender_rb.html +0 -69
  475. data/doc/lib/tj3ts_receiver_rb.html +0 -69
  476. data/doc/lib/tj3ts_sender_rb.html +0 -69
  477. data/doc/lib/tj3ts_summary_rb.html +0 -69
  478. data/doc/rdoc.css +0 -706
  479. data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +0 -40
  480. data/test/TestSuite/HTML-Reports/CellText.html +0 -758
  481. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +0 -156
  482. data/test/TestSuite/HTML-Reports/IsOngoing.html +0 -172
  483. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +0 -245
  484. data/test/TestSuite/HTML-Reports/Query.html +0 -31
  485. data/test/TestSuite/HTML-Reports/depArrows.html +0 -851
  486. data/test/TestSuite/HTML-Reports/profile.html +0 -37581
  487. data/test/TestSuite/Scheduler/Errors/R.html +0 -113
  488. data/test/TestSuite/StatusSheets/dev2.tji +0 -22
  489. data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +0 -38
  490. data/test/TestSuite/TimeSheets/resrep.tji +0 -7
  491. data/test/TestSuite/TimeSheets/ts.tji +0 -351
  492. data/test/TestSuite/TimeSheets/tsdef.tji +0 -2
data/CHANGELOG CHANGED
@@ -1,3 +1,10 @@
1
+ = Release 0.2.1 (2011-07-13)
2
+
3
+ == Bug Fixes
4
+
5
+ * Fix scheduler deadlock problem.
6
+
7
+
1
8
  = Release 0.2.0 (2011-07-10)
2
9
 
3
10
  == New Features
data/data/tjp.vim CHANGED
@@ -1,7 +1,7 @@
1
1
  " Vim syntax file
2
2
  " Language: TaskJuggler
3
3
  " Maintainer: TaskJuggler Developers <taskjuggler-devel@googlegroups.com>
4
- " Last Change: 2011-07-10 12:20:41 +0200
4
+ " Last Change: 2011-07-13 20:16:00 +0200
5
5
  " This file was automatically generated by VimSyntax.rb
6
6
 
7
7
  if exists("b:current_syntax")
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby -w
2
+ # encoding: UTF-8
3
+ #
4
+ # = exchangebug.rb -- The TaskJuggler III Project Management Software
5
+ #
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
8
+ #
9
+ # This program is free software; you can redistribute it and/or modify
10
+ # it under the terms of version 2 of the GNU General Public License as
11
+ # published by the Free Software Foundation.
12
+ #
13
+
14
+ require 'mail'
15
+
16
+ Mail.defaults do
17
+ delivery_method :smtp, {
18
+ :address => 'storexbh1.amd.com',
19
+ :port => 25
20
+ }
21
+ end
22
+
23
+ mail = Mail.deliver do
24
+ #to [ 'Test.STOREXPF1@amd.com', 'Test.Storexmbp01@amd.com', 'dl.xadm-in@amd.com' ]
25
+ to 'Chris.Schlaeger@amd.com'
26
+ from 'timesheets@taskjuggler.amd.com'
27
+ subject 'Mail that gets corrupted by Exchange Server'
28
+ text_part do
29
+ content_type [ 'text', 'plain', { 'charset' => 'UTF-8' } ]
30
+ content_transfer_encoding 'quoted-printable'
31
+ body "This is the plain text part.\nCorrupted mails no longer have this content."
32
+ end
33
+ html_part do
34
+ content_type 'text/html; charset=UTF-8'
35
+ content_transfer_encoding 'quoted-printable'
36
+ body "<h1>This is the HTML part.\nCorrupted mails have this text in the text/plain part as well.</h1>"
37
+ end
38
+ end
39
+ #mail.deliver
40
+
41
+ puts "The following mail has been sent out:\n"
42
+ puts mail.to_s
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby -w
2
+ # encoding: UTF-8
3
+ #
4
+ # = ruby-signal-bug.rb -- The TaskJuggler III Project Management Software
5
+ #
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
7
+ # by Chris Schlaeger <chris@linux.com>
8
+ #
9
+ # This program is free software; you can redistribute it and/or modify
10
+ # it under the terms of version 2 of the GNU General Public License as
11
+ # published by the Free Software Foundation.
12
+ #
13
+
14
+
15
+ require 'BatchProcessor'
16
+
17
+ def test_fileIO
18
+ # First parameter should be larger than the number of CPU cores.
19
+ doRun(3, 2000) do
20
+ fname = "test#{$$}.txt"
21
+ f = File.new(fname, 'w')
22
+ 0.upto(10000) do |i|
23
+ f.puts "#{i} Hello, world! "
24
+ end
25
+ f.close
26
+ File.delete(fname)
27
+
28
+ # Allow some time for the OS to recycle file descriptors.
29
+ sleep(0.05)
30
+ end
31
+ end
32
+
33
+ def doRun(maxCPUs, jobs, &block)
34
+ # Create a BatchProcessor
35
+ bp = TaskJuggler::BatchProcessor.new(maxCPUs)
36
+
37
+ # Queue jobs
38
+ jobs.times do |i|
39
+ bp.queue("job #{i}") { yield }
40
+ end
41
+
42
+ ok = error = 0
43
+
44
+ # Wait for them to finish
45
+ bp.wait do |j|
46
+ if j.retVal.signaled?
47
+ error += 1
48
+ else
49
+ ok += 1
50
+ end
51
+ end
52
+ puts "Ok: #{ok} Errors: #{error}"
53
+ end
54
+
55
+ test_fileIO
@@ -77,58 +77,23 @@ class TaskJuggler
77
77
  @entries = {}
78
78
  end
79
79
 
80
- # Store _value_ into the cache using _key_ to tag it. _key_ must be unique
81
- # and must be used to load the value from the cache again. You cannot
82
- # store nil values!
83
- def store(value, key)
84
- @stores += 1
85
-
86
- if @entries.size > @highWaterMark
87
- while @entries.size > @lowWaterMark
88
- # How many entries do we need to delete to get to the low watermark?
89
- toDelete = @entries.size - @lowWaterMark
90
- @entries.delete_if do |foo, e|
91
- # Hit counts age with every cleanup.
92
- (e.hits -= 1) < 0 && (toDelete -= 1) >= 0
93
- end
94
- end
95
- end
96
-
97
- @entries[key] = DataCacheEntry.new(value)
98
-
99
- value
100
- end
101
-
102
80
  if RUBY_VERSION < '1.9.0'
103
81
 
104
82
  # Ruby 1.8 has a buggy hash key generation algorithm that leads to many
105
83
  # hash collisions. We completely disable caching on 1.8.
106
84
 
107
- def load(key)
108
- nil
109
- end
110
-
111
- def cached(key)
85
+ def cached(*args)
112
86
  yield
113
87
  end
114
88
 
115
89
  else
116
90
 
117
- # Retrieve the value indexed by _key_ from the cache. If it's not found,
118
- # nil is returned.
119
- def load(key)
120
- if (e = @entries[key])
121
- @hits += 1
122
- e.value
123
- else
124
- @misses += 1
125
- nil
126
- end
127
- end
128
-
129
- # If we have a value for the _key_, return the value. Otherwise call the
91
+ # _args_ is a set of arguments that unambigously identify the data entry.
92
+ # It's converted into a hash to store or recover a previously stored
93
+ # entry. If we have a value for the key, return the value. Otherwise call the
130
94
  # block to compute the value, store it and return it.
131
- def cached(key)
95
+ def cached(*args)
96
+ key = args.hash
132
97
  if @entries.has_key?(key)
133
98
  e = @entries[key]
134
99
  @hits += 1
@@ -149,6 +114,30 @@ Hit Rate: #{@hits * 100.0 / (@hits + @misses)}%
149
114
  EOT
150
115
  end
151
116
 
117
+ private
118
+
119
+ # Store _value_ into the cache using _key_ to tag it. _key_ must be unique
120
+ # and must be used to load the value from the cache again. You cannot
121
+ # store nil values!
122
+ def store(value, key)
123
+ @stores += 1
124
+
125
+ if @entries.size > @highWaterMark
126
+ while @entries.size > @lowWaterMark
127
+ # How many entries do we need to delete to get to the low watermark?
128
+ toDelete = @entries.size - @lowWaterMark
129
+ @entries.delete_if do |foo, e|
130
+ # Hit counts age with every cleanup.
131
+ (e.hits -= 1) < 0 && (toDelete -= 1) >= 0
132
+ end
133
+ end
134
+ end
135
+
136
+ @entries[key] = DataCacheEntry.new(value)
137
+
138
+ value
139
+ end
140
+
152
141
  end
153
142
 
154
143
  end
@@ -314,28 +314,27 @@ class TaskJuggler
314
314
  return 0.0 if startIdx >= endIdx || (task && !@duties.include?(task))
315
315
 
316
316
  # The unique key we use to address the result in the cache.
317
- key = [ self, :ResourceScenarioEffectiveWork, startIdx, endIdx,
318
- task ].hash
319
- work = @dCache.load(key)
320
- return work if work
321
-
322
- # Convert the interval dates to indexes if needed.
323
- startIdx = @project.dateToIdx(startIdx) if startIdx.is_a?(TjTime)
324
- endIdx = @project.dateToIdx(endIdx) if endIdx.is_a?(TjTime)
325
-
326
- work = 0.0
327
- if @property.container?
328
- @property.kids.each do |resource|
329
- work += resource.getEffectiveWork(@scenarioIdx, startIdx, endIdx, task)
317
+ @dCache.cached(self, :ResourceScenarioEffectiveWork, startIdx, endIdx,
318
+ task) do
319
+ # Convert the interval dates to indexes if needed.
320
+ startIdx = @project.dateToIdx(startIdx) if startIdx.is_a?(TjTime)
321
+ endIdx = @project.dateToIdx(endIdx) if endIdx.is_a?(TjTime)
322
+
323
+ work = 0.0
324
+ if @property.container?
325
+ @property.kids.each do |resource|
326
+ work += resource.getEffectiveWork(@scenarioIdx, startIdx, endIdx,
327
+ task)
328
+ end
329
+ else
330
+ unless @scoreboard.nil?
331
+ work = @project.convertToDailyLoad(
332
+ getAllocatedSlots(startIdx, endIdx, task) *
333
+ @project['scheduleGranularity']) * @efficiency
334
+ end
330
335
  end
331
- else
332
- return 0.0 if @scoreboard.nil?
333
-
334
- work = @project.convertToDailyLoad(
335
- getAllocatedSlots(startIdx, endIdx, task) *
336
- @project['scheduleGranularity']) * @efficiency
336
+ work
337
337
  end
338
- @dCache.store(work, key)
339
338
  end
340
339
 
341
340
  # Returns the allocated accumulated time of this resource and its children.
@@ -872,7 +872,11 @@ class TaskJuggler
872
872
  # least one specified end date and a duration criteria or the other end
873
873
  # date.
874
874
  def readyForScheduling?
875
- return false if @scheduled || @isRunAway
875
+ # If the tasks has already been scheduled, we still call it 'ready' so
876
+ # it will be removed from the todo list.
877
+ return true if @scheduled
878
+
879
+ return false if @isRunAway
876
880
 
877
881
  if @forward
878
882
  return true if @start && (hasDurationSpec? || @end)
@@ -888,6 +892,9 @@ class TaskJuggler
888
892
  # or end date has been determined and other tasks may be ready for
889
893
  # scheduling now.
890
894
  def schedule
895
+ # Check if the task has already been scheduled e. g. by propagateDate().
896
+ return true if @scheduled
897
+
891
898
  # Compute the date of the next slot this task wants to have scheduled.
892
899
  # This must either be the first slot ever or it must be directly
893
900
  # adjecent to the previous slot. If this task has not yet been scheduled
@@ -1428,8 +1435,7 @@ class TaskJuggler
1428
1435
  return 0.0 if @milestone || startIdx >= endIdx ||
1429
1436
  (resource && !@assignedresources.include?(resource))
1430
1437
 
1431
- key = [ self, :TaskScenarioAllocatedTime, startIdx, endIdx, resource ].hash
1432
- @dCache.cached(key) do
1438
+ @dCache.cached(self, :TaskScenarioAllocatedTime, startIdx, endIdx, resource) do
1433
1439
  allocatedTime = 0.0
1434
1440
  if @property.container?
1435
1441
  @property.kids.each do |task|
@@ -1459,8 +1465,7 @@ class TaskJuggler
1459
1465
  return 0.0 if @milestone || startIdx >= endIdx ||
1460
1466
  (resource && !@assignedresources.include?(resource))
1461
1467
 
1462
- key = [ self, :TaskScenarioEffectiveWork, startIdx, endIdx, resource ].hash
1463
- @dCache.cached(key) do
1468
+ @dCache.cached(self, :TaskScenarioEffectiveWork, startIdx, endIdx, resource) do
1464
1469
  workLoad = 0.0
1465
1470
  if @property.container?
1466
1471
  @property.kids.each do |task|
@@ -1488,9 +1493,7 @@ class TaskJuggler
1488
1493
  # This function is often called recursively for the same parameters. We
1489
1494
  # store the results in the cache to avoid repeated computations of the
1490
1495
  # same results.
1491
- key = [ self, :TaskScenarioCollectTimeOffIntervals, iv, minDuration ].hash
1492
- @dCache.cached(key) do
1493
- workLoad = @dCache.load(key)
1496
+ @dCache.cached(self, :TaskScenarioCollectTimeOffIntervals, iv, minDuration) do
1494
1497
  il = IntervalList.new
1495
1498
  il << TimeInterval.new(@project['start'], @project['end'])
1496
1499
  if @property.leaf?
@@ -14,7 +14,7 @@
14
14
  require 'taskjuggler/UTF8String'
15
15
  require 'taskjuggler/AppConfig'
16
16
 
17
- AppConfig.version = '0.2.0'
17
+ AppConfig.version = '0.2.1'
18
18
  AppConfig.packageName = 'taskjuggler'
19
19
  AppConfig.softwareName = 'TaskJuggler III'
20
20
  AppConfig.packageInfo = 'A Project Management Software'
data/prj_cfg.rb CHANGED
@@ -45,6 +45,6 @@ RAKEFILE = 'Rakefile'
45
45
  PRJ_FILE = 'prj_cfg.rb'
46
46
  GEM_SPEC_FILE = 'gem_spec.rb'
47
47
  DATA_FILES = FileList["benchmarks/**/*", "examples/**/*", "manual/*", "test/all.rb", "test/MessageChecker.rb", "test/TestSuite/**/*", "spec/**/*", "data/**/*"]
48
- DEPENDENCIES = { 'mail' => '2.2.15' }
49
- DEVEL_DEPENDENCIES = { 'rcov' => '0.9.9',
50
- 'rspec' => '2.5.0' }
48
+ DEPENDENCIES = { 'mail' => '>= 2.2.15' }
49
+ DEVEL_DEPENDENCIES = { 'rcov' => '>= 0.9.9',
50
+ 'rspec' => '>= 2.5.0' }
@@ -0,0 +1,60 @@
1
+ project prj "DST Test" "1.0" 2012-09-01-00:00-+0000 - 2012-10-31-20:00-+0000 {
2
+ timezone "UTC"
3
+ scenario plan "Plan Scenario" {
4
+ active yes
5
+ }
6
+ }
7
+
8
+ projectids prj
9
+
10
+ resource r "R"
11
+
12
+ task t "T" {
13
+ start 2012-09-03-09:00-+0000
14
+ end 2012-10-12-17:00-+0000
15
+ scheduling asap
16
+ scheduled
17
+ }
18
+ supplement task t {
19
+ booking r 2012-09-03-09:00-+0000 + 8.0h,
20
+ 2012-09-04-09:00-+0000 + 8.0h,
21
+ 2012-09-05-09:00-+0000 + 8.0h,
22
+ 2012-09-06-09:00-+0000 + 8.0h,
23
+ 2012-09-07-09:00-+0000 + 8.0h,
24
+ 2012-09-10-09:00-+0000 + 8.0h,
25
+ 2012-09-11-09:00-+0000 + 8.0h,
26
+ 2012-09-12-09:00-+0000 + 8.0h,
27
+ 2012-09-13-09:00-+0000 + 8.0h,
28
+ 2012-09-14-09:00-+0000 + 8.0h,
29
+ 2012-09-17-09:00-+0000 + 8.0h,
30
+ 2012-09-18-09:00-+0000 + 8.0h,
31
+ 2012-09-19-09:00-+0000 + 8.0h,
32
+ 2012-09-20-09:00-+0000 + 8.0h,
33
+ 2012-09-21-09:00-+0000 + 8.0h,
34
+ 2012-09-24-09:00-+0000 + 8.0h,
35
+ 2012-09-25-09:00-+0000 + 8.0h,
36
+ 2012-09-26-09:00-+0000 + 8.0h,
37
+ 2012-09-27-09:00-+0000 + 8.0h,
38
+ 2012-09-28-09:00-+0000 + 8.0h,
39
+ 2012-10-01-09:00-+0000 + 8.0h,
40
+ 2012-10-02-09:00-+0000 + 8.0h,
41
+ 2012-10-03-09:00-+0000 + 8.0h,
42
+ 2012-10-04-09:00-+0000 + 8.0h,
43
+ 2012-10-05-09:00-+0000 + 8.0h,
44
+ 2012-10-08-09:00-+0000 + 8.0h,
45
+ 2012-10-09-09:00-+0000 + 8.0h,
46
+ 2012-10-10-09:00-+0000 + 8.0h,
47
+ 2012-10-11-09:00-+0000 + 8.0h,
48
+ 2012-10-12-09:00-+0000 + 8.0h { overtime 2 }
49
+ priority 500
50
+ projectid prj
51
+ }
52
+ supplement resource r {
53
+ workinghours sun off
54
+ workinghours mon 9:00 - 17:00
55
+ workinghours tue 9:00 - 17:00
56
+ workinghours wed 9:00 - 17:00
57
+ workinghours thu 9:00 - 17:00
58
+ workinghours fri 9:00 - 17:00
59
+ workinghours sat off
60
+ }
@@ -0,0 +1,80 @@
1
+ project prj "Release Plan" "1.0" 2010-11-10-00:00-+0000 - 2011-02-09-06:00-+0000 {
2
+ timezone "UTC"
3
+ scenario plan "Plan Scenario" {
4
+ active yes
5
+ }
6
+ }
7
+
8
+ projectids prj
9
+
10
+
11
+ task merge "Merge Window" {
12
+ start 2010-11-10-00:00-+0000
13
+ end 2010-11-24-00:00-+0000
14
+ scheduling asap
15
+ scheduled
16
+ }
17
+ task b1 "Beta 1" {
18
+ depends merge
19
+ start 2010-11-24-00:00-+0000
20
+ milestone
21
+ scheduled
22
+ }
23
+ task b2 "Beta 2" {
24
+ depends b1
25
+ start 2010-12-01-00:00-+0000
26
+ milestone
27
+ scheduled
28
+ }
29
+ task b3 "Beta 3" {
30
+ depends b2
31
+ start 2010-12-08-00:00-+0000
32
+ milestone
33
+ scheduled
34
+ }
35
+ task b4 "Beta 4" {
36
+ depends b3
37
+ start 2010-12-15-00:00-+0000
38
+ milestone
39
+ scheduled
40
+ }
41
+ task b5 "Beta 5" {
42
+ depends b4
43
+ start 2010-12-22-00:00-+0000
44
+ milestone
45
+ scheduled
46
+ }
47
+ task final "Final Release" {
48
+ depends b5
49
+ start 2010-12-29-00:00-+0000
50
+ milestone
51
+ scheduled
52
+ }
53
+ supplement task merge {
54
+ priority 500
55
+ projectid prj
56
+ }
57
+ supplement task b1 {
58
+ priority 500
59
+ projectid prj
60
+ }
61
+ supplement task b2 {
62
+ priority 500
63
+ projectid prj
64
+ }
65
+ supplement task b3 {
66
+ priority 500
67
+ projectid prj
68
+ }
69
+ supplement task b4 {
70
+ priority 500
71
+ projectid prj
72
+ }
73
+ supplement task b5 {
74
+ priority 500
75
+ projectid prj
76
+ }
77
+ supplement task final {
78
+ priority 500
79
+ projectid prj
80
+ }