taskjuggler 0.0.10 → 0.0.11

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 (787) hide show
  1. data/CHANGELOG +115 -0
  2. data/README.rdoc +105 -0
  3. data/examples/tutorial.tjp +21 -16
  4. data/gem_spec.rb +1 -1
  5. data/lib/{Account.rb → taskjuggler/Account.rb} +2 -3
  6. data/lib/{AccountScenario.rb → taskjuggler/AccountScenario.rb} +1 -1
  7. data/lib/taskjuggler/AlgorithmDiff.rb +311 -0
  8. data/lib/{Allocation.rb → taskjuggler/Allocation.rb} +3 -3
  9. data/lib/{AppConfig.rb → taskjuggler/AppConfig.rb} +0 -1
  10. data/lib/{AttributeBase.rb → taskjuggler/AttributeBase.rb} +1 -1
  11. data/lib/{AttributeDefinition.rb → taskjuggler/AttributeDefinition.rb} +0 -0
  12. data/lib/{Attributes.rb → taskjuggler/Attributes.rb} +19 -9
  13. data/lib/{BatchProcessor.rb → taskjuggler/BatchProcessor.rb} +0 -0
  14. data/lib/{Booking.rb → taskjuggler/Booking.rb} +0 -0
  15. data/lib/{Charge.rb → taskjuggler/Charge.rb} +1 -1
  16. data/lib/{ChargeSet.rb → taskjuggler/ChargeSet.rb} +1 -1
  17. data/lib/{DataCache.rb → taskjuggler/DataCache.rb} +0 -0
  18. data/lib/{FileList.rb → taskjuggler/FileList.rb} +0 -0
  19. data/lib/{HTMLDocument.rb → taskjuggler/HTMLDocument.rb} +1 -1
  20. data/lib/{Interval.rb → taskjuggler/Interval.rb} +1 -1
  21. data/lib/{IntervalList.rb → taskjuggler/IntervalList.rb} +1 -1
  22. data/lib/{Journal.rb → taskjuggler/Journal.rb} +2 -2
  23. data/lib/{KeywordArray.rb → taskjuggler/KeywordArray.rb} +0 -0
  24. data/lib/{KeywordDocumentation.rb → taskjuggler/KeywordDocumentation.rb} +5 -5
  25. data/lib/{Limits.rb → taskjuggler/Limits.rb} +1 -1
  26. data/lib/{Log.rb → taskjuggler/Log.rb} +0 -0
  27. data/lib/{LogFile.rb → taskjuggler/LogFile.rb} +0 -0
  28. data/lib/{LogicalExpression.rb → taskjuggler/LogicalExpression.rb} +3 -3
  29. data/lib/{LogicalFunction.rb → taskjuggler/LogicalFunction.rb} +1 -1
  30. data/lib/{LogicalOperation.rb → taskjuggler/LogicalOperation.rb} +1 -1
  31. data/lib/{MessageHandler.rb → taskjuggler/MessageHandler.rb} +3 -1
  32. data/lib/{Project.rb → taskjuggler/Project.rb} +51 -48
  33. data/lib/{ProjectFileParser.rb → taskjuggler/ProjectFileParser.rb} +25 -9
  34. data/lib/{ProjectFileScanner.rb → taskjuggler/ProjectFileScanner.rb} +5 -5
  35. data/lib/{PropertyList.rb → taskjuggler/PropertyList.rb} +0 -0
  36. data/lib/{PropertySet.rb → taskjuggler/PropertySet.rb} +3 -4
  37. data/lib/{PropertyTreeNode.rb → taskjuggler/PropertyTreeNode.rb} +157 -11
  38. data/lib/{Query.rb → taskjuggler/Query.rb} +17 -7
  39. data/lib/{RealFormat.rb → taskjuggler/RealFormat.rb} +0 -0
  40. data/lib/{Resource.rb → taskjuggler/Resource.rb} +8 -6
  41. data/lib/{ResourceScenario.rb → taskjuggler/ResourceScenario.rb} +26 -65
  42. data/lib/{RichText.rb → taskjuggler/RichText.rb} +3 -3
  43. data/lib/{RichTextDocument.rb → taskjuggler/RichText/Document.rb} +3 -3
  44. data/lib/{RichTextElement.rb → taskjuggler/RichText/Element.rb} +10 -4
  45. data/lib/{RichTextFunctionExample.rb → taskjuggler/RichText/FunctionExample.rb} +3 -3
  46. data/lib/{RichTextFunctionHandler.rb → taskjuggler/RichText/FunctionHandler.rb} +0 -0
  47. data/lib/{RichTextParser.rb → taskjuggler/RichText/Parser.rb} +6 -4
  48. data/lib/{RTFHandlers.rb → taskjuggler/RichText/RTFHandlers.rb} +4 -4
  49. data/lib/{RTFNavigator.rb → taskjuggler/RichText/RTFNavigator.rb} +3 -3
  50. data/lib/{RTFQuery.rb → taskjuggler/RichText/RTFQuery.rb} +62 -39
  51. data/lib/{RTFReport.rb → taskjuggler/RichText/RTFReport.rb} +2 -2
  52. data/lib/{RTFReportLink.rb → taskjuggler/RichText/RTFReportLink.rb} +4 -4
  53. data/lib/{RTFWithQuerySupport.rb → taskjuggler/RichText/RTFWithQuerySupport.rb} +1 -1
  54. data/lib/{RichTextScanner.rb → taskjuggler/RichText/Scanner.rb} +18 -5
  55. data/lib/{RichTextSnip.rb → taskjuggler/RichText/Snip.rb} +2 -2
  56. data/lib/{RichTextSyntaxRules.rb → taskjuggler/RichText/SyntaxRules.rb} +14 -0
  57. data/lib/{TOCEntry.rb → taskjuggler/RichText/TOCEntry.rb} +2 -2
  58. data/lib/{TableOfContents.rb → taskjuggler/RichText/TableOfContents.rb} +2 -2
  59. data/lib/{RuntimeConfig.rb → taskjuggler/RuntimeConfig.rb} +18 -18
  60. data/lib/{Scenario.rb → taskjuggler/Scenario.rb} +1 -1
  61. data/lib/{ScenarioData.rb → taskjuggler/ScenarioData.rb} +2 -3
  62. data/lib/{Scoreboard.rb → taskjuggler/Scoreboard.rb} +4 -4
  63. data/lib/{SheetHandlerBase.rb → taskjuggler/SheetHandlerBase.rb} +3 -3
  64. data/lib/{SheetReceiver.rb → taskjuggler/SheetReceiver.rb} +2 -2
  65. data/lib/{SheetSender.rb → taskjuggler/SheetSender.rb} +5 -5
  66. data/lib/{Shift.rb → taskjuggler/Shift.rb} +2 -3
  67. data/lib/{ShiftAssignments.rb → taskjuggler/ShiftAssignments.rb} +1 -1
  68. data/lib/{ShiftScenario.rb → taskjuggler/ShiftScenario.rb} +1 -1
  69. data/lib/{SimpleQueryExpander.rb → taskjuggler/SimpleQueryExpander.rb} +0 -0
  70. data/lib/{StatusSheetReceiver.rb → taskjuggler/StatusSheetReceiver.rb} +1 -1
  71. data/lib/{StatusSheetSender.rb → taskjuggler/StatusSheetSender.rb} +1 -1
  72. data/lib/{SyntaxReference.rb → taskjuggler/SyntaxReference.rb} +4 -4
  73. data/lib/{TableColumnDefinition.rb → taskjuggler/TableColumnDefinition.rb} +0 -0
  74. data/lib/{Task.rb → taskjuggler/Task.rb} +2 -2
  75. data/lib/{TaskDependency.rb → taskjuggler/TaskDependency.rb} +8 -0
  76. data/lib/{TaskJuggler.rb → taskjuggler/TaskJuggler.rb} +6 -4
  77. data/lib/{TaskScenario.rb → taskjuggler/TaskScenario.rb} +211 -150
  78. data/lib/taskjuggler/TernarySearchTree.rb +203 -0
  79. data/lib/{TextFormatter.rb → taskjuggler/TextFormatter.rb} +1 -1
  80. data/lib/{TextParser.rb → taskjuggler/TextParser.rb} +6 -6
  81. data/lib/{MacroTable.rb → taskjuggler/TextParser/MacroTable.rb} +2 -12
  82. data/lib/{TextParser → taskjuggler/TextParser}/Pattern.rb +5 -2
  83. data/lib/{TextParser → taskjuggler/TextParser}/Rule.rb +1 -1
  84. data/lib/{TextScanner.rb → taskjuggler/TextParser/Scanner.rb} +34 -32
  85. data/lib/{SourceFileInfo.rb → taskjuggler/TextParser/SourceFileInfo.rb} +1 -1
  86. data/lib/{TextParser → taskjuggler/TextParser}/StackElement.rb +0 -2
  87. data/lib/{TextParser → taskjuggler/TextParser}/State.rb +0 -0
  88. data/lib/{TextParser → taskjuggler/TextParser}/TokenDoc.rb +0 -0
  89. data/lib/{TimeSheetReceiver.rb → taskjuggler/TimeSheetReceiver.rb} +1 -1
  90. data/lib/{TimeSheetSender.rb → taskjuggler/TimeSheetSender.rb} +1 -1
  91. data/lib/{TimeSheetSummary.rb → taskjuggler/TimeSheetSummary.rb} +1 -1
  92. data/lib/{TimeSheets.rb → taskjuggler/TimeSheets.rb} +23 -16
  93. data/lib/{Tj3AppBase.rb → taskjuggler/Tj3AppBase.rb} +19 -12
  94. data/lib/{Tj3Config.rb → taskjuggler/Tj3Config.rb} +3 -3
  95. data/lib/taskjuggler/Tj3Man.rb +78 -0
  96. data/lib/{Tj3SheetAppBase.rb → taskjuggler/Tj3SheetAppBase.rb} +2 -2
  97. data/lib/{TjException.rb → taskjuggler/TjException.rb} +0 -0
  98. data/lib/{TjTime.rb → taskjuggler/TjTime.rb} +279 -234
  99. data/lib/{TjpExample.rb → taskjuggler/TjpExample.rb} +0 -0
  100. data/lib/{TjpSyntaxRules.rb → taskjuggler/TjpSyntaxRules.rb} +253 -95
  101. data/lib/{URLParameter.rb → taskjuggler/URLParameter.rb} +0 -0
  102. data/lib/{UTF8String.rb → taskjuggler/UTF8String.rb} +0 -0
  103. data/lib/{UserManual.rb → taskjuggler/UserManual.rb} +6 -6
  104. data/lib/{VimSyntax.rb → taskjuggler/VimSyntax.rb} +6 -2
  105. data/lib/{WorkingHours.rb → taskjuggler/WorkingHours.rb} +14 -22
  106. data/lib/{XMLDocument.rb → taskjuggler/XMLDocument.rb} +1 -1
  107. data/lib/{XMLElement.rb → taskjuggler/XMLElement.rb} +1 -1
  108. data/lib/taskjuggler/apps/Tj3.rb +134 -0
  109. data/lib/taskjuggler/apps/Tj3Client.rb +467 -0
  110. data/lib/taskjuggler/apps/Tj3Daemon.rb +142 -0
  111. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +56 -0
  112. data/lib/taskjuggler/apps/Tj3SsSender.rb +90 -0
  113. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +59 -0
  114. data/lib/taskjuggler/apps/Tj3TsSender.rb +77 -0
  115. data/lib/taskjuggler/apps/Tj3TsSummary.rb +86 -0
  116. data/lib/{daemon → taskjuggler/daemon}/Daemon.rb +4 -3
  117. data/lib/{daemon → taskjuggler/daemon}/ProcessIntercom.rb +2 -2
  118. data/lib/{daemon → taskjuggler/daemon}/ProjectBroker.rb +5 -5
  119. data/lib/{daemon → taskjuggler/daemon}/ProjectServer.rb +16 -16
  120. data/lib/{daemon → taskjuggler/daemon}/ReportServer.rb +6 -6
  121. data/lib/{daemon → taskjuggler/daemon}/ReportServlet.rb +2 -2
  122. data/lib/{daemon → taskjuggler/daemon}/WebServer.rb +4 -4
  123. data/lib/{daemon → taskjuggler/daemon}/WelcomePage.rb +2 -1
  124. data/lib/{deep_copy.rb → taskjuggler/deep_copy.rb} +0 -0
  125. data/lib/{reports → taskjuggler/reports}/CSVFile.rb +2 -2
  126. data/lib/{reports → taskjuggler/reports}/CollisionDetector.rb +1 -1
  127. data/lib/{reports → taskjuggler/reports}/ColumnTable.rb +1 -1
  128. data/lib/{reports → taskjuggler/reports}/GanttChart.rb +4 -4
  129. data/lib/{reports → taskjuggler/reports}/GanttContainer.rb +1 -1
  130. data/lib/{reports → taskjuggler/reports}/GanttHeader.rb +1 -1
  131. data/lib/{reports → taskjuggler/reports}/GanttHeaderScaleItem.rb +0 -0
  132. data/lib/{reports → taskjuggler/reports}/GanttLine.rb +6 -6
  133. data/lib/{reports → taskjuggler/reports}/GanttLoadStack.rb +1 -1
  134. data/lib/{reports → taskjuggler/reports}/GanttMilestone.rb +1 -1
  135. data/lib/{reports → taskjuggler/reports}/GanttRouter.rb +1 -1
  136. data/lib/{reports → taskjuggler/reports}/GanttTaskBar.rb +1 -1
  137. data/lib/{reports → taskjuggler/reports}/HTMLGraphics.rb +0 -0
  138. data/lib/{reports → taskjuggler/reports}/Navigator.rb +1 -1
  139. data/lib/{reports → taskjuggler/reports}/NikuReport.rb +3 -6
  140. data/lib/{reports → taskjuggler/reports}/Report.rb +19 -14
  141. data/lib/{reports → taskjuggler/reports}/ReportBase.rb +0 -0
  142. data/lib/{reports → taskjuggler/reports}/ReportContext.rb +0 -0
  143. data/lib/{reports → taskjuggler/reports}/ReportTable.rb +2 -2
  144. data/lib/{reports → taskjuggler/reports}/ReportTableCell.rb +0 -0
  145. data/lib/{reports → taskjuggler/reports}/ReportTableColumn.rb +0 -0
  146. data/lib/{reports → taskjuggler/reports}/ReportTableLegend.rb +0 -0
  147. data/lib/{reports → taskjuggler/reports}/ReportTableLine.rb +1 -1
  148. data/lib/{reports → taskjuggler/reports}/ResourceListRE.rb +4 -4
  149. data/lib/{reports → taskjuggler/reports}/StatusSheetReport.rb +1 -1
  150. data/lib/{reports → taskjuggler/reports}/TableReport.rb +8 -7
  151. data/lib/{reports → taskjuggler/reports}/TaskListRE.rb +4 -4
  152. data/lib/{reports → taskjuggler/reports}/TextReport.rb +1 -1
  153. data/lib/{reports → taskjuggler/reports}/TimeSheetReport.rb +1 -1
  154. data/lib/{reports → taskjuggler/reports}/TjpExportRE.rb +87 -29
  155. data/lib/tj3.rb +2 -144
  156. data/lib/tj3client.rb +2 -442
  157. data/lib/tj3d.rb +1 -133
  158. data/lib/tj3man.rb +2 -75
  159. data/lib/tj3ss_receiver.rb +2 -42
  160. data/lib/tj3ss_sender.rb +1 -76
  161. data/lib/tj3ts_receiver.rb +1 -45
  162. data/lib/tj3ts_sender.rb +1 -63
  163. data/lib/tj3ts_summary.rb +1 -72
  164. data/manual/How_To_Contribute +19 -49
  165. data/manual/Installation +65 -6
  166. data/manual/Reporting_Bugs +6 -20
  167. data/manual/TaskJuggler_Internals +8 -1
  168. data/manual/Tutorial +16 -0
  169. data/prj_cfg.rb +2 -3
  170. data/spec/IntervalList_spec.rb +2 -1
  171. data/spec/ProjectBroker_spec.rb +1 -1
  172. data/spec/TernarySearchTree_spec.rb +131 -0
  173. data/spec/TimeSheets_spec.rb +129 -0
  174. data/spec/Tj3Daemon_spec.rb +51 -0
  175. data/spec/Tj3_spec.rb +36 -0
  176. data/spec/support/DaemonControl.rb +78 -0
  177. data/spec/support/StdIoWrapper.rb +43 -0
  178. data/spec/tj3client.log +23 -0
  179. data/tasks/changelog.rake +17 -2
  180. data/tasks/csts.rake +2 -2
  181. data/tasks/manual.rake +9 -5
  182. data/tasks/missing.rake +0 -4
  183. data/tasks/rdoc.rake +2 -2
  184. data/tasks/vim.rake +9 -0
  185. data/test/TestSuite/CSV-Reports/alert.tjp +9 -0
  186. data/test/TestSuite/CSV-Reports/celltext.tjp +1 -0
  187. data/test/TestSuite/CSV-Reports/inputs.tjp +19 -0
  188. data/test/TestSuite/CSV-Reports/project-1.tji +9 -0
  189. data/test/TestSuite/CSV-Reports/refs/alert.csv +15 -0
  190. data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -0
  191. data/test/TestSuite/CSV-Reports/refs/inputs.csv +6 -0
  192. data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +4 -4
  193. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +22 -22
  194. data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -0
  195. data/test/TestSuite/CSV-Reports/refs/sortBy_duration.down.csv +1 -0
  196. data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -0
  197. data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +14 -13
  198. data/test/TestSuite/CSV-Reports/refs/targets.csv +5 -0
  199. data/test/TestSuite/CSV-Reports/refs/taskreport.csv +15 -14
  200. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +33 -32
  201. data/test/TestSuite/CSV-Reports/resourcereport.tjp +1 -0
  202. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +1 -0
  203. data/test/TestSuite/CSV-Reports/sortByTree.tjp +1 -0
  204. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +1 -0
  205. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -0
  206. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +2 -1
  207. data/test/TestSuite/CSV-Reports/targets.tjp +20 -0
  208. data/test/TestSuite/CSV-Reports/taskreport.tjp +2 -1
  209. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +2 -1
  210. data/test/TestSuite/CSV-Reports/weekly.tjp +5 -2
  211. data/test/TestSuite/Export-Reports/export.tji +6 -0
  212. data/test/TestSuite/Export-Reports/refs/Account.tjp +92 -0
  213. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +38 -0
  214. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +124 -0
  215. data/test/TestSuite/Export-Reports/refs/Alternative.tjp +50 -0
  216. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +45 -0
  217. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +18 -0
  218. data/test/TestSuite/Export-Reports/refs/Booking.tjp +48 -0
  219. data/test/TestSuite/Export-Reports/refs/Caption.tjp +65 -0
  220. data/test/TestSuite/Export-Reports/refs/Celltext.tjp +45 -0
  221. data/test/TestSuite/Export-Reports/refs/Comments.tjp +67 -0
  222. data/test/TestSuite/Export-Reports/refs/Complete.tjp +50 -0
  223. data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +41 -0
  224. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +18 -0
  225. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +24 -0
  226. data/test/TestSuite/Export-Reports/refs/DST.tjp +89 -0
  227. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +57 -0
  228. data/test/TestSuite/Export-Reports/refs/Durations.tjp +84 -0
  229. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +58 -0
  230. data/test/TestSuite/Export-Reports/refs/Flags.tjp +51 -0
  231. data/test/TestSuite/Export-Reports/refs/Gap.tjp +38 -0
  232. data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +67 -0
  233. data/test/TestSuite/Export-Reports/refs/Include.tjp +58 -0
  234. data/test/TestSuite/Export-Reports/refs/Journal.tjp +28 -0
  235. data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +283 -0
  236. data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +617 -0
  237. data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +18 -0
  238. data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +57 -0
  239. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +91 -0
  240. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +18 -0
  241. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +18 -0
  242. data/test/TestSuite/Export-Reports/refs/Manager.tjp +121 -0
  243. data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +59 -0
  244. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +27 -0
  245. data/test/TestSuite/Export-Reports/refs/MinMax.tjp +30 -0
  246. data/test/TestSuite/Export-Reports/refs/Niku.tjp +218 -0
  247. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +18 -0
  248. data/test/TestSuite/Export-Reports/refs/Period.tjp +25 -0
  249. data/test/TestSuite/Export-Reports/refs/Persistent.tjp +49 -0
  250. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +46 -0
  251. data/test/TestSuite/Export-Reports/refs/Priority.tjp +141 -0
  252. data/test/TestSuite/Export-Reports/refs/Project.tjp +18 -0
  253. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +36 -0
  254. data/test/TestSuite/Export-Reports/refs/Query.tjp +49 -0
  255. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +79 -0
  256. data/test/TestSuite/Export-Reports/refs/Reports.tjp +130 -0
  257. data/test/TestSuite/Export-Reports/refs/Resource.tjp +59 -0
  258. data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +67 -0
  259. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +90 -0
  260. data/test/TestSuite/Export-Reports/refs/Responsible.tjp +50 -0
  261. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +90 -0
  262. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +25 -0
  263. data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +55 -0
  264. data/test/TestSuite/Export-Reports/refs/Select.tjp +89 -0
  265. data/test/TestSuite/Export-Reports/refs/Shift.tjp +39 -0
  266. data/test/TestSuite/Export-Reports/refs/Simple.tjp +67 -0
  267. data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +95 -0
  268. data/test/TestSuite/Export-Reports/refs/String.tjp +33 -0
  269. data/test/TestSuite/Export-Reports/refs/Supplement.tjp +41 -0
  270. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +49 -0
  271. data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +75 -0
  272. data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +51 -0
  273. data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +81 -0
  274. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +18 -0
  275. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +69 -0
  276. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +1061 -0
  277. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +3 -1
  278. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +5 -3
  279. data/test/TestSuite/Scheduler/Correct/Precedes.tjp +19 -19
  280. data/test/TestSuite/Scheduler/Correct/PriorityInversion.tjp +32 -0
  281. data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +19 -0
  282. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +11 -0
  283. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +14 -14
  284. data/test/TestSuite/Scheduler/Correct/checks.tji +5 -0
  285. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +20 -0
  286. data/test/TestSuite/StatusSheets/boss_mail +1 -1
  287. data/test/TestSuite/StatusSheets/dev2_mail +1 -1
  288. data/test/TestSuite/StatusSheets/run +2 -3
  289. data/test/TestSuite/Syntax/Correct/Account.tjp +1 -0
  290. data/test/TestSuite/Syntax/Correct/AdoptedTasks.tjp +9 -0
  291. data/test/TestSuite/Syntax/Correct/Allocate-1.tjp +3 -1
  292. data/test/TestSuite/Syntax/Correct/Alternative.tjp +3 -1
  293. data/test/TestSuite/Syntax/Correct/AutoID.tjp +3 -1
  294. data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -0
  295. data/test/TestSuite/Syntax/Correct/Caption.tjp +3 -1
  296. data/test/TestSuite/Syntax/Correct/Celltext.tjp +3 -1
  297. data/test/TestSuite/Syntax/Correct/Comments.tjp +3 -1
  298. data/test/TestSuite/Syntax/Correct/Complete.tjp +1 -0
  299. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +2 -1
  300. data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +2 -1
  301. data/test/TestSuite/Syntax/Correct/CustomAttributes.tjp +3 -2
  302. data/test/TestSuite/Syntax/Correct/DST.tjp +11 -0
  303. data/test/TestSuite/Syntax/Correct/Depends1.tjp +6 -4
  304. data/test/TestSuite/Syntax/Correct/Durations.tjp +3 -1
  305. data/test/TestSuite/Syntax/Correct/Efficiency.tjp +4 -2
  306. data/test/TestSuite/Syntax/Correct/Export.tjp +6 -4
  307. data/test/TestSuite/Syntax/Correct/Flags.tjp +3 -1
  308. data/test/TestSuite/Syntax/Correct/Freeze.tjp +2 -2
  309. data/test/TestSuite/Syntax/Correct/Gap.tjp +3 -1
  310. data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +4 -2
  311. data/test/TestSuite/Syntax/Correct/Include.tjp +3 -1
  312. data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -1
  313. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +13 -9
  314. data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +1 -0
  315. data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +3 -1
  316. data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +3 -1
  317. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +3 -1
  318. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +3 -1
  319. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +1 -0
  320. data/test/TestSuite/Syntax/Correct/Manager.tjp +4 -2
  321. data/test/TestSuite/Syntax/Correct/Mandatory.tjp +3 -1
  322. data/test/TestSuite/Syntax/Correct/Milestone.tjp +3 -1
  323. data/test/TestSuite/Syntax/Correct/MinMax.tjp +3 -1
  324. data/test/TestSuite/Syntax/Correct/Niku.tjp +1 -0
  325. data/test/TestSuite/Syntax/Correct/Numberformat.tjp +3 -2
  326. data/test/TestSuite/Syntax/Correct/Period.tjp +1 -0
  327. data/test/TestSuite/Syntax/Correct/Persistent.tjp +3 -1
  328. data/test/TestSuite/Syntax/Correct/Precedes1.tjp +6 -4
  329. data/test/TestSuite/Syntax/Correct/Priority.tjp +4 -2
  330. data/test/TestSuite/Syntax/Correct/Project.tjp +5 -4
  331. data/test/TestSuite/Syntax/Correct/ProjectIDs.tjp +3 -2
  332. data/test/TestSuite/Syntax/Correct/Query.tjp +1 -0
  333. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +3 -1
  334. data/test/TestSuite/Syntax/Correct/Reports.tjp +7 -5
  335. data/test/TestSuite/Syntax/Correct/Resource.tjp +4 -2
  336. data/test/TestSuite/Syntax/Correct/ResourcePrefix.tjp +4 -2
  337. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +3 -1
  338. data/test/TestSuite/Syntax/Correct/Responsible.tjp +3 -1
  339. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +3 -1
  340. data/test/TestSuite/Syntax/Correct/Scenario.tjp +2 -1
  341. data/test/TestSuite/Syntax/Correct/Scheduling.tjp +3 -1
  342. data/test/TestSuite/Syntax/Correct/Select.tjp +3 -1
  343. data/test/TestSuite/Syntax/Correct/Shift.tjp +4 -2
  344. data/test/TestSuite/Syntax/Correct/Simple.tjp +3 -1
  345. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +4 -2
  346. data/test/TestSuite/Syntax/Correct/String.tjp +3 -1
  347. data/test/TestSuite/Syntax/Correct/Supplement.tjp +3 -1
  348. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +3 -2
  349. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +3 -1
  350. data/test/TestSuite/Syntax/Correct/TimeFrame.tjp +3 -1
  351. data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -2
  352. data/test/TestSuite/Syntax/Correct/Vacation.tjp +5 -3
  353. data/test/TestSuite/Syntax/Correct/tutorial.tjp +23 -16
  354. data/test/TestSuite/Syntax/Errors/adopt_common_root.tjp +10 -0
  355. data/test/TestSuite/Syntax/Errors/adopt_duplicate_child.tjp +10 -0
  356. data/test/TestSuite/Syntax/Errors/adopt_duplicate_parent.tjp +10 -0
  357. data/test/TestSuite/{Scheduler/Errors/milestone_duration.tjp → Syntax/Errors/multiple_durations.tjp} +1 -1
  358. data/test/TestSuite/Syntax/Errors/operand_unkn_scen.tjp +6 -4
  359. data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +5 -3
  360. data/test/TestSuite/TimeSheets/dev2_mail1 +1 -1
  361. data/test/TestSuite/TimeSheets/dev2_mail2 +1 -1
  362. data/test/TestSuite/TimeSheets/run +2 -2
  363. data/test/TestSuite/TimeSheets/uu.txt +29 -0
  364. data/test/test_AlgorithmDiff.rb +139 -0
  365. data/test/test_BatchProcessor.rb +2 -1
  366. data/test/test_CSV-Reports.rb +30 -19
  367. data/test/test_CSVFile.rb +2 -1
  368. data/test/test_CollisionDetector.rb +2 -1
  369. data/test/test_Export-Reports.rb +128 -0
  370. data/test/test_Journal.rb +2 -1
  371. data/test/test_Limits.rb +4 -3
  372. data/test/test_LogicalExpression.rb +2 -1
  373. data/test/test_MacroTable.rb +8 -6
  374. data/test/test_Project.rb +2 -1
  375. data/test/test_ProjectFileScanner.rb +4 -3
  376. data/test/test_PropertySet.rb +2 -1
  377. data/test/test_Query.rb +3 -2
  378. data/test/test_RealFormat.rb +2 -1
  379. data/test/test_ReportGenerator.rb +3 -2
  380. data/test/test_RichText.rb +14 -3
  381. data/test/test_Scheduler.rb +2 -1
  382. data/test/test_ShiftAssignments.rb +3 -1
  383. data/test/test_SimpleQueryExpander.rb +3 -2
  384. data/test/test_Syntax.rb +2 -1
  385. data/test/test_TextFormatter.rb +2 -1
  386. data/test/test_TjTime.rb +15 -14
  387. data/test/test_TjpExample.rb +2 -1
  388. data/test/test_URLParameter.rb +2 -1
  389. data/test/test_UTF8String.rb +2 -1
  390. data/test/test_WorkingHours.rb +3 -2
  391. data/test/test_deep_copy.rb +2 -1
  392. metadata +250 -541
  393. data/README +0 -31
  394. data/benchmarks/allocatedSlots.csv +0 -334
  395. data/benchmarks/profile.clt +0 -42974
  396. data/benchmarks/profile.html +0 -61128
  397. data/doc/AppConfig.html +0 -1471
  398. data/doc/Arguments.html +0 -720
  399. data/doc/CHANGELOG.html +0 -1987
  400. data/doc/COPYING.html +0 -879
  401. data/doc/Object.html +0 -1056
  402. data/doc/README.html +0 -565
  403. data/doc/RuntimeConfig.html +0 -804
  404. data/doc/String.html +0 -913
  405. data/doc/TaskJuggler.html +0 -2512
  406. data/doc/TaskJuggler/Account.html +0 -733
  407. data/doc/TaskJuggler/AccountAttribute.html +0 -749
  408. data/doc/TaskJuggler/AccountScenario.html +0 -692
  409. data/doc/TaskJuggler/Allocation.html +0 -943
  410. data/doc/TaskJuggler/AllocationAttribute.html +0 -779
  411. data/doc/TaskJuggler/AttributeBase.html +0 -1308
  412. data/doc/TaskJuggler/AttributeDefinition.html +0 -795
  413. data/doc/TaskJuggler/AttributeOverwrite.html +0 -586
  414. data/doc/TaskJuggler/BatchProcessor.html +0 -1158
  415. data/doc/TaskJuggler/Booking.html +0 -839
  416. data/doc/TaskJuggler/BookingListAttribute.html +0 -749
  417. data/doc/TaskJuggler/BooleanAttribute.html +0 -749
  418. data/doc/TaskJuggler/CSVFile.html +0 -1108
  419. data/doc/TaskJuggler/CellSettingPattern.html +0 -680
  420. data/doc/TaskJuggler/CellSettingPatternList.html +0 -729
  421. data/doc/TaskJuggler/Charge.html +0 -757
  422. data/doc/TaskJuggler/ChargeListAttribute.html +0 -713
  423. data/doc/TaskJuggler/ChargeSet.html +0 -929
  424. data/doc/TaskJuggler/ChargeSetListAttribute.html +0 -758
  425. data/doc/TaskJuggler/CollisionDetector.html +0 -1069
  426. data/doc/TaskJuggler/ColumnListAttribute.html +0 -713
  427. data/doc/TaskJuggler/ColumnTable.html +0 -743
  428. data/doc/TaskJuggler/Daemon.html +0 -798
  429. data/doc/TaskJuggler/DataCache.html +0 -930
  430. data/doc/TaskJuggler/DataCacheEntry.html +0 -717
  431. data/doc/TaskJuggler/DateAttribute.html +0 -717
  432. data/doc/TaskJuggler/DefinitionListAttribute.html +0 -635
  433. data/doc/TaskJuggler/DependencyListAttribute.html +0 -753
  434. data/doc/TaskJuggler/DurationAttribute.html +0 -750
  435. data/doc/TaskJuggler/FileList.html +0 -731
  436. data/doc/TaskJuggler/FileRecord.html +0 -682
  437. data/doc/TaskJuggler/FixnumAttribute.html +0 -671
  438. data/doc/TaskJuggler/FlagListAttribute.html +0 -749
  439. data/doc/TaskJuggler/FloatAttribute.html +0 -713
  440. data/doc/TaskJuggler/FormatListAttribute.html +0 -677
  441. data/doc/TaskJuggler/GanttChart.html +0 -1467
  442. data/doc/TaskJuggler/GanttContainer.html +0 -925
  443. data/doc/TaskJuggler/GanttHeader.html +0 -928
  444. data/doc/TaskJuggler/GanttHeaderScaleItem.html +0 -742
  445. data/doc/TaskJuggler/GanttLine.html +0 -1305
  446. data/doc/TaskJuggler/GanttLoadStack.html +0 -808
  447. data/doc/TaskJuggler/GanttMilestone.html +0 -906
  448. data/doc/TaskJuggler/GanttRouter.html +0 -1118
  449. data/doc/TaskJuggler/GanttTaskBar.html +0 -927
  450. data/doc/TaskJuggler/HTMLDocument.html +0 -761
  451. data/doc/TaskJuggler/HTMLGraphics.html +0 -817
  452. data/doc/TaskJuggler/Interval.html +0 -1056
  453. data/doc/TaskJuggler/IntervalList.html +0 -777
  454. data/doc/TaskJuggler/IntervalListAttribute.html +0 -753
  455. data/doc/TaskJuggler/JobInfo.html +0 -923
  456. data/doc/TaskJuggler/Journal.html +0 -1158
  457. data/doc/TaskJuggler/JournalEntry.html +0 -821
  458. data/doc/TaskJuggler/JournalEntryList.html +0 -1071
  459. data/doc/TaskJuggler/KeywordArray.html +0 -676
  460. data/doc/TaskJuggler/KeywordDocumentation.html +0 -1838
  461. data/doc/TaskJuggler/Limits.html +0 -1016
  462. data/doc/TaskJuggler/Limits/Limit.html +0 -927
  463. data/doc/TaskJuggler/LimitsAttribute.html +0 -714
  464. data/doc/TaskJuggler/ListAttributeBase.html +0 -683
  465. data/doc/TaskJuggler/Log.html +0 -1143
  466. data/doc/TaskJuggler/LogFile.html +0 -960
  467. data/doc/TaskJuggler/LogicalAttribute.html +0 -740
  468. data/doc/TaskJuggler/LogicalExpression.html +0 -781
  469. data/doc/TaskJuggler/LogicalExpressionAttribute.html +0 -671
  470. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +0 -671
  471. data/doc/TaskJuggler/LogicalFlag.html +0 -723
  472. data/doc/TaskJuggler/LogicalFunction.html +0 -1306
  473. data/doc/TaskJuggler/LogicalOperation.html +0 -1124
  474. data/doc/TaskJuggler/Macro.html +0 -688
  475. data/doc/TaskJuggler/MacroTable.html +0 -852
  476. data/doc/TaskJuggler/ManagerResponsibilities.html +0 -716
  477. data/doc/TaskJuggler/ManagerStatusRecord.html +0 -720
  478. data/doc/TaskJuggler/Message.html +0 -817
  479. data/doc/TaskJuggler/MessageHandler.html +0 -1036
  480. data/doc/TaskJuggler/Navigator.html +0 -922
  481. data/doc/TaskJuggler/NavigatorElement.html +0 -974
  482. data/doc/TaskJuggler/NikuProject.html +0 -704
  483. data/doc/TaskJuggler/NikuReport.html +0 -1449
  484. data/doc/TaskJuggler/NikuResource.html +0 -674
  485. data/doc/TaskJuggler/NodeListAttribute.html +0 -635
  486. data/doc/TaskJuggler/PlaceHolderCell.html +0 -728
  487. data/doc/TaskJuggler/ProcessIntercom.html +0 -997
  488. data/doc/TaskJuggler/ProcessIntercomIface.html +0 -753
  489. data/doc/TaskJuggler/Project.html +0 -3333
  490. data/doc/TaskJuggler/ProjectBroker.html +0 -1656
  491. data/doc/TaskJuggler/ProjectBrokerIface.html +0 -831
  492. data/doc/TaskJuggler/ProjectFileParser.html +0 -2033
  493. data/doc/TaskJuggler/ProjectFileScanner.html +0 -1816
  494. data/doc/TaskJuggler/ProjectRecord.html +0 -958
  495. data/doc/TaskJuggler/ProjectServer.html +0 -1229
  496. data/doc/TaskJuggler/ProjectServerIface.html +0 -848
  497. data/doc/TaskJuggler/PropertyAttribute.html +0 -671
  498. data/doc/TaskJuggler/PropertyList.html +0 -1379
  499. data/doc/TaskJuggler/PropertySet.html +0 -1799
  500. data/doc/TaskJuggler/PropertyTreeNode.html +0 -2579
  501. data/doc/TaskJuggler/Query.html +0 -1663
  502. data/doc/TaskJuggler/RTFHandlers.html +0 -644
  503. data/doc/TaskJuggler/RTFNavigator.html +0 -772
  504. data/doc/TaskJuggler/RTFQuery.html +0 -1040
  505. data/doc/TaskJuggler/RTFReport.html +0 -800
  506. data/doc/TaskJuggler/RTFReportLink.html +0 -792
  507. data/doc/TaskJuggler/RTFWithQuerySupport.html +0 -682
  508. data/doc/TaskJuggler/RealFormat.html +0 -785
  509. data/doc/TaskJuggler/RealFormatAttribute.html +0 -635
  510. data/doc/TaskJuggler/ReferenceAttribute.html +0 -824
  511. data/doc/TaskJuggler/Report.html +0 -1477
  512. data/doc/TaskJuggler/ReportBase.html +0 -1246
  513. data/doc/TaskJuggler/ReportContext.html +0 -816
  514. data/doc/TaskJuggler/ReportServer.html +0 -1048
  515. data/doc/TaskJuggler/ReportServerIface.html +0 -882
  516. data/doc/TaskJuggler/ReportServerRecord.html +0 -761
  517. data/doc/TaskJuggler/ReportServlet.html +0 -1024
  518. data/doc/TaskJuggler/ReportTable.html +0 -1159
  519. data/doc/TaskJuggler/ReportTableCell.html +0 -1646
  520. data/doc/TaskJuggler/ReportTableColumn.html +0 -870
  521. data/doc/TaskJuggler/ReportTableLegend.html +0 -1040
  522. data/doc/TaskJuggler/ReportTableLine.html +0 -1047
  523. data/doc/TaskJuggler/Resource.html +0 -972
  524. data/doc/TaskJuggler/ResourceListAttribute.html +0 -810
  525. data/doc/TaskJuggler/ResourceListRE.html +0 -717
  526. data/doc/TaskJuggler/ResourceScenario.html +0 -2599
  527. data/doc/TaskJuggler/RichText.html +0 -859
  528. data/doc/TaskJuggler/RichTextAttribute.html +0 -785
  529. data/doc/TaskJuggler/RichTextDocument.html +0 -1018
  530. data/doc/TaskJuggler/RichTextElement.html +0 -1754
  531. data/doc/TaskJuggler/RichTextFunctionExample.html +0 -779
  532. data/doc/TaskJuggler/RichTextFunctionHandler.html +0 -730
  533. data/doc/TaskJuggler/RichTextImage.html +0 -692
  534. data/doc/TaskJuggler/RichTextIntermediate.html +0 -1265
  535. data/doc/TaskJuggler/RichTextParser.html +0 -847
  536. data/doc/TaskJuggler/RichTextScanner.html +0 -1469
  537. data/doc/TaskJuggler/RichTextSnip.html +0 -980
  538. data/doc/TaskJuggler/RichTextSyntaxRules.html +0 -2018
  539. data/doc/TaskJuggler/Scenario.html +0 -636
  540. data/doc/TaskJuggler/ScenarioData.html +0 -818
  541. data/doc/TaskJuggler/ScenarioListAttribute.html +0 -713
  542. data/doc/TaskJuggler/Scoreboard.html +0 -1181
  543. data/doc/TaskJuggler/SheetHandlerBase.html +0 -1275
  544. data/doc/TaskJuggler/SheetReceiver.html +0 -1368
  545. data/doc/TaskJuggler/SheetSender.html +0 -1134
  546. data/doc/TaskJuggler/Shift.html +0 -731
  547. data/doc/TaskJuggler/ShiftAssignment.html +0 -988
  548. data/doc/TaskJuggler/ShiftAssignments.html +0 -1393
  549. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +0 -714
  550. data/doc/TaskJuggler/ShiftScenario.html +0 -762
  551. data/doc/TaskJuggler/SimpleQueryExpander.html +0 -713
  552. data/doc/TaskJuggler/SortListAttribute.html +0 -671
  553. data/doc/TaskJuggler/SourceFileInfo.html +0 -740
  554. data/doc/TaskJuggler/StatusSheetReceiver.html +0 -658
  555. data/doc/TaskJuggler/StatusSheetReport.html +0 -910
  556. data/doc/TaskJuggler/StatusSheetSender.html +0 -788
  557. data/doc/TaskJuggler/StringAttribute.html +0 -713
  558. data/doc/TaskJuggler/SymbolAttribute.html +0 -671
  559. data/doc/TaskJuggler/SyntaxReference.html +0 -1220
  560. data/doc/TaskJuggler/TOCEntry.html +0 -816
  561. data/doc/TaskJuggler/TSResourceRecord.html +0 -712
  562. data/doc/TaskJuggler/TSTaskRecord.html +0 -724
  563. data/doc/TaskJuggler/TableColumnDefinition.html +0 -928
  564. data/doc/TaskJuggler/TableOfContents.html +0 -770
  565. data/doc/TaskJuggler/TableReport.html +0 -2533
  566. data/doc/TaskJuggler/Task.html +0 -865
  567. data/doc/TaskJuggler/TaskDependency.html +0 -772
  568. data/doc/TaskJuggler/TaskListAttribute.html +0 -753
  569. data/doc/TaskJuggler/TaskListRE.html +0 -716
  570. data/doc/TaskJuggler/TaskScenario.html +0 -4959
  571. data/doc/TaskJuggler/TextFormatter.html +0 -953
  572. data/doc/TaskJuggler/TextParser.html +0 -1773
  573. data/doc/TaskJuggler/TextParser/Pattern.html +0 -1717
  574. data/doc/TaskJuggler/TextParser/Rule.html +0 -1399
  575. data/doc/TaskJuggler/TextParser/StackElement.html +0 -922
  576. data/doc/TaskJuggler/TextParser/State.html +0 -995
  577. data/doc/TaskJuggler/TextParser/StateTransition.html +0 -788
  578. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +0 -691
  579. data/doc/TaskJuggler/TextParser/TokenDoc.html +0 -722
  580. data/doc/TaskJuggler/TextReport.html +0 -901
  581. data/doc/TaskJuggler/TextScanner.html +0 -1482
  582. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +0 -641
  583. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +0 -707
  584. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +0 -704
  585. data/doc/TaskJuggler/TextScanner/StreamHandle.html +0 -1036
  586. data/doc/TaskJuggler/TimeSheet.html +0 -1232
  587. data/doc/TaskJuggler/TimeSheetReceiver.html +0 -655
  588. data/doc/TaskJuggler/TimeSheetRecord.html +0 -1395
  589. data/doc/TaskJuggler/TimeSheetReport.html +0 -991
  590. data/doc/TaskJuggler/TimeSheetSender.html +0 -680
  591. data/doc/TaskJuggler/TimeSheetSummary.html +0 -935
  592. data/doc/TaskJuggler/TimeSheets.html +0 -716
  593. data/doc/TaskJuggler/Tj3AppBase.html +0 -831
  594. data/doc/TaskJuggler/Tj3Client.html +0 -1477
  595. data/doc/TaskJuggler/Tj3Daemon.html +0 -884
  596. data/doc/TaskJuggler/Tj3SheetAppBase.html +0 -738
  597. data/doc/TaskJuggler/Tj3SsReceiver.html +0 -724
  598. data/doc/TaskJuggler/Tj3SsSender.html +0 -757
  599. data/doc/TaskJuggler/Tj3TsReceiver.html +0 -724
  600. data/doc/TaskJuggler/Tj3TsSender.html +0 -744
  601. data/doc/TaskJuggler/Tj3TsSummary.html +0 -752
  602. data/doc/TaskJuggler/TjException.html +0 -672
  603. data/doc/TaskJuggler/TjTime.html +0 -2807
  604. data/doc/TaskJuggler/TjpExample.html +0 -877
  605. data/doc/TaskJuggler/TjpExportRE.html +0 -1598
  606. data/doc/TaskJuggler/TjpSyntaxRules.html +0 -13611
  607. data/doc/TaskJuggler/URLParameter.html +0 -671
  608. data/doc/TaskJuggler/UserManual.html +0 -1188
  609. data/doc/TaskJuggler/VimSyntax.html +0 -1044
  610. data/doc/TaskJuggler/WebServer.html +0 -737
  611. data/doc/TaskJuggler/WelcomePage.html +0 -769
  612. data/doc/TaskJuggler/WorkingHours.html +0 -1207
  613. data/doc/TaskJuggler/WorkingHoursAttribute.html +0 -736
  614. data/doc/TaskJuggler/XMLBlob.html +0 -687
  615. data/doc/TaskJuggler/XMLComment.html +0 -682
  616. data/doc/TaskJuggler/XMLDocument.html +0 -774
  617. data/doc/TaskJuggler/XMLElement.html +0 -942
  618. data/doc/TaskJuggler/XMLNamedText.html +0 -643
  619. data/doc/TaskJuggler/XMLText.html +0 -697
  620. data/doc/index.html +0 -4127
  621. data/doc/lib/AccountScenario_rb.html +0 -69
  622. data/doc/lib/Account_rb.html +0 -71
  623. data/doc/lib/Allocation_rb.html +0 -71
  624. data/doc/lib/AppConfig_rb.html +0 -71
  625. data/doc/lib/AttributeBase_rb.html +0 -69
  626. data/doc/lib/AttributeDefinition_rb.html +0 -67
  627. data/doc/lib/Attributes_rb.html +0 -83
  628. data/doc/lib/BatchProcessor_rb.html +0 -71
  629. data/doc/lib/Booking_rb.html +0 -67
  630. data/doc/lib/ChargeSet_rb.html +0 -69
  631. data/doc/lib/Charge_rb.html +0 -69
  632. data/doc/lib/DataCache_rb.html +0 -71
  633. data/doc/lib/FileList_rb.html +0 -67
  634. data/doc/lib/HTMLDocument_rb.html +0 -69
  635. data/doc/lib/IntervalList_rb.html +0 -69
  636. data/doc/lib/Interval_rb.html +0 -69
  637. data/doc/lib/Journal_rb.html +0 -67
  638. data/doc/lib/KeywordArray_rb.html +0 -67
  639. data/doc/lib/KeywordDocumentation_rb.html +0 -77
  640. data/doc/lib/Limits_rb.html +0 -69
  641. data/doc/lib/LogFile_rb.html +0 -69
  642. data/doc/lib/Log_rb.html +0 -71
  643. data/doc/lib/LogicalExpression_rb.html +0 -73
  644. data/doc/lib/LogicalFunction_rb.html +0 -69
  645. data/doc/lib/LogicalOperation_rb.html +0 -69
  646. data/doc/lib/MacroTable_rb.html +0 -73
  647. data/doc/lib/MessageHandler_rb.html +0 -67
  648. data/doc/lib/ProjectFileParser_rb.html +0 -77
  649. data/doc/lib/ProjectFileScanner_rb.html +0 -69
  650. data/doc/lib/Project_rb.html +0 -113
  651. data/doc/lib/PropertyList_rb.html +0 -67
  652. data/doc/lib/PropertySet_rb.html +0 -71
  653. data/doc/lib/PropertyTreeNode_rb.html +0 -67
  654. data/doc/lib/Query_rb.html +0 -69
  655. data/doc/lib/RTFHandlers_rb.html +0 -75
  656. data/doc/lib/RTFNavigator_rb.html +0 -73
  657. data/doc/lib/RTFQuery_rb.html +0 -73
  658. data/doc/lib/RTFReportLink_rb.html +0 -75
  659. data/doc/lib/RTFReport_rb.html +0 -71
  660. data/doc/lib/RTFWithQuerySupport_rb.html +0 -69
  661. data/doc/lib/RealFormat_rb.html +0 -67
  662. data/doc/lib/ResourceScenario_rb.html +0 -69
  663. data/doc/lib/Resource_rb.html +0 -71
  664. data/doc/lib/RichTextDocument_rb.html +0 -73
  665. data/doc/lib/RichTextElement_rb.html +0 -75
  666. data/doc/lib/RichTextFunctionExample_rb.html +0 -73
  667. data/doc/lib/RichTextFunctionHandler_rb.html +0 -67
  668. data/doc/lib/RichTextParser_rb.html +0 -73
  669. data/doc/lib/RichTextScanner_rb.html +0 -71
  670. data/doc/lib/RichTextSnip_rb.html +0 -71
  671. data/doc/lib/RichTextSyntaxRules_rb.html +0 -67
  672. data/doc/lib/RichText_rb.html +0 -73
  673. data/doc/lib/RuntimeConfig_rb.html +0 -69
  674. data/doc/lib/ScenarioData_rb.html +0 -71
  675. data/doc/lib/Scenario_rb.html +0 -69
  676. data/doc/lib/Scoreboard_rb.html +0 -69
  677. data/doc/lib/SheetHandlerBase_rb.html +0 -75
  678. data/doc/lib/SheetReceiver_rb.html +0 -79
  679. data/doc/lib/SheetSender_rb.html +0 -77
  680. data/doc/lib/ShiftAssignments_rb.html +0 -71
  681. data/doc/lib/ShiftScenario_rb.html +0 -69
  682. data/doc/lib/Shift_rb.html +0 -71
  683. data/doc/lib/SimpleQueryExpander_rb.html +0 -69
  684. data/doc/lib/SourceFileInfo_rb.html +0 -67
  685. data/doc/lib/StatusSheetReceiver_rb.html +0 -69
  686. data/doc/lib/StatusSheetSender_rb.html +0 -69
  687. data/doc/lib/SyntaxReference_rb.html +0 -75
  688. data/doc/lib/TOCEntry_rb.html +0 -71
  689. data/doc/lib/TableColumnDefinition_rb.html +0 -67
  690. data/doc/lib/TableOfContents_rb.html +0 -71
  691. data/doc/lib/TaskDependency_rb.html +0 -67
  692. data/doc/lib/TaskJuggler_rb.html +0 -75
  693. data/doc/lib/TaskScenario_rb.html +0 -71
  694. data/doc/lib/Task_rb.html +0 -71
  695. data/doc/lib/TextFormatter_rb.html +0 -69
  696. data/doc/lib/TextParser/Pattern_rb.html +0 -71
  697. data/doc/lib/TextParser/Rule_rb.html +0 -69
  698. data/doc/lib/TextParser/StackElement_rb.html +0 -69
  699. data/doc/lib/TextParser/State_rb.html +0 -67
  700. data/doc/lib/TextParser/TokenDoc_rb.html +0 -67
  701. data/doc/lib/TextParser_rb.html +0 -79
  702. data/doc/lib/TextScanner_rb.html +0 -83
  703. data/doc/lib/TimeSheetReceiver_rb.html +0 -69
  704. data/doc/lib/TimeSheetSender_rb.html +0 -69
  705. data/doc/lib/TimeSheetSummary_rb.html +0 -69
  706. data/doc/lib/TimeSheets_rb.html +0 -67
  707. data/doc/lib/Tj3AppBase_rb.html +0 -79
  708. data/doc/lib/Tj3Config_rb.html +0 -71
  709. data/doc/lib/Tj3SheetAppBase_rb.html +0 -69
  710. data/doc/lib/TjException_rb.html +0 -67
  711. data/doc/lib/TjTime_rb.html +0 -71
  712. data/doc/lib/TjpExample_rb.html +0 -69
  713. data/doc/lib/TjpSyntaxRules_rb.html +0 -67
  714. data/doc/lib/URLParameter_rb.html +0 -69
  715. data/doc/lib/UTF8String_rb.html +0 -67
  716. data/doc/lib/UserManual_rb.html +0 -79
  717. data/doc/lib/VimSyntax_rb.html +0 -69
  718. data/doc/lib/WorkingHours_rb.html +0 -71
  719. data/doc/lib/XMLDocument_rb.html +0 -69
  720. data/doc/lib/XMLElement_rb.html +0 -69
  721. data/doc/lib/daemon/Daemon_rb.html +0 -69
  722. data/doc/lib/daemon/ProcessIntercom_rb.html +0 -71
  723. data/doc/lib/daemon/ProjectBroker_rb.html +0 -83
  724. data/doc/lib/daemon/ProjectServer_rb.html +0 -85
  725. data/doc/lib/daemon/ReportServer_rb.html +0 -73
  726. data/doc/lib/daemon/ReportServlet_rb.html +0 -69
  727. data/doc/lib/daemon/WebServer_rb.html +0 -81
  728. data/doc/lib/daemon/WelcomePage_rb.html +0 -71
  729. data/doc/lib/deep_copy_rb.html +0 -67
  730. data/doc/lib/exchangebug_rb.html +0 -69
  731. data/doc/lib/reports/CSVFile_rb.html +0 -69
  732. data/doc/lib/reports/CollisionDetector_rb.html +0 -69
  733. data/doc/lib/reports/ColumnTable_rb.html +0 -69
  734. data/doc/lib/reports/GanttChart_rb.html +0 -75
  735. data/doc/lib/reports/GanttContainer_rb.html +0 -69
  736. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +0 -67
  737. data/doc/lib/reports/GanttHeader_rb.html +0 -69
  738. data/doc/lib/reports/GanttLine_rb.html +0 -79
  739. data/doc/lib/reports/GanttLoadStack_rb.html +0 -69
  740. data/doc/lib/reports/GanttMilestone_rb.html +0 -69
  741. data/doc/lib/reports/GanttRouter_rb.html +0 -69
  742. data/doc/lib/reports/GanttTaskBar_rb.html +0 -69
  743. data/doc/lib/reports/HTMLGraphics_rb.html +0 -67
  744. data/doc/lib/reports/Navigator_rb.html +0 -69
  745. data/doc/lib/reports/NikuReport_rb.html +0 -71
  746. data/doc/lib/reports/ReportBase_rb.html +0 -67
  747. data/doc/lib/reports/ReportContext_rb.html +0 -67
  748. data/doc/lib/reports/ReportTableCell_rb.html +0 -67
  749. data/doc/lib/reports/ReportTableColumn_rb.html +0 -67
  750. data/doc/lib/reports/ReportTableLegend_rb.html +0 -67
  751. data/doc/lib/reports/ReportTableLine_rb.html +0 -69
  752. data/doc/lib/reports/ReportTable_rb.html +0 -71
  753. data/doc/lib/reports/Report_rb.html +0 -93
  754. data/doc/lib/reports/ResourceListRE_rb.html +0 -75
  755. data/doc/lib/reports/StatusSheetReport_rb.html +0 -69
  756. data/doc/lib/reports/TableReport_rb.html +0 -77
  757. data/doc/lib/reports/TaskListRE_rb.html +0 -75
  758. data/doc/lib/reports/TextReport_rb.html +0 -69
  759. data/doc/lib/reports/TimeSheetReport_rb.html +0 -69
  760. data/doc/lib/reports/TjpExportRE_rb.html +0 -69
  761. data/doc/lib/ruby-signal-bug_rb.html +0 -69
  762. data/doc/lib/test_rb.html +0 -73
  763. data/doc/lib/tj3_rb.html +0 -75
  764. data/doc/lib/tj3client_rb.html +0 -75
  765. data/doc/lib/tj3d_rb.html +0 -75
  766. data/doc/lib/tj3man_rb.html +0 -75
  767. data/doc/lib/tj3ss_receiver_rb.html +0 -71
  768. data/doc/lib/tj3ss_sender_rb.html +0 -71
  769. data/doc/lib/tj3ts_receiver_rb.html +0 -71
  770. data/doc/lib/tj3ts_sender_rb.html +0 -71
  771. data/doc/lib/tj3ts_summary_rb.html +0 -71
  772. data/doc/rdoc.css +0 -706
  773. data/lib/test.rb +0 -19
  774. data/setup.rb +0 -1585
  775. data/test/TestSuite/CSV-Reports/genrefs +0 -6
  776. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -2922
  777. data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
  778. data/test/TestSuite/Scheduler/Correct/Container.html +0 -513
  779. data/test/TestSuite/Scheduler/Correct/Precedes.html +0 -834
  780. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -429
  781. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  782. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
  783. data/test/TestSuite/Scheduler/Errors/task_underspecified_2.tjp +0 -8
  784. data/test/TestSuite/Syntax/Correct/ReleasePlan.html +0 -160
  785. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
  786. data/test/TestSuite/Syntax/Correct/ResourceRoot.html +0 -108
  787. data/test/TestSuite/Syntax/Correct/niku.html +0 -67
@@ -11,11 +11,11 @@
11
11
  # published by the Free Software Foundation.
12
12
  #
13
13
 
14
- require 'TextParser'
15
- require 'ProjectFileScanner'
16
- require 'TjpSyntaxRules'
17
- require 'RichText'
18
- require 'RTFHandlers'
14
+ require 'taskjuggler/TextParser'
15
+ require 'taskjuggler/ProjectFileScanner'
16
+ require 'taskjuggler/TjpSyntaxRules'
17
+ require 'taskjuggler/RichText'
18
+ require 'taskjuggler/RichText/RTFHandlers'
19
19
 
20
20
  class TaskJuggler
21
21
 
@@ -220,9 +220,8 @@ class TaskJuggler
220
220
  rText.messageHandler.messages.each do |msg|
221
221
  # Map the SourceFileInfo of the RichText back to the original
222
222
  # location in the input file.
223
- sfi = SourceFileInfo.new(sfi.fileName,
224
- sfi.lineNo + msg.sourceFileInfo.lineNo - 1,
225
- 0)
223
+ sfi = TextParser::SourceFileInfo.new(
224
+ sfi.fileName, sfi.lineNo + msg.sourceFileInfo.lineNo - 1, 0)
226
225
  # Then replay the error message.
227
226
  @messageHandler.addMessage(msg.type, msg.id, msg.message, sfi,
228
227
  msg.line)
@@ -254,7 +253,6 @@ class TaskJuggler
254
253
  @property
255
254
  end
256
255
 
257
-
258
256
  # If the @limitResources list is not empty, we have to create a Limits
259
257
  # object for each Resource. Otherwise, one Limits object is enough.
260
258
  def setLimit(name, value, interval)
@@ -267,6 +265,24 @@ class TaskJuggler
267
265
  end
268
266
  end
269
267
 
268
+ # Set the _attribute_ to _value_ and reset all other duration attributes.
269
+ def setDurationAttribute(attribute, value = true)
270
+ checkContainer(attribute)
271
+ { 'milestone' => false, 'duration' => 0,
272
+ 'length' => 0, 'effort' => 0 }.each do |attr, val|
273
+ if attribute == attr
274
+ @property[attr, @scenarioIdx] = value
275
+ else
276
+ if @property.getAttr(attr, @scenarioIdx).provided
277
+ error('multiple_durations',
278
+ "This duration criteria is overwriting a previously " +
279
+ "provided criteria (duration, effort, length or milestone).")
280
+ end
281
+ @property[attr, @scenarioIdx] = val
282
+ end
283
+ end
284
+ end
285
+
270
286
  # The following functions are mostly conveniance functions to simplify the
271
287
  # syntax tree definition. The *Rule functions may only be used in _rule
272
288
  # functions. And only one function call per _rule function is allowed.
@@ -11,13 +11,13 @@
11
11
  # published by the Free Software Foundation.
12
12
  #
13
13
 
14
- require 'TextScanner'
14
+ require 'taskjuggler/TextParser/Scanner'
15
15
 
16
16
  class TaskJuggler
17
17
 
18
- # This class specializes the TextScanner class to detect the tokens of the
19
- # TJP syntax.
20
- class ProjectFileScanner < TextScanner
18
+ # This class specializes the TextParser::Scanner class to detect the tokens
19
+ # of the TJP syntax.
20
+ class ProjectFileScanner < TextParser::Scanner
21
21
 
22
22
  def initialize(masterFile, messageHandler)
23
23
  tokenPatterns = [
@@ -146,7 +146,7 @@ class TaskJuggler
146
146
  [ :LITERAL, /./ ]
147
147
  ]
148
148
 
149
- super(masterFile, messageHandler, tokenPatterns, :tjp)
149
+ super(masterFile, messageHandler, Log, tokenPatterns, :tjp)
150
150
  end
151
151
 
152
152
  private
@@ -11,9 +11,8 @@
11
11
  # published by the Free Software Foundation.
12
12
  #
13
13
 
14
-
15
- require 'AttributeDefinition'
16
- require 'PropertyTreeNode'
14
+ require 'taskjuggler/AttributeDefinition'
15
+ require 'taskjuggler/PropertyTreeNode'
17
16
 
18
17
  class TaskJuggler
19
18
 
@@ -78,7 +77,7 @@ class TaskJuggler
78
77
 
79
78
  # Iterate over all attribute definitions.
80
79
  def eachAttributeDefinition
81
- @attributeDefinitions.each do |key, value|
80
+ @attributeDefinitions.sort.each do |key, value|
82
81
  yield(value)
83
82
  end
84
83
  end
@@ -28,7 +28,7 @@ class TaskJuggler
28
28
  class PropertyTreeNode
29
29
 
30
30
  attr_reader :propertySet, :id, :parent, :project, :sequenceNo,
31
- :children
31
+ :children, :adoptees
32
32
  attr_accessor :name, :sourceFileInfo
33
33
  attr_reader :data
34
34
 
@@ -72,12 +72,18 @@ class TaskJuggler
72
72
 
73
73
  @parent = parent
74
74
  @sequenceNo = @propertySet.items + 1
75
- @children = Array.new
75
+ # This is a list of the real sub nodes of this PropertyTreeNode.
76
+ @children = []
77
+ # This is a list of the adopted sub nodes of this PropertyTreeNode.
78
+ @adoptees = []
76
79
  # In case we have a parent object, we register this object as child of
77
80
  # the parent.
78
81
  if (@parent)
79
82
  @parent.addChild(self)
80
83
  end
84
+ # This is a list of the PropertyTreeNode objects that have adopted this
85
+ # node.
86
+ @stepParents = []
81
87
 
82
88
  @attributes = Hash.new
83
89
  @scenarioAttributes = Array.new(@project.scenarioCount)
@@ -94,6 +100,61 @@ class TaskJuggler
94
100
  self
95
101
  end
96
102
 
103
+ # Adopt _property_ as a step child. Also register the new relationship
104
+ # with the child.
105
+ def adopt(property)
106
+ return if @adoptees.include?(property)
107
+
108
+ # The adopted node and the adopting node must not have any common
109
+ # ancestors.
110
+ if root == property.root
111
+ error('adopt_common_root',
112
+ "The adoptee #{property.fullId} and the parent #{fullId} " +
113
+ "may not share common ancestors.")
114
+ end
115
+
116
+ # The adopted trees for this node must not overlap.
117
+ @adoptees.each do |adoptee|
118
+ # Check if the to be adopted node is an ancestor of an already adopted
119
+ # node.
120
+ if adoptee.ancestors.include?(property)
121
+ error('adopt_duplicate_child',
122
+ "The child #{adoptee.fullId} of #{property.fullId} " +
123
+ "has already been adopted by #{fullId}.")
124
+ end
125
+ # Check if the already adopted nodes are an ancestor of the to be
126
+ # adopted node.
127
+ if property.ancestors.include?(adoptee)
128
+ error('adopt_duplicate_parent',
129
+ "The parent #{adoptee.fullId} of #{property.fullId} " +
130
+ "has already been adopted by #{fullId}.")
131
+ end
132
+ end
133
+
134
+ @adoptees << property
135
+ property.getAdopted(self)
136
+ end
137
+
138
+ # Get adopted by _property_. Also register the new relationship with the
139
+ # step parent. This method is for internal use only. Other classes should
140
+ # alway use PropertyTreeNode::adopt().
141
+ def getAdopted(property) # :nodoc:
142
+ return if @stepParents.include?(property)
143
+
144
+ @stepParents << property
145
+ property.adopt(self)
146
+ end
147
+
148
+ # Return a list of all children including adopted kids.
149
+ def kids
150
+ @children + @adoptees
151
+ end
152
+
153
+ # Return a list of all parents including step parents.
154
+ def parents
155
+ (@parent ? [ @parent ] : []) + @stepParents
156
+ end
157
+
97
158
  # This method creates a shallow copy of all attributes and returns them as
98
159
  # an Array that can be used with restoreAttributes().
99
160
  def backupAttributes
@@ -270,12 +331,22 @@ class TaskJuggler
270
331
 
271
332
  # Return true if the node is a leaf node (has no children).
272
333
  def leaf?
273
- @children.empty?
334
+ @children.empty? && @adoptees.empty?
274
335
  end
275
336
 
276
337
  # Return true if the node has children.
277
338
  def container?
278
- !@children.empty?
339
+ !@children.empty? || !@adoptees.empty?
340
+ end
341
+
342
+ # Return a list with all parent nodes of this node.
343
+ def ancestors
344
+ nodes = []
345
+ n = self
346
+ while n.parent
347
+ nodes << (n = n.parent)
348
+ end
349
+ nodes
279
350
  end
280
351
 
281
352
  # Return the top-level node for this node.
@@ -379,19 +450,26 @@ class TaskJuggler
379
450
  if AttributeBase.mode == 0
380
451
  # If we get values in 'provided' mode, we copy them immedidately to
381
452
  # all derived scenarios.
453
+ overwrite = false
382
454
  @project.scenario(scenario).all.each do |sc|
383
455
  scenarioIdx = @project.scenarioIdx(sc)
384
- overwrite = @scenarioAttributes[scenarioIdx][attributeId].provided
456
+
457
+ if @scenarioAttributes[scenarioIdx][attributeId].provided
458
+ overwrite = true
459
+ end
460
+
385
461
  if scenarioIdx == scenario
386
462
  @scenarioAttributes[scenarioIdx][attributeId].set(value)
387
463
  else
388
464
  @scenarioAttributes[scenarioIdx][attributeId].inherit(value)
389
465
  end
390
- if overwrite
391
- raise AttributeOverwrite,
392
- "Overwriting a previously provided value for attribute " +
393
- "#{attributeId}"
394
- end
466
+ end
467
+ # We only raise the overwrite error after all scenarios have been
468
+ # set. For some attributes the overwrite is actually allowed.
469
+ if overwrite
470
+ raise AttributeOverwrite,
471
+ "Overwriting a previously provided value for attribute " +
472
+ "#{attributeId}"
395
473
  end
396
474
  else
397
475
  @scenarioAttributes[scenario][attributeId].set(value)
@@ -449,11 +527,66 @@ class TaskJuggler
449
527
  end
450
528
  end
451
529
 
530
+ def checkFailsAndWarnings
531
+ if @attributes['fail'] || @attributes['warn']
532
+ propertyType = case self
533
+ when Task
534
+ 'task'
535
+ when Resource
536
+ 'resource'
537
+ else
538
+ 'unknown'
539
+ end
540
+ queryAttrs = { 'project' => @project,
541
+ 'property' => self,
542
+ 'scopeProperty' => nil,
543
+ 'start' => @project['start'],
544
+ 'end' => @project['end'],
545
+ 'loadUnit' => :days,
546
+ 'numberFormat' => @project['numberFormat'],
547
+ 'timeFormat' => @project['timeFormat'],
548
+ 'currencyFormat' => @project['currencyFormat'] }
549
+ query = Query.new(queryAttrs)
550
+ if @attributes['fail']
551
+ @attributes['fail'].get.each do |expr|
552
+ if expr.eval(query)
553
+ error("#{propertyType}_fail_check",
554
+ "User defined check failed for #{propertyType} " +
555
+ "#{fullId} \n" +
556
+ "Condition: #{expr.to_s}\n" +
557
+ "Result: #{expr.to_s(query)}")
558
+ end
559
+ end
560
+ end
561
+ if @attributes['warn']
562
+ @attributes['warn'].get.each do |expr|
563
+ if expr.eval(query)
564
+ warning("#{propertyType}_warn_check",
565
+ "User defined warning triggered for #{propertyType} " +
566
+ "#{fullId} \n" +
567
+ "Condition: #{expr.to_s}\n" +
568
+ "Result: #{expr.to_s(query)}")
569
+ end
570
+ end
571
+ end
572
+ end
573
+ end
574
+
452
575
  def query_alert(query)
453
576
  journal = @project['journal']
454
577
  query.sortable = query.numerical = alert =
455
578
  journal.alertLevel(query.end, self)
456
- query.string = @project.alertLevelName(alert)
579
+ query.string = colorName = @project.alertLevelName(alert)
580
+ rText = "<fcol:#{colorName.downcase}>#{colorName}</fcol>"
581
+ unless (rti = RichText.new(rText, RTFHandlers.create(@project),
582
+ @project.messageHandler).
583
+ generateIntermediateFormat)
584
+ @project.messageHandler.warning('ptn_journal',
585
+ "Syntax error in journal message")
586
+ return nil
587
+ end
588
+ rti.blockMode = false
589
+ query.rti = rti
457
590
  end
458
591
 
459
592
  def query_alertmessages(query)
@@ -539,6 +672,19 @@ class TaskJuggler
539
672
  @data[scenarioIdx].method(func).call(*args)
540
673
  end
541
674
 
675
+ def error(id, text)
676
+ @project.messageHandler.error(id, text, sourceFileInfo, nil, self, nil)
677
+ end
678
+
679
+ def warning(id, text)
680
+ @project.messageHandler.warning(id, text, sourceFileInfo, nil, self, nil)
681
+ end
682
+
683
+ def info(id, text)
684
+ @project.messageHandler.info(id, text, sourceFileInfo, nil, self, nil)
685
+ end
686
+
687
+
542
688
  private
543
689
 
544
690
  # Create a blog-style list of all alert messages that match the Query.
@@ -11,7 +11,7 @@
11
11
  # published by the Free Software Foundation.
12
12
  #
13
13
 
14
- require 'TjException'
14
+ require 'taskjuggler/TjException'
15
15
 
16
16
  class TaskJuggler
17
17
 
@@ -68,7 +68,7 @@ class TaskJuggler
68
68
  def start=(date)
69
69
  if date.is_a?(TjTime)
70
70
  @start = date
71
- @startIdx = @project.dateToIdx(date, true)
71
+ @startIdx = @project.dateToIdx(date)
72
72
  else
73
73
  raise "Unsupported type #{date.class}"
74
74
  end
@@ -86,7 +86,7 @@ class TaskJuggler
86
86
  def end=(date)
87
87
  if date.is_a?(TjTime)
88
88
  @end = date
89
- @endIdx = @project.dateToIdx(date, true)
89
+ @endIdx = @project.dateToIdx(date)
90
90
  else
91
91
  raise "Unsupported type #{date.class}"
92
92
  end
@@ -112,6 +112,10 @@ class TaskJuggler
112
112
  # Resolve property reference from property ID.
113
113
  if @property.nil? && !@propertyId.nil?
114
114
  @property = resolvePropertyId(@propertyType, @propertyId)
115
+ unless @property
116
+ @errorMessage = "Unknown property #{@propertyId} queried"
117
+ return @ok = false
118
+ end
115
119
  end
116
120
 
117
121
  unless @property
@@ -119,8 +123,8 @@ class TaskJuggler
119
123
  supportedAttrs = %w( copyright currency end name now projectid
120
124
  start version )
121
125
  unless supportedAttrs.include?(@attributeId)
122
- raise TjException.new,
123
- "Unsupported project attribute '#{@attributeId}'"
126
+ @errorMessage = "Unsupported project attribute '#{@attributeId}'"
127
+ return @ok = false
124
128
  end
125
129
  attr = @project[@attributeId]
126
130
  if attr.is_a?(TjTime)
@@ -136,6 +140,10 @@ class TaskJuggler
136
140
  if !@scopeProperty.nil? && !@scopePropertyId.nil?
137
141
  @scopeProperty = resolvePropertyId(@scopePropertyType,
138
142
  @scopePropertyId)
143
+ unless @scopeProperty
144
+ @errorMessage = "Unknown scope property #{@scopePropertyId} queried"
145
+ return @ok = false
146
+ end
139
147
  end
140
148
  # Make sure the have a reference to the project.
141
149
  @project = @property.project unless @project
@@ -208,6 +216,8 @@ class TaskJuggler
208
216
 
209
217
  # Return the result as RichTextIntermediate object. The result may be nil.
210
218
  def to_rti
219
+ return @attr.value if @attr.is_a?(RichTextAttribute)
220
+
211
221
  @attr ? @attr.to_rti(self) : @rti
212
222
  end
213
223
 
@@ -219,10 +229,10 @@ class TaskJuggler
219
229
  else
220
230
  @attr.value
221
231
  end
222
- elsif @rti
223
- @rti
224
232
  elsif @numerical
225
233
  @numerical
234
+ elsif @rti
235
+ @rti
226
236
  else
227
237
  @string
228
238
  end
File without changes
@@ -11,9 +11,8 @@
11
11
  # published by the Free Software Foundation.
12
12
  #
13
13
 
14
-
15
- require 'PropertyTreeNode'
16
- require 'ResourceScenario'
14
+ require 'taskjuggler/PropertyTreeNode'
15
+ require 'taskjuggler/ResourceScenario'
17
16
 
18
17
  class TaskJuggler
19
18
 
@@ -65,7 +64,8 @@ class TaskJuggler
65
64
  levelList = listByLevel[level]
66
65
  levelRecord = @project['alertLevels'][level]
67
66
  if query.selfContained
68
- alertName = "<nowiki>[#{levelRecord[1]}]</nowiki>"
67
+ alertName = "<nowiki>[</nowiki><fcol:#{levelRecord[0]}>" +
68
+ "#{levelRecord[1]}</fcol><nowiki>]</nowiki>"
69
69
  else
70
70
  alertName = "[[File:icons/flag-#{levelRecord[0]}.png|" +
71
71
  "alt=[#{levelRecord[1]}]|text-bottom]]"
@@ -164,8 +164,10 @@ class TaskJuggler
164
164
  rText = ''
165
165
 
166
166
  taskList.each do |task|
167
- rText += "=== <nowiki>[#{task.query_alert(query)}] Task: " +
168
- "#{task.name}</nowiki> (#{task.fullId}) ===\n\n"
167
+ rText += "=== <nowiki>[</nowiki>" +
168
+ "#{task.query_alert(query).richText.inputText}" +
169
+ "<nowiki>] Task: #{task.name}</nowiki> " +
170
+ "(#{task.fullId}) ===\n\n"
169
171
  rText += task.query_journalmessages(query).richText.inputText + "\n\n"
170
172
  end
171
173
  end