taskjuggler 0.0.5 → 0.0.6
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.
- data/CHANGELOG +2086 -0
- data/benchmarks/666tasks.tjp +3183 -0
- data/benchmarks/booking.tjp +14 -10
- data/doc/AppConfig.html +95 -73
- data/doc/Arguments.html +22 -2
- data/doc/CHANGELOG.html +2587 -0
- data/doc/COPYING.html +21 -1
- data/doc/Object.html +161 -122
- data/doc/README.html +21 -1
- data/doc/RuntimeConfig.html +26 -6
- data/doc/String.html +38 -18
- data/doc/StringIO.html +579 -0
- data/doc/TaskJuggler.html +251 -143
- data/doc/TaskJuggler/Account.html +26 -6
- data/doc/TaskJuggler/AccountAttribute.html +28 -8
- data/doc/TaskJuggler/AccountScenario.html +24 -4
- data/doc/TaskJuggler/Allocation.html +30 -10
- data/doc/TaskJuggler/AllocationAttribute.html +28 -8
- data/doc/TaskJuggler/AttributeBase.html +46 -26
- data/doc/TaskJuggler/AttributeDefinition.html +22 -2
- data/doc/TaskJuggler/BatchProcessor.html +40 -20
- data/doc/TaskJuggler/Booking.html +26 -6
- data/doc/TaskJuggler/BookingListAttribute.html +28 -8
- data/doc/TaskJuggler/BooleanAttribute.html +28 -8
- data/doc/TaskJuggler/CSVFile.html +308 -146
- data/doc/TaskJuggler/CellSettingPattern.html +22 -2
- data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
- data/doc/TaskJuggler/Charge.html +26 -6
- data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
- data/doc/TaskJuggler/ChargeSet.html +33 -13
- data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
- data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
- data/doc/TaskJuggler/ColumnTable.html +24 -4
- data/doc/TaskJuggler/Daemon.html +26 -6
- data/doc/TaskJuggler/DateAttribute.html +26 -6
- data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
- data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
- data/doc/TaskJuggler/DurationAttribute.html +28 -8
- data/doc/TaskJuggler/FixnumAttribute.html +24 -4
- data/doc/TaskJuggler/FlagListAttribute.html +28 -8
- data/doc/TaskJuggler/FloatAttribute.html +26 -6
- data/doc/TaskJuggler/FormatListAttribute.html +24 -4
- data/doc/TaskJuggler/GanttChart.html +147 -126
- data/doc/TaskJuggler/GanttContainer.html +34 -14
- data/doc/TaskJuggler/GanttHeader.html +28 -8
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
- data/doc/TaskJuggler/GanttLine.html +38 -18
- data/doc/TaskJuggler/GanttLoadStack.html +26 -6
- data/doc/TaskJuggler/GanttMilestone.html +34 -14
- data/doc/TaskJuggler/GanttRouter.html +50 -30
- data/doc/TaskJuggler/GanttTaskBar.html +34 -14
- data/doc/TaskJuggler/HTMLDocument.html +26 -6
- data/doc/TaskJuggler/HTMLGraphics.html +30 -10
- data/doc/TaskJuggler/Interval.html +40 -22
- data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
- data/doc/TaskJuggler/JobInfo.html +24 -4
- data/doc/TaskJuggler/Journal.html +226 -147
- data/doc/TaskJuggler/JournalEntry.html +22 -2
- data/doc/TaskJuggler/JournalEntryList.html +129 -112
- data/doc/TaskJuggler/KeywordArray.html +26 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
- data/doc/TaskJuggler/Limits.html +152 -123
- data/doc/TaskJuggler/Limits/Limit.html +149 -70
- data/doc/TaskJuggler/LimitsAttribute.html +36 -51
- data/doc/TaskJuggler/ListAttributeBase.html +24 -4
- data/doc/TaskJuggler/Log.html +50 -32
- data/doc/TaskJuggler/LogFile.html +37 -17
- data/doc/TaskJuggler/LogicalAttribute.html +53 -33
- data/doc/TaskJuggler/LogicalExpression.html +26 -6
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
- data/doc/TaskJuggler/LogicalFlag.html +42 -22
- data/doc/TaskJuggler/LogicalFunction.html +204 -140
- data/doc/TaskJuggler/LogicalOperation.html +135 -111
- data/doc/TaskJuggler/Macro.html +22 -2
- data/doc/TaskJuggler/MacroParser.html +32 -12
- data/doc/TaskJuggler/MacroTable.html +32 -12
- data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
- data/doc/TaskJuggler/Message.html +24 -4
- data/doc/TaskJuggler/MessageHandler.html +24 -4
- data/doc/TaskJuggler/Navigator.html +104 -71
- data/doc/TaskJuggler/NavigatorElement.html +32 -12
- data/doc/TaskJuggler/NikuProject.html +22 -2
- data/doc/TaskJuggler/NikuReport.html +310 -228
- data/doc/TaskJuggler/NikuResource.html +22 -2
- data/doc/TaskJuggler/NodeListAttribute.html +615 -0
- data/doc/TaskJuggler/OnShiftCache.html +32 -12
- data/doc/TaskJuggler/ProcessIntercom.html +205 -78
- data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
- data/doc/TaskJuggler/Project.html +708 -660
- data/doc/TaskJuggler/ProjectBroker.html +506 -304
- data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
- data/doc/TaskJuggler/ProjectFileParser.html +429 -373
- data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
- data/doc/TaskJuggler/ProjectRecord.html +80 -60
- data/doc/TaskJuggler/ProjectServer.html +312 -237
- data/doc/TaskJuggler/ProjectServerIface.html +101 -43
- data/doc/TaskJuggler/PropertyAttribute.html +32 -12
- data/doc/TaskJuggler/PropertyList.html +166 -145
- data/doc/TaskJuggler/PropertySet.html +254 -224
- data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
- data/doc/TaskJuggler/Query.html +169 -148
- data/doc/TaskJuggler/RTFHandlers.html +622 -0
- data/doc/TaskJuggler/RTFNavigator.html +28 -8
- data/doc/TaskJuggler/RTFQuery.html +40 -20
- data/doc/TaskJuggler/RTFReport.html +62 -25
- data/doc/TaskJuggler/RTFReportLink.html +765 -0
- data/doc/TaskJuggler/RealFormat.html +26 -6
- data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
- data/doc/TaskJuggler/Report.html +402 -251
- data/doc/TaskJuggler/ReportBase.html +162 -137
- data/doc/TaskJuggler/ReportContext.html +112 -29
- data/doc/TaskJuggler/ReportServer.html +89 -64
- data/doc/TaskJuggler/ReportServerIface.html +75 -55
- data/doc/TaskJuggler/ReportServerRecord.html +54 -31
- data/doc/TaskJuggler/ReportServlet.html +980 -0
- data/doc/TaskJuggler/ReportTable.html +41 -21
- data/doc/TaskJuggler/ReportTableCell.html +214 -170
- data/doc/TaskJuggler/ReportTableColumn.html +30 -10
- data/doc/TaskJuggler/ReportTableLegend.html +36 -16
- data/doc/TaskJuggler/ReportTableLine.html +32 -12
- data/doc/TaskJuggler/Resource.html +99 -87
- data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
- data/doc/TaskJuggler/ResourceListRE.html +47 -26
- data/doc/TaskJuggler/ResourceScenario.html +403 -437
- data/doc/TaskJuggler/RichText.html +26 -6
- data/doc/TaskJuggler/RichTextAttribute.html +50 -30
- data/doc/TaskJuggler/RichTextDocument.html +37 -17
- data/doc/TaskJuggler/RichTextElement.html +475 -413
- data/doc/TaskJuggler/RichTextException.html +22 -2
- data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
- data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
- data/doc/TaskJuggler/RichTextImage.html +22 -2
- data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
- data/doc/TaskJuggler/RichTextParser.html +56 -34
- data/doc/TaskJuggler/RichTextScanner.html +82 -61
- data/doc/TaskJuggler/RichTextSnip.html +34 -14
- data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
- data/doc/TaskJuggler/Scenario.html +22 -2
- data/doc/TaskJuggler/ScenarioData.html +30 -46
- data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
- data/doc/TaskJuggler/Scoreboard.html +42 -22
- data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
- data/doc/TaskJuggler/SheetReceiver.html +333 -295
- data/doc/TaskJuggler/SheetSender.html +253 -230
- data/doc/TaskJuggler/Shift.html +26 -6
- data/doc/TaskJuggler/ShiftAssignment.html +89 -73
- data/doc/TaskJuggler/ShiftAssignments.html +226 -234
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
- data/doc/TaskJuggler/ShiftScenario.html +28 -8
- data/doc/TaskJuggler/SortListAttribute.html +34 -14
- data/doc/TaskJuggler/SourceFileInfo.html +24 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
- data/doc/TaskJuggler/StatusSheetReport.html +168 -153
- data/doc/TaskJuggler/StatusSheetSender.html +24 -3
- data/doc/TaskJuggler/StringAttribute.html +38 -18
- data/doc/TaskJuggler/SymbolAttribute.html +32 -12
- data/doc/TaskJuggler/SyntaxReference.html +40 -20
- data/doc/TaskJuggler/TOCEntry.html +26 -6
- data/doc/TaskJuggler/TSResourceRecord.html +22 -2
- data/doc/TaskJuggler/TSTaskRecord.html +22 -2
- data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
- data/doc/TaskJuggler/TableOfContents.html +26 -6
- data/doc/TaskJuggler/TableReport.html +937 -904
- data/doc/TaskJuggler/Task.html +55 -36
- data/doc/TaskJuggler/TaskDependency.html +24 -4
- data/doc/TaskJuggler/TaskListAttribute.html +50 -30
- data/doc/TaskJuggler/TaskListRE.html +27 -7
- data/doc/TaskJuggler/TaskScenario.html +1273 -1153
- data/doc/TaskJuggler/TextFormatter.html +28 -8
- data/doc/TaskJuggler/TextParser.html +585 -338
- data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
- data/doc/TaskJuggler/TextParser/Rule.html +95 -73
- data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
- data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
- data/doc/TaskJuggler/TextReport.html +28 -8
- data/doc/TaskJuggler/TextScanner.html +400 -1404
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
- data/doc/TaskJuggler/TimeSheet.html +48 -28
- data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
- data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
- data/doc/TaskJuggler/TimeSheetReport.html +154 -133
- data/doc/TaskJuggler/TimeSheetSender.html +24 -3
- data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
- data/doc/TaskJuggler/TimeSheets.html +26 -6
- data/doc/TaskJuggler/Tj3AppBase.html +85 -58
- data/doc/TaskJuggler/Tj3Client.html +292 -238
- data/doc/TaskJuggler/Tj3Daemon.html +159 -74
- data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
- data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
- data/doc/TaskJuggler/Tj3SsSender.html +53 -26
- data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
- data/doc/TaskJuggler/Tj3TsSender.html +26 -6
- data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
- data/doc/TaskJuggler/TjException.html +22 -2
- data/doc/TaskJuggler/TjTime.html +216 -160
- data/doc/TaskJuggler/TjpExample.html +34 -14
- data/doc/TaskJuggler/TjpExportRE.html +403 -407
- data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
- data/doc/TaskJuggler/URLParameter.html +649 -0
- data/doc/TaskJuggler/UserManual.html +42 -22
- data/doc/TaskJuggler/WebServer.html +702 -0
- data/doc/TaskJuggler/WorkingHours.html +38 -18
- data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
- data/doc/TaskJuggler/XMLBlob.html +24 -4
- data/doc/TaskJuggler/XMLComment.html +24 -4
- data/doc/TaskJuggler/XMLDocument.html +30 -10
- data/doc/TaskJuggler/XMLElement.html +34 -14
- data/doc/TaskJuggler/XMLNamedText.html +22 -2
- data/doc/TaskJuggler/XMLText.html +24 -4
- data/doc/index.html +1841 -1666
- data/doc/lib/AccountScenario_rb.html +1 -1
- data/doc/lib/Account_rb.html +1 -1
- data/doc/lib/Allocation_rb.html +1 -1
- data/doc/lib/AppConfig_rb.html +2 -2
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +2 -2
- data/doc/lib/BatchProcessor_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/ChargeSet_rb.html +1 -1
- data/doc/lib/Charge_rb.html +1 -1
- data/doc/lib/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +2 -2
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +2 -2
- data/doc/lib/LogFile_rb.html +2 -2
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +2 -2
- data/doc/lib/LogicalOperation_rb.html +2 -2
- data/doc/lib/MacroParser_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -1
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/Message_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +4 -8
- data/doc/lib/ProjectFileScanner_rb.html +67 -0
- data/doc/lib/Project_rb.html +2 -2
- data/doc/lib/PropertyList_rb.html +2 -2
- data/doc/lib/PropertySet_rb.html +2 -2
- data/doc/lib/PropertyTreeNode_rb.html +2 -2
- data/doc/lib/Query_rb.html +2 -2
- data/doc/lib/RTFHandlers_rb.html +73 -0
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +1 -1
- data/doc/lib/RTFReportLink_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +2 -2
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +2 -2
- data/doc/lib/Resource_rb.html +2 -2
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +2 -2
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +2 -2
- data/doc/lib/RichTextScanner_rb.html +2 -2
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
- data/doc/lib/RichText_rb.html +1 -1
- data/doc/lib/RuntimeConfig_rb.html +1 -1
- data/doc/lib/ScenarioData_rb.html +2 -2
- data/doc/lib/Scenario_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/SheetHandlerBase_rb.html +1 -1
- data/doc/lib/SheetReceiver_rb.html +2 -2
- data/doc/lib/SheetSender_rb.html +4 -2
- data/doc/lib/ShiftAssignments_rb.html +4 -2
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +2 -2
- data/doc/lib/StatusSheetSender_rb.html +2 -2
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +2 -2
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +2 -2
- data/doc/lib/TaskScenario_rb.html +2 -2
- data/doc/lib/Task_rb.html +2 -2
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +2 -2
- data/doc/lib/TextParser/StackElement_rb.html +2 -2
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +2 -2
- data/doc/lib/TextScanner_rb.html +6 -2
- data/doc/lib/TimeSheetReceiver_rb.html +2 -2
- data/doc/lib/TimeSheetSender_rb.html +2 -2
- data/doc/lib/TimeSheetSummary_rb.html +2 -2
- data/doc/lib/TimeSheets_rb.html +2 -2
- data/doc/lib/Tj3AppBase_rb.html +2 -2
- data/doc/lib/Tj3Config_rb.html +2 -2
- data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +2 -2
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +2 -2
- data/doc/lib/URLParameter_rb.html +67 -0
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +2 -2
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
- data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
- data/doc/lib/daemon/ProjectServer_rb.html +2 -2
- data/doc/lib/daemon/ReportServer_rb.html +2 -2
- data/doc/lib/daemon/WebServer_rb.html +75 -0
- data/doc/lib/deep_copy_rb.html +2 -2
- data/doc/lib/reports/CSVFile_rb.html +2 -2
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +2 -2
- data/doc/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/reports/GanttLine_rb.html +1 -1
- data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/reports/Navigator_rb.html +2 -2
- data/doc/lib/reports/NikuReport_rb.html +2 -2
- data/doc/lib/reports/ReportBase_rb.html +2 -2
- data/doc/lib/reports/ReportContext_rb.html +2 -2
- data/doc/lib/reports/ReportTableCell_rb.html +2 -2
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +2 -2
- data/doc/lib/reports/Report_rb.html +2 -2
- data/doc/lib/reports/ResourceListRE_rb.html +2 -2
- data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
- data/doc/lib/reports/TableReport_rb.html +2 -2
- data/doc/lib/reports/TaskListRE_rb.html +2 -2
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
- data/doc/lib/reports/TjpExportRE_rb.html +2 -2
- data/doc/lib/ruby-signal-bug_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +2 -2
- data/doc/lib/tj3client_rb.html +2 -2
- data/doc/lib/tj3d_rb.html +2 -2
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +2 -2
- data/doc/lib/tj3ts_receiver_rb.html +2 -2
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/doc/rdoc.css +9 -4
- data/examples/tutorial.tjp +17 -15
- data/gem_spec.rb +3 -0
- data/lib/AppConfig.rb +3 -1
- data/lib/Attributes.rb +10 -8
- data/lib/Journal.rb +55 -20
- data/lib/Limits.rb +72 -46
- data/lib/LogFile.rb +3 -3
- data/lib/LogicalFunction.rb +19 -6
- data/lib/LogicalOperation.rb +5 -1
- data/lib/Project.rb +37 -9
- data/lib/ProjectFileParser.rb +25 -22
- data/lib/ProjectFileScanner.rb +365 -0
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +14 -4
- data/lib/PropertyTreeNode.rb +42 -29
- data/lib/Query.rb +3 -1
- data/lib/RTFHandlers.rb +35 -0
- data/lib/RTFReport.rb +23 -6
- data/lib/RTFReportLink.rb +72 -0
- data/lib/Resource.rb +8 -16
- data/lib/ResourceScenario.rb +1 -22
- data/lib/RichTextElement.rb +42 -0
- data/lib/RichTextParser.rb +6 -4
- data/lib/RichTextScanner.rb +5 -5
- data/lib/RichTextSyntaxRules.rb +48 -10
- data/lib/ScenarioData.rb +5 -3
- data/lib/SheetReceiver.rb +24 -6
- data/lib/SheetSender.rb +17 -13
- data/lib/ShiftAssignments.rb +56 -52
- data/lib/StatusSheetReceiver.rb +1 -0
- data/lib/StatusSheetSender.rb +1 -0
- data/lib/TableColumnDefinition.rb +4 -2
- data/lib/Task.rb +8 -9
- data/lib/TaskJuggler.rb +21 -11
- data/lib/TaskScenario.rb +61 -26
- data/lib/TextParser.rb +268 -106
- data/lib/TextParser/Rule.rb +4 -2
- data/lib/TextParser/StackElement.rb +6 -4
- data/lib/TextScanner.rb +283 -700
- data/lib/TimeSheetReceiver.rb +1 -0
- data/lib/TimeSheetSender.rb +1 -0
- data/lib/TimeSheetSummary.rb +51 -26
- data/lib/TimeSheets.rb +1 -1
- data/lib/Tj3AppBase.rb +8 -1
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +5 -0
- data/lib/TjpSyntaxRules.rb +360 -144
- data/lib/URLParameter.rb +30 -0
- data/lib/XMLDocument.rb +2 -2
- data/lib/daemon/ProcessIntercom.rb +50 -9
- data/lib/daemon/ProjectBroker.rb +63 -10
- data/lib/daemon/ProjectServer.rb +47 -16
- data/lib/daemon/ReportServer.rb +9 -4
- data/lib/daemon/WebServer.rb +204 -0
- data/lib/deep_copy.rb +4 -1
- data/lib/reports/CSVFile.rb +150 -66
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/Navigator.rb +18 -5
- data/lib/reports/NikuReport.rb +32 -2
- data/lib/reports/Report.rb +65 -37
- data/lib/reports/ReportBase.rb +14 -9
- data/lib/reports/ReportContext.rb +19 -4
- data/lib/reports/ReportTable.rb +2 -2
- data/lib/reports/ReportTableCell.rb +54 -30
- data/lib/reports/ResourceListRE.rb +4 -3
- data/lib/reports/StatusSheetReport.rb +8 -13
- data/lib/reports/TableReport.rb +47 -32
- data/lib/reports/TaskListRE.rb +3 -3
- data/lib/reports/TimeSheetReport.rb +14 -5
- data/lib/reports/TjpExportRE.rb +14 -19
- data/lib/taskjuggler3.rb +15 -0
- data/lib/tj3client.rb +9 -7
- data/lib/tj3d.rb +38 -10
- data/lib/tj3ss_sender.rb +7 -0
- data/lib/tj3ts_receiver.rb +1 -0
- data/manual/Day_To_Day_Juggling +1 -1
- data/manual/Rich_Text_Attributes +8 -0
- data/manual/TaskJuggler_2x_Migration +7 -0
- data/manual/The_TaskJuggler_Syntax +20 -6
- data/prj_cfg.rb +3 -2
- data/tasks/changelog.rake +36 -0
- data/tasks/csts.rake +2 -3
- data/tasks/gem.rake +10 -0
- data/tasks/missing.rake +0 -17
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
- data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
- data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
- data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
- data/test/TestSuite/StatusSheets/run +3 -2
- data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
- data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +5 -5
- data/test/test_CSVFile.rb +75 -0
- data/test/test_Limits.rb +63 -5
- data/test/test_ProjectFileScanner.rb +163 -0
- data/test/test_ReportGenerator.rb +81 -0
- data/test/test_RichText.rb +21 -3
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +4 -4
- data/test/test_Syntax.rb +1 -1
- data/test/test_URLParameter.rb +30 -0
- metadata +126 -32
- data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
- data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
- data/test/TestSuite/TimeSheets/receiver.log +0 -102
- data/test/TestSuite/TimeSheets/sender.log +0 -794
- data/test/TestSuite/TimeSheets/summary.log +0 -884
- data/test/TestSuite/TimeSheets/timesheets.log +0 -45
- data/test/TestSuite/TimeSheets/tj3d.log +0 -292
- data/test/test_TextScanner.rb +0 -95
|
@@ -69,25 +69,25 @@
|
|
|
69
69
|
<h3 class="section-header">Methods</h3>
|
|
70
70
|
<ul class="link-list">
|
|
71
71
|
|
|
72
|
-
<li><a href="#
|
|
72
|
+
<li><a href="#method-c-new">::new</a></li>
|
|
73
73
|
|
|
74
|
-
<li><a href="#
|
|
74
|
+
<li><a href="#method-i-addToScm">#addToScm</a></li>
|
|
75
75
|
|
|
76
|
-
<li><a href="#
|
|
76
|
+
<li><a href="#method-i-cutOut">#cutOut</a></li>
|
|
77
77
|
|
|
78
|
-
<li><a href="#
|
|
78
|
+
<li><a href="#method-i-error">#error</a></li>
|
|
79
79
|
|
|
80
|
-
<li><a href="#
|
|
80
|
+
<li><a href="#method-i-fixLineBreaks">#fixLineBreaks</a></li>
|
|
81
81
|
|
|
82
|
-
<li><a href="#
|
|
82
|
+
<li><a href="#method-i-info">#info</a></li>
|
|
83
83
|
|
|
84
|
-
<li><a href="#
|
|
84
|
+
<li><a href="#method-i-log">#log</a></li>
|
|
85
85
|
|
|
86
|
-
<li><a href="#
|
|
86
|
+
<li><a href="#method-i-sendEmail">#sendEmail</a></li>
|
|
87
87
|
|
|
88
|
-
<li><a href="#
|
|
88
|
+
<li><a href="#method-i-setWorkingDir">#setWorkingDir</a></li>
|
|
89
89
|
|
|
90
|
-
<li><a href="#
|
|
90
|
+
<li><a href="#method-i-warning">#warning</a></li>
|
|
91
91
|
|
|
92
92
|
</ul>
|
|
93
93
|
</div>
|
|
@@ -104,6 +104,8 @@
|
|
|
104
104
|
<h3 class="section-header">Files</h3>
|
|
105
105
|
<ul>
|
|
106
106
|
|
|
107
|
+
<li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
|
|
108
|
+
|
|
107
109
|
<li class="file"><a href="../COPYING.html">COPYING</a></li>
|
|
108
110
|
|
|
109
111
|
<li class="file"><a href="../README.html">README</a></li>
|
|
@@ -273,6 +275,8 @@
|
|
|
273
275
|
|
|
274
276
|
<li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
|
|
275
277
|
|
|
278
|
+
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
279
|
+
|
|
276
280
|
<li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
|
|
277
281
|
|
|
278
282
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
@@ -287,6 +291,8 @@
|
|
|
287
291
|
|
|
288
292
|
<li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
|
|
289
293
|
|
|
294
|
+
<li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
|
|
295
|
+
|
|
290
296
|
<li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
|
|
291
297
|
|
|
292
298
|
<li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
|
|
@@ -303,12 +309,16 @@
|
|
|
303
309
|
|
|
304
310
|
<li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
|
|
305
311
|
|
|
312
|
+
<li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
|
|
313
|
+
|
|
306
314
|
<li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
|
|
307
315
|
|
|
308
316
|
<li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
|
|
309
317
|
|
|
310
318
|
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
|
|
311
319
|
|
|
320
|
+
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
|
321
|
+
|
|
312
322
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
|
313
323
|
|
|
314
324
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
|
@@ -327,6 +337,8 @@
|
|
|
327
337
|
|
|
328
338
|
<li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
|
|
329
339
|
|
|
340
|
+
<li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
|
|
341
|
+
|
|
330
342
|
<li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
|
|
331
343
|
|
|
332
344
|
<li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
|
|
@@ -455,6 +467,8 @@
|
|
|
455
467
|
|
|
456
468
|
<li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
|
457
469
|
|
|
470
|
+
<li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
|
|
471
|
+
|
|
458
472
|
<li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
|
459
473
|
|
|
460
474
|
<li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
|
|
@@ -499,8 +513,12 @@
|
|
|
499
513
|
|
|
500
514
|
<li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
|
|
501
515
|
|
|
516
|
+
<li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
|
|
517
|
+
|
|
502
518
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
|
503
519
|
|
|
520
|
+
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
521
|
+
|
|
504
522
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
505
523
|
|
|
506
524
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -527,6 +545,8 @@
|
|
|
527
545
|
|
|
528
546
|
<li><a href="../String.html">String</a></li>
|
|
529
547
|
|
|
548
|
+
<li><a href="../StringIO.html">StringIO</a></li>
|
|
549
|
+
|
|
530
550
|
</ul>
|
|
531
551
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
532
552
|
</div>
|
|
@@ -595,7 +615,7 @@
|
|
|
595
615
|
|
|
596
616
|
|
|
597
617
|
<div id="new-method" class="method-detail ">
|
|
598
|
-
<a name="
|
|
618
|
+
<a name="method-c-new"></a>
|
|
599
619
|
|
|
600
620
|
<div class="method-heading">
|
|
601
621
|
|
|
@@ -658,7 +678,7 @@
|
|
|
658
678
|
|
|
659
679
|
|
|
660
680
|
<div id="add-o-cm-method" class="method-detail ">
|
|
661
|
-
<a name="
|
|
681
|
+
<a name="method-i-addToScm"></a>
|
|
662
682
|
|
|
663
683
|
<div class="method-heading">
|
|
664
684
|
|
|
@@ -701,7 +721,7 @@
|
|
|
701
721
|
|
|
702
722
|
|
|
703
723
|
<div id="cut-ut-method" class="method-detail ">
|
|
704
|
-
<a name="
|
|
724
|
+
<a name="method-i-cutOut"></a>
|
|
705
725
|
|
|
706
726
|
<div class="method-heading">
|
|
707
727
|
|
|
@@ -768,7 +788,7 @@ from the beginnin of the line.
|
|
|
768
788
|
|
|
769
789
|
|
|
770
790
|
<div id="error-method" class="method-detail ">
|
|
771
|
-
<a name="
|
|
791
|
+
<a name="method-i-error"></a>
|
|
772
792
|
|
|
773
793
|
<div class="method-heading">
|
|
774
794
|
|
|
@@ -804,7 +824,7 @@ from the beginnin of the line.
|
|
|
804
824
|
|
|
805
825
|
|
|
806
826
|
<div id="fix-ine-reaks-method" class="method-detail ">
|
|
807
|
-
<a name="
|
|
827
|
+
<a name="method-i-fixLineBreaks"></a>
|
|
808
828
|
|
|
809
829
|
<div class="method-heading">
|
|
810
830
|
|
|
@@ -855,7 +875,7 @@ Convert all CR+LF and CR line breaks into LF line breaks.
|
|
|
855
875
|
|
|
856
876
|
|
|
857
877
|
<div id="info-method" class="method-detail ">
|
|
858
|
-
<a name="
|
|
878
|
+
<a name="method-i-info"></a>
|
|
859
879
|
|
|
860
880
|
<div class="method-heading">
|
|
861
881
|
|
|
@@ -890,7 +910,7 @@ Convert all CR+LF and CR line breaks into LF line breaks.
|
|
|
890
910
|
|
|
891
911
|
|
|
892
912
|
<div id="log-method" class="method-detail ">
|
|
893
|
-
<a name="
|
|
913
|
+
<a name="method-i-log"></a>
|
|
894
914
|
|
|
895
915
|
<div class="method-heading">
|
|
896
916
|
|
|
@@ -927,7 +947,7 @@ Convert all CR+LF and CR line breaks into LF line breaks.
|
|
|
927
947
|
|
|
928
948
|
|
|
929
949
|
<div id="send-mail-method" class="method-detail ">
|
|
930
|
-
<a name="
|
|
950
|
+
<a name="method-i-sendEmail"></a>
|
|
931
951
|
|
|
932
952
|
<div class="method-heading">
|
|
933
953
|
|
|
@@ -1015,7 +1035,7 @@ Convert all CR+LF and CR line breaks into LF line breaks.
|
|
|
1015
1035
|
|
|
1016
1036
|
|
|
1017
1037
|
<div id="set-orking-ir-method" class="method-detail ">
|
|
1018
|
-
<a name="
|
|
1038
|
+
<a name="method-i-setWorkingDir"></a>
|
|
1019
1039
|
|
|
1020
1040
|
<div class="method-heading">
|
|
1021
1041
|
|
|
@@ -1058,7 +1078,7 @@ Convert all CR+LF and CR line breaks into LF line breaks.
|
|
|
1058
1078
|
|
|
1059
1079
|
|
|
1060
1080
|
<div id="warning-method" class="method-detail ">
|
|
1061
|
-
<a name="
|
|
1081
|
+
<a name="method-i-warning"></a>
|
|
1062
1082
|
|
|
1063
1083
|
<div class="method-heading">
|
|
1064
1084
|
|
|
@@ -69,31 +69,31 @@
|
|
|
69
69
|
<h3 class="section-header">Methods</h3>
|
|
70
70
|
<ul class="link-list">
|
|
71
71
|
|
|
72
|
-
<li><a href="#
|
|
72
|
+
<li><a href="#method-c-new">::new</a></li>
|
|
73
73
|
|
|
74
|
-
<li><a href="#
|
|
74
|
+
<li><a href="#method-i-checkSheet">#checkSheet</a></li>
|
|
75
75
|
|
|
76
|
-
<li><a href="#
|
|
76
|
+
<li><a href="#method-i-checkSignature">#checkSignature</a></li>
|
|
77
77
|
|
|
78
|
-
<li><a href="#
|
|
78
|
+
<li><a href="#method-i-createDirectories">#createDirectories</a></li>
|
|
79
79
|
|
|
80
|
-
<li><a href="#
|
|
80
|
+
<li><a href="#method-i-error">#error</a></li>
|
|
81
81
|
|
|
82
|
-
<li><a href="#
|
|
82
|
+
<li><a href="#method-i-fatal">#fatal</a></li>
|
|
83
83
|
|
|
84
|
-
<li><a href="#
|
|
84
|
+
<li><a href="#method-i-fileSheet">#fileSheet</a></li>
|
|
85
85
|
|
|
86
|
-
<li><a href="#
|
|
86
|
+
<li><a href="#method-i-generateInclusionFile">#generateInclusionFile</a></li>
|
|
87
87
|
|
|
88
|
-
<li><a href="#
|
|
88
|
+
<li><a href="#method-i-getResourceEmail">#getResourceEmail</a></li>
|
|
89
89
|
|
|
90
|
-
<li><a href="#
|
|
90
|
+
<li><a href="#method-i-getResourceList">#getResourceList</a></li>
|
|
91
91
|
|
|
92
|
-
<li><a href="#
|
|
92
|
+
<li><a href="#method-i-getResourceName">#getResourceName</a></li>
|
|
93
93
|
|
|
94
|
-
<li><a href="#
|
|
94
|
+
<li><a href="#method-i-processEmail">#processEmail</a></li>
|
|
95
95
|
|
|
96
|
-
<li><a href="#
|
|
96
|
+
<li><a href="#method-i-processSheet">#processSheet</a></li>
|
|
97
97
|
|
|
98
98
|
</ul>
|
|
99
99
|
</div>
|
|
@@ -110,6 +110,8 @@
|
|
|
110
110
|
<h3 class="section-header">Files</h3>
|
|
111
111
|
<ul>
|
|
112
112
|
|
|
113
|
+
<li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
|
|
114
|
+
|
|
113
115
|
<li class="file"><a href="../COPYING.html">COPYING</a></li>
|
|
114
116
|
|
|
115
117
|
<li class="file"><a href="../README.html">README</a></li>
|
|
@@ -279,6 +281,8 @@
|
|
|
279
281
|
|
|
280
282
|
<li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
|
|
281
283
|
|
|
284
|
+
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
285
|
+
|
|
282
286
|
<li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
|
|
283
287
|
|
|
284
288
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
@@ -293,6 +297,8 @@
|
|
|
293
297
|
|
|
294
298
|
<li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
|
|
295
299
|
|
|
300
|
+
<li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
|
|
301
|
+
|
|
296
302
|
<li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
|
|
297
303
|
|
|
298
304
|
<li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
|
|
@@ -309,12 +315,16 @@
|
|
|
309
315
|
|
|
310
316
|
<li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
|
|
311
317
|
|
|
318
|
+
<li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
|
|
319
|
+
|
|
312
320
|
<li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
|
|
313
321
|
|
|
314
322
|
<li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
|
|
315
323
|
|
|
316
324
|
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
|
|
317
325
|
|
|
326
|
+
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
|
327
|
+
|
|
318
328
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
|
319
329
|
|
|
320
330
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
|
@@ -333,6 +343,8 @@
|
|
|
333
343
|
|
|
334
344
|
<li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
|
|
335
345
|
|
|
346
|
+
<li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
|
|
347
|
+
|
|
336
348
|
<li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
|
|
337
349
|
|
|
338
350
|
<li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
|
|
@@ -461,6 +473,8 @@
|
|
|
461
473
|
|
|
462
474
|
<li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
|
463
475
|
|
|
476
|
+
<li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
|
|
477
|
+
|
|
464
478
|
<li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
|
465
479
|
|
|
466
480
|
<li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
|
|
@@ -505,8 +519,12 @@
|
|
|
505
519
|
|
|
506
520
|
<li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
|
|
507
521
|
|
|
522
|
+
<li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
|
|
523
|
+
|
|
508
524
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
|
509
525
|
|
|
526
|
+
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
527
|
+
|
|
510
528
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
511
529
|
|
|
512
530
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -533,6 +551,8 @@
|
|
|
533
551
|
|
|
534
552
|
<li><a href="../String.html">String</a></li>
|
|
535
553
|
|
|
554
|
+
<li><a href="../StringIO.html">StringIO</a></li>
|
|
555
|
+
|
|
536
556
|
</ul>
|
|
537
557
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
538
558
|
</div>
|
|
@@ -561,7 +581,7 @@
|
|
|
561
581
|
|
|
562
582
|
|
|
563
583
|
<div id="new-method" class="method-detail ">
|
|
564
|
-
<a name="
|
|
584
|
+
<a name="method-c-new"></a>
|
|
565
585
|
|
|
566
586
|
<div class="method-heading">
|
|
567
587
|
|
|
@@ -600,29 +620,31 @@
|
|
|
600
620
|
39: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-keyword kw">nil</span>
|
|
601
621
|
40: <span class="ruby-comment cmt"># The log file</span>
|
|
602
622
|
41: <span class="ruby-ivar">@logFile</span> = <span class="ruby-keyword kw">nil</span>
|
|
603
|
-
42:
|
|
604
|
-
43: <span class="ruby-
|
|
605
|
-
44:
|
|
606
|
-
45: <span class="ruby-comment cmt"># Regular
|
|
607
|
-
46: <span class="ruby-ivar">@
|
|
608
|
-
47: <span class="ruby-comment cmt">#
|
|
609
|
-
48: <span class="ruby-ivar">@
|
|
610
|
-
49: <span class="ruby-comment cmt"># The
|
|
611
|
-
50: <span class="ruby-ivar">@
|
|
612
|
-
51: <span class="ruby-comment cmt"># The
|
|
613
|
-
52: <span class="ruby-ivar">@
|
|
614
|
-
53: <span class="ruby-comment cmt"># The
|
|
615
|
-
54: <span class="ruby-ivar">@
|
|
616
|
-
55:
|
|
617
|
-
56: <span class="ruby-
|
|
618
|
-
57:
|
|
619
|
-
58: <span class="ruby-comment cmt">#
|
|
620
|
-
59: <span class="ruby-ivar">@
|
|
621
|
-
60: <span class="ruby-comment cmt">#
|
|
622
|
-
61: <span class="ruby-ivar">@
|
|
623
|
-
62: <span class="ruby-comment cmt"># The
|
|
624
|
-
63: <span class="ruby-ivar">@
|
|
625
|
-
64:
|
|
623
|
+
42: <span class="ruby-comment cmt"># The subject of the confirmation email</span>
|
|
624
|
+
43: <span class="ruby-ivar">@emailSubject</span> = <span class="ruby-keyword kw">nil</span>
|
|
625
|
+
44:
|
|
626
|
+
45: <span class="ruby-comment cmt"># Regular expressions to identify a status sheet.</span>
|
|
627
|
+
46: <span class="ruby-ivar">@sheetHeader</span> = <span class="ruby-keyword kw">nil</span>
|
|
628
|
+
47: <span class="ruby-comment cmt"># Regular expression to extract the sheet signature (date).</span>
|
|
629
|
+
48: <span class="ruby-ivar">@signatureFilter</span> = <span class="ruby-keyword kw">nil</span>
|
|
630
|
+
49: <span class="ruby-comment cmt"># The email address of the submitter of the sheet.</span>
|
|
631
|
+
50: <span class="ruby-ivar">@submitter</span> = <span class="ruby-keyword kw">nil</span>
|
|
632
|
+
51: <span class="ruby-comment cmt"># The resource ID of the submitter.</span>
|
|
633
|
+
52: <span class="ruby-ivar">@resourceId</span> = <span class="ruby-keyword kw">nil</span>
|
|
634
|
+
53: <span class="ruby-comment cmt"># The stdout content from tj3client</span>
|
|
635
|
+
54: <span class="ruby-ivar">@report</span> = <span class="ruby-keyword kw">nil</span>
|
|
636
|
+
55: <span class="ruby-comment cmt"># The stderr content from tj3client</span>
|
|
637
|
+
56: <span class="ruby-ivar">@warnings</span> = <span class="ruby-keyword kw">nil</span>
|
|
638
|
+
57:
|
|
639
|
+
58: <span class="ruby-comment cmt"># The extracted sheet text.</span>
|
|
640
|
+
59: <span class="ruby-ivar">@sheet</span> = <span class="ruby-keyword kw">nil</span>
|
|
641
|
+
60: <span class="ruby-comment cmt"># Will indicate whether the sheet was attached or in mail body</span>
|
|
642
|
+
61: <span class="ruby-ivar">@sheetWasAttached</span> = <span class="ruby-keyword kw">true</span>
|
|
643
|
+
62: <span class="ruby-comment cmt"># The end date of the reporting period.</span>
|
|
644
|
+
63: <span class="ruby-ivar">@date</span> = <span class="ruby-keyword kw">nil</span>
|
|
645
|
+
64: <span class="ruby-comment cmt"># The id of the incomming message.</span>
|
|
646
|
+
65: <span class="ruby-ivar">@messageId</span> = <span class="ruby-keyword kw">nil</span>
|
|
647
|
+
66: <span class="ruby-keyword kw">end</span></pre>
|
|
626
648
|
</div>
|
|
627
649
|
|
|
628
650
|
</div>
|
|
@@ -640,7 +662,7 @@
|
|
|
640
662
|
|
|
641
663
|
|
|
642
664
|
<div id="process-mail-method" class="method-detail ">
|
|
643
|
-
<a name="
|
|
665
|
+
<a name="method-i-processEmail"></a>
|
|
644
666
|
|
|
645
667
|
<div class="method-heading">
|
|
646
668
|
|
|
@@ -664,43 +686,52 @@ accessed via tj3client.
|
|
|
664
686
|
<div class="method-source-code"
|
|
665
687
|
id="process-mail-source">
|
|
666
688
|
<pre>
|
|
667
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
73:
|
|
671
|
-
74: <span class="ruby-identifier">createDirectories</span>
|
|
689
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 73</span>
|
|
690
|
+
73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processEmail</span>
|
|
691
|
+
74: <span class="ruby-identifier">setWorkingDir</span>
|
|
672
692
|
75:
|
|
673
|
-
76: <span class="ruby-identifier">
|
|
693
|
+
76: <span class="ruby-identifier">createDirectories</span>
|
|
674
694
|
77:
|
|
675
|
-
78: <span class="ruby-
|
|
676
|
-
79:
|
|
677
|
-
80:
|
|
678
|
-
81: <span class="ruby-
|
|
679
|
-
82:
|
|
680
|
-
83:
|
|
681
|
-
84:
|
|
682
|
-
85:
|
|
683
|
-
86:
|
|
684
|
-
87: <span class="ruby-
|
|
685
|
-
88:
|
|
686
|
-
89: <span class="ruby-
|
|
687
|
-
90:
|
|
688
|
-
91: <span class="ruby-comment cmt">#
|
|
689
|
-
92: <span class="ruby-
|
|
690
|
-
93:
|
|
691
|
-
94:
|
|
692
|
-
95:
|
|
695
|
+
78: <span class="ruby-keyword kw">begin</span>
|
|
696
|
+
79: <span class="ruby-identifier">rawMail</span> = <span class="ruby-identifier">$stdin</span>.<span class="ruby-identifier">read</span>
|
|
697
|
+
80: <span class="ruby-identifier">mail</span> = <span class="ruby-constant">Mail</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rawMail</span>)
|
|
698
|
+
81: <span class="ruby-keyword kw">rescue</span>
|
|
699
|
+
82: <span class="ruby-comment cmt"># Try to extract the mail sender the dirty way so we can at least send</span>
|
|
700
|
+
83: <span class="ruby-comment cmt"># a response to the submitter.</span>
|
|
701
|
+
84: <span class="ruby-identifier">fromLine</span> = <span class="ruby-identifier">rawMail</span>.<span class="ruby-identifier">match</span>(<span class="ruby-value str">'^From: .*'</span>)[<span class="ruby-value">0</span>]
|
|
702
|
+
85: <span class="ruby-ivar">@submitter</span> = <span class="ruby-identifier">fromLine</span>[<span class="ruby-value">6</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fromLine</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>)
|
|
703
|
+
86: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Incoming mail could not be processed: #{$!}"</span>)
|
|
704
|
+
87: <span class="ruby-keyword kw">end</span>
|
|
705
|
+
88:
|
|
706
|
+
89: <span class="ruby-comment cmt"># Who sent this email?</span>
|
|
707
|
+
90: <span class="ruby-ivar">@submitter</span> = <span class="ruby-identifier">mail</span>.<span class="ruby-identifier">from</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-value str">'[]'</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">mail</span>.<span class="ruby-identifier">from</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">:</span> <span class="ruby-identifier">mail</span>.<span class="ruby-identifier">from</span>
|
|
708
|
+
91: <span class="ruby-comment cmt"># Getting the message ID.</span>
|
|
709
|
+
92: <span class="ruby-ivar">@messageId</span> = <span class="ruby-identifier">mail</span>.<span class="ruby-identifier">message_id</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'unknown'</span>
|
|
710
|
+
93: <span class="ruby-ivar">@idDigest</span> = <span class="ruby-constant">Digest</span><span class="ruby-operator">::</span><span class="ruby-constant">MD5</span>.<span class="ruby-identifier">hexdigest</span>(<span class="ruby-ivar">@messageId</span>)
|
|
711
|
+
94: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Processing #{@sheetType} mail from #{@submitter} "</span> <span class="ruby-operator">+</span>
|
|
712
|
+
95: <span class="ruby-node">"with ID #{@messageId} (#{@idDigest})"</span>)
|
|
693
713
|
96:
|
|
694
|
-
97:
|
|
695
|
-
98:
|
|
696
|
-
99:
|
|
697
|
-
100: <span class="ruby-
|
|
698
|
-
101:
|
|
699
|
-
102: <span class="ruby-
|
|
700
|
-
103:
|
|
701
|
-
104:
|
|
702
|
-
105:
|
|
703
|
-
106:
|
|
714
|
+
97: <span class="ruby-comment cmt"># Store the mail in the failedMailsDir in case something goes wrong.</span>
|
|
715
|
+
98: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-node">"#{@failedMailsDir}/#{@idDigest}"</span>, <span class="ruby-value str">'w'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
|
|
716
|
+
99: <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">mail</span>)
|
|
717
|
+
100: <span class="ruby-keyword kw">end</span>
|
|
718
|
+
101:
|
|
719
|
+
102: <span class="ruby-comment cmt"># First we search the attachments and then the body.</span>
|
|
720
|
+
103: <span class="ruby-identifier">mail</span>.<span class="ruby-identifier">attachments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attachment</span><span class="ruby-operator">|</span>
|
|
721
|
+
104: <span class="ruby-comment cmt"># We are looking for an attached file with a .tji extension.</span>
|
|
722
|
+
105: <span class="ruby-identifier">fileName</span> = <span class="ruby-identifier">attachment</span>.<span class="ruby-identifier">filename</span>
|
|
723
|
+
106: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">fileName</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">fileName</span>[<span class="ruby-value">4</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'.tji'</span>
|
|
724
|
+
107:
|
|
725
|
+
108: <span class="ruby-comment cmt"># Further inspect the attachment. If we could process it, we are done.</span>
|
|
726
|
+
109: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">processSheet</span>(<span class="ruby-identifier">attachment</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">decoded</span>)
|
|
727
|
+
110: <span class="ruby-keyword kw">end</span>
|
|
728
|
+
111: <span class="ruby-comment cmt"># None of the attachements worked, so let's try the mail body.</span>
|
|
729
|
+
112: <span class="ruby-ivar">@sheetWasAttached</span> = <span class="ruby-keyword kw">false</span>
|
|
730
|
+
113: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">processSheet</span>(<span class="ruby-identifier">mail</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">decoded</span>)
|
|
731
|
+
114:
|
|
732
|
+
115: <span class="ruby-identifier">error</span>(<span class="ruby-value str">No #{@sheetType} sheet found in email. Please make sure the header syntax iscorrect and contained in a single line that starts at the begining of theline. If you had the #{@sheetType} sheet attached, the file name must have a'.tji' extension to be found.</span>
|
|
733
|
+
116: )
|
|
734
|
+
117: <span class="ruby-keyword kw">end</span></pre>
|
|
704
735
|
</div>
|
|
705
736
|
|
|
706
737
|
</div>
|
|
@@ -718,7 +749,7 @@ accessed via tj3client.
|
|
|
718
749
|
|
|
719
750
|
|
|
720
751
|
<div id="check-heet-method" class="method-detail ">
|
|
721
|
-
<a name="
|
|
752
|
+
<a name="method-i-checkSheet"></a>
|
|
722
753
|
|
|
723
754
|
<div class="method-heading">
|
|
724
755
|
|
|
@@ -737,35 +768,35 @@ accessed via tj3client.
|
|
|
737
768
|
<div class="method-source-code"
|
|
738
769
|
id="check-heet-source">
|
|
739
770
|
<pre>
|
|
740
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
771
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 160</span>
|
|
772
|
+
160: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkSheet</span>(<span class="ruby-identifier">sheet</span>)
|
|
773
|
+
161: <span class="ruby-identifier">err</span> = <span class="ruby-value str">''</span>
|
|
774
|
+
162: <span class="ruby-identifier">status</span> = <span class="ruby-keyword kw">nil</span>
|
|
775
|
+
163: <span class="ruby-keyword kw">begin</span>
|
|
776
|
+
164: <span class="ruby-comment cmt"># Save a copy of the sheet for debugging purposes.</span>
|
|
777
|
+
165: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-node">"#{@failedSheetsDir}/#{@resourceId}-#{@date}.tji"</span>, <span class="ruby-value str">'w'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
|
|
778
|
+
166: <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">sheet</span>)
|
|
779
|
+
167: <span class="ruby-keyword kw">end</span>
|
|
780
|
+
168: <span class="ruby-identifier">command</span> = <span class="ruby-node">"tj3client --silent #{@tj3clientOption} #{@projectId} ."</span>
|
|
781
|
+
169: <span class="ruby-identifier">status</span> = <span class="ruby-constant">Open4</span>.<span class="ruby-identifier">popen4</span>(<span class="ruby-identifier">command</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pid</span>, <span class="ruby-identifier">stdin</span>, <span class="ruby-identifier">stdout</span>, <span class="ruby-identifier">stderr</span><span class="ruby-operator">|</span>
|
|
782
|
+
170: <span class="ruby-comment cmt"># Send the report to the tj3client process via stdin.</span>
|
|
783
|
+
171: <span class="ruby-identifier">stdin</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">sheet</span>)
|
|
784
|
+
172: <span class="ruby-identifier">stdin</span>.<span class="ruby-identifier">close</span>
|
|
785
|
+
173: <span class="ruby-ivar">@report</span> = <span class="ruby-identifier">stdout</span>.<span class="ruby-identifier">read</span>
|
|
786
|
+
174: <span class="ruby-ivar">@warnings</span> = <span class="ruby-identifier">stderr</span>.<span class="ruby-identifier">read</span>
|
|
787
|
+
175: <span class="ruby-keyword kw">end</span>
|
|
788
|
+
176: <span class="ruby-keyword kw">rescue</span>
|
|
789
|
+
177: <span class="ruby-identifier">fatal</span>(<span class="ruby-node">"Cannot check #{@sheetType} sheet: #{$!}"</span>)
|
|
790
|
+
178: <span class="ruby-keyword kw">end</span>
|
|
791
|
+
179: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">status</span>.<span class="ruby-identifier">exitstatus</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
792
|
+
180: <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-node">"#{@failedSheetsDir}/#{@resourceId}-#{@date}.tji"</span>)
|
|
793
|
+
181: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
|
794
|
+
182: <span class="ruby-keyword kw">end</span>
|
|
795
|
+
183:
|
|
796
|
+
184: <span class="ruby-comment cmt"># The exit status was not 0. The stderr output should not be empty and</span>
|
|
797
|
+
185: <span class="ruby-comment cmt"># will contain error and warning messages.</span>
|
|
798
|
+
186: <span class="ruby-identifier">error</span>(<span class="ruby-ivar">@warnings</span>)
|
|
799
|
+
187: <span class="ruby-keyword kw">end</span></pre>
|
|
769
800
|
</div>
|
|
770
801
|
|
|
771
802
|
</div>
|
|
@@ -777,7 +808,7 @@ accessed via tj3client.
|
|
|
777
808
|
|
|
778
809
|
|
|
779
810
|
<div id="check-ignature-method" class="method-detail ">
|
|
780
|
-
<a name="
|
|
811
|
+
<a name="method-i-checkSignature"></a>
|
|
781
812
|
|
|
782
813
|
<div class="method-heading">
|
|
783
814
|
|
|
@@ -796,30 +827,30 @@ accessed via tj3client.
|
|
|
796
827
|
<div class="method-source-code"
|
|
797
828
|
id="check-ignature-source">
|
|
798
829
|
<pre>
|
|
799
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
830
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 265</span>
|
|
831
|
+
265: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkSignature</span>(<span class="ruby-identifier">sheet</span>)
|
|
832
|
+
266: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">matches</span> = <span class="ruby-ivar">@signatureFilter</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">sheet</span>)
|
|
833
|
+
267: <span class="ruby-identifier">interval</span> = <span class="ruby-identifier">matches</span>[<span class="ruby-value">1</span>]
|
|
834
|
+
268: <span class="ruby-keyword kw">else</span>
|
|
835
|
+
269: <span class="ruby-identifier">fatal</span>(<span class="ruby-node">"No #{@sheetType}sheet header found"</span>)
|
|
836
|
+
270: <span class="ruby-keyword kw">end</span>
|
|
837
|
+
271:
|
|
838
|
+
272: <span class="ruby-identifier">acceptedSignatures</span> = []
|
|
839
|
+
273: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">exist?</span>(<span class="ruby-ivar">@signatureFile</span>)
|
|
840
|
+
274: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-ivar">@signatureFile</span>, <span class="ruby-value str">'r'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
|
841
|
+
275: <span class="ruby-identifier">acceptedSignatures</span> = <span class="ruby-identifier">file</span>.<span class="ruby-identifier">readlines</span>
|
|
842
|
+
276: <span class="ruby-keyword kw">end</span>
|
|
843
|
+
277: <span class="ruby-identifier">acceptedSignatures</span>.<span class="ruby-identifier">map!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">chomp</span> }
|
|
844
|
+
278: <span class="ruby-identifier">acceptedSignatures</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">chomp</span>.<span class="ruby-identifier">empty?</span> }
|
|
845
|
+
279: <span class="ruby-keyword kw">else</span>
|
|
846
|
+
280: <span class="ruby-identifier">error</span>(<span class="ruby-node">"#{@signatureFile} does not exist yet."</span>)
|
|
847
|
+
281: <span class="ruby-keyword kw">end</span>
|
|
848
|
+
282:
|
|
849
|
+
283: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">acceptedSignatures</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">interval</span>)
|
|
850
|
+
284: <span class="ruby-identifier">error</span>(<span class="ruby-value str">The reporting period #{interval}was not accepted! Either you have modified the sheet header,you are submitting the sheet too late or too early.</span>
|
|
851
|
+
285: )
|
|
852
|
+
286: <span class="ruby-keyword kw">end</span>
|
|
853
|
+
287: <span class="ruby-keyword kw">end</span></pre>
|
|
823
854
|
</div>
|
|
824
855
|
|
|
825
856
|
</div>
|
|
@@ -831,7 +862,7 @@ accessed via tj3client.
|
|
|
831
862
|
|
|
832
863
|
|
|
833
864
|
<div id="create-irectories-method" class="method-detail ">
|
|
834
|
-
<a name="
|
|
865
|
+
<a name="method-i-createDirectories"></a>
|
|
835
866
|
|
|
836
867
|
<div class="method-heading">
|
|
837
868
|
|
|
@@ -850,15 +881,15 @@ accessed via tj3client.
|
|
|
850
881
|
<div class="method-source-code"
|
|
851
882
|
id="create-irectories-source">
|
|
852
883
|
<pre>
|
|
853
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
884
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 293</span>
|
|
885
|
+
293: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">createDirectories</span>
|
|
886
|
+
294: [ <span class="ruby-ivar">@sheetDir</span>, <span class="ruby-ivar">@failedMailsDir</span>, <span class="ruby-ivar">@failedSheetsDir</span> ].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dir</span><span class="ruby-operator">|</span>
|
|
887
|
+
295: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">dir</span>)
|
|
888
|
+
296: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Creating directory #{dir}"</span>)
|
|
889
|
+
297: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span>(<span class="ruby-identifier">dir</span>)
|
|
890
|
+
298: <span class="ruby-keyword kw">end</span>
|
|
891
|
+
299: <span class="ruby-keyword kw">end</span>
|
|
892
|
+
300: <span class="ruby-keyword kw">end</span></pre>
|
|
862
893
|
</div>
|
|
863
894
|
|
|
864
895
|
</div>
|
|
@@ -870,7 +901,7 @@ accessed via tj3client.
|
|
|
870
901
|
|
|
871
902
|
|
|
872
903
|
<div id="error-method" class="method-detail ">
|
|
873
|
-
<a name="
|
|
904
|
+
<a name="method-i-error"></a>
|
|
874
905
|
|
|
875
906
|
<div class="method-heading">
|
|
876
907
|
|
|
@@ -889,24 +920,24 @@ accessed via tj3client.
|
|
|
889
920
|
<div class="method-source-code"
|
|
890
921
|
id="error-source">
|
|
891
922
|
<pre>
|
|
892
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
923
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 302</span>
|
|
924
|
+
302: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">message</span>)
|
|
925
|
+
303: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">message</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@outputLevel</span> <span class="ruby-operator">>=</span> <span class="ruby-value">1</span>
|
|
926
|
+
304:
|
|
927
|
+
305: <span class="ruby-identifier">log</span>(<span class="ruby-value str">'ERROR'</span>, <span class="ruby-node">"#{message}"</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@logLevel</span> <span class="ruby-operator">>=</span> <span class="ruby-value">1</span>
|
|
928
|
+
306:
|
|
929
|
+
307: <span class="ruby-comment cmt"># Append the submitted sheet for further tries. We may run into encoding</span>
|
|
930
|
+
308: <span class="ruby-comment cmt"># errors here. In this case we send the answer without the incoming time</span>
|
|
931
|
+
309: <span class="ruby-comment cmt"># sheet.</span>
|
|
932
|
+
310: <span class="ruby-keyword kw">begin</span>
|
|
933
|
+
311: <span class="ruby-identifier">message</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@sheet</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@sheet</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@sheetWasAttached</span>
|
|
934
|
+
312: <span class="ruby-keyword kw">rescue</span>
|
|
935
|
+
313: <span class="ruby-keyword kw">end</span>
|
|
936
|
+
314:
|
|
937
|
+
315: <span class="ruby-identifier">sendEmail</span>(<span class="ruby-ivar">@submitter</span>, <span class="ruby-node">"Your #{@sheetType} sheet submission failed!"</span>, <span class="ruby-identifier">message</span>)
|
|
938
|
+
316:
|
|
939
|
+
317: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
|
|
940
|
+
318: <span class="ruby-keyword kw">end</span></pre>
|
|
910
941
|
</div>
|
|
911
942
|
|
|
912
943
|
</div>
|
|
@@ -918,7 +949,7 @@ accessed via tj3client.
|
|
|
918
949
|
|
|
919
950
|
|
|
920
951
|
<div id="fatal-method" class="method-detail ">
|
|
921
|
-
<a name="
|
|
952
|
+
<a name="method-i-fatal"></a>
|
|
922
953
|
|
|
923
954
|
<div class="method-heading">
|
|
924
955
|
|
|
@@ -937,17 +968,17 @@ accessed via tj3client.
|
|
|
937
968
|
<div class="method-source-code"
|
|
938
969
|
id="fatal-source">
|
|
939
970
|
<pre>
|
|
940
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
971
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 320</span>
|
|
972
|
+
320: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fatal</span>(<span class="ruby-identifier">message</span>)
|
|
973
|
+
321: <span class="ruby-identifier">log</span>(<span class="ruby-value str">'FATAL'</span>, <span class="ruby-node">"#{message}"</span>)
|
|
974
|
+
322:
|
|
975
|
+
323: <span class="ruby-comment cmt"># Append the submitted sheet for further tries.</span>
|
|
976
|
+
324: <span class="ruby-identifier">message</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@sheet</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@sheet</span>
|
|
977
|
+
325:
|
|
978
|
+
326: <span class="ruby-identifier">sendEmail</span>(<span class="ruby-ivar">@submitter</span>, <span class="ruby-value str">'Temporary server error'</span>, <span class="ruby-value str">We are sorry! The #{@sheetType} sheet server detected a configurationproblem and is temporarily out of service. The administratorhas been notified and will try to rectify the situation assoon as possible. Please re-submit your #{@sheetType} sheet later!</span>
|
|
979
|
+
327: )
|
|
980
|
+
328: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
|
|
981
|
+
329: <span class="ruby-keyword kw">end</span></pre>
|
|
951
982
|
</div>
|
|
952
983
|
|
|
953
984
|
</div>
|
|
@@ -959,7 +990,7 @@ accessed via tj3client.
|
|
|
959
990
|
|
|
960
991
|
|
|
961
992
|
<div id="file-heet-method" class="method-detail ">
|
|
962
|
-
<a name="
|
|
993
|
+
<a name="method-i-fileSheet"></a>
|
|
963
994
|
|
|
964
995
|
<div class="method-heading">
|
|
965
996
|
|
|
@@ -978,52 +1009,52 @@ accessed via tj3client.
|
|
|
978
1009
|
<div class="method-source-code"
|
|
979
1010
|
id="file-heet-source">
|
|
980
1011
|
<pre>
|
|
981
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1012
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 189</span>
|
|
1013
|
+
189: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fileSheet</span>(<span class="ruby-identifier">sheet</span>)
|
|
1014
|
+
190: <span class="ruby-comment cmt"># Create the appropriate directory structure if it doesn't exist.</span>
|
|
1015
|
+
191: <span class="ruby-identifier">dir</span> = <span class="ruby-node">"#{@sheetDir}/#{@date}"</span>
|
|
1016
|
+
192: <span class="ruby-identifier">fileName</span> = <span class="ruby-node">"#{dir}/#{@resourceId}_#{@date}.tji"</span>
|
|
1017
|
+
193: <span class="ruby-identifier">newDir</span> = <span class="ruby-keyword kw">false</span>
|
|
1018
|
+
194: <span class="ruby-keyword kw">begin</span>
|
|
1019
|
+
195: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">directory?</span>(<span class="ruby-identifier">dir</span>)
|
|
1020
|
+
196: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">mkdir</span>(<span class="ruby-identifier">dir</span>)
|
|
1021
|
+
197: <span class="ruby-identifier">addToScm</span>(<span class="ruby-value str">'Adding new directory'</span>, <span class="ruby-identifier">dir</span>)
|
|
1022
|
+
198: <span class="ruby-identifier">newDir</span> = <span class="ruby-keyword kw">true</span>
|
|
1023
|
+
199: <span class="ruby-keyword kw">end</span>
|
|
1024
|
+
200: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-value str">'w'</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">sheet</span>) }
|
|
1025
|
+
201: <span class="ruby-identifier">addToScm</span>(<span class="ruby-node">"Adding/updating #{fileName}"</span>, <span class="ruby-identifier">fileName</span>)
|
|
1026
|
+
202: <span class="ruby-keyword kw">rescue</span>
|
|
1027
|
+
203: <span class="ruby-identifier">fatal</span>(<span class="ruby-node">"Cannot store #{@sheetType} sheet #{fileName}: #{$!}"</span>)
|
|
1028
|
+
204: <span class="ruby-keyword kw">return</span>
|
|
1029
|
+
205: <span class="ruby-keyword kw">end</span>
|
|
1030
|
+
206:
|
|
1031
|
+
207: <span class="ruby-comment cmt"># Create or update the file that includes all *.tji in the directory.</span>
|
|
1032
|
+
208: <span class="ruby-identifier">generateInclusionFile</span>(<span class="ruby-identifier">dir</span>)
|
|
1033
|
+
209:
|
|
1034
|
+
210: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">newDir</span>
|
|
1035
|
+
211: <span class="ruby-comment cmt"># Add the new directory to the parent all.tji file.</span>
|
|
1036
|
+
212: <span class="ruby-identifier">allFile</span> = <span class="ruby-node">"#{@sheetDir}/all.tji"</span>
|
|
1037
|
+
213: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">allFile</span>, <span class="ruby-value str">'a'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span>
|
|
1038
|
+
214: <span class="ruby-identifier">f</span>.<span class="ruby-identifier">write</span>(<span class="ruby-node">"\ninclude '#{@date}/all.tji' { }"</span>)
|
|
1039
|
+
215: <span class="ruby-keyword kw">end</span>
|
|
1040
|
+
216: <span class="ruby-identifier">addToScm</span>(<span class="ruby-value str">'Adding new directory to all.tji'</span>, <span class="ruby-identifier">allFile</span>)
|
|
1041
|
+
217: <span class="ruby-keyword kw">end</span>
|
|
1042
|
+
218:
|
|
1043
|
+
219: <span class="ruby-identifier">text</span> = <span class="ruby-value str">Report from #{getResourceName} for the period ending #{@date}:</span>
|
|
1044
|
+
220:
|
|
1045
|
+
221: <span class="ruby-comment cmt"># Add warnings if we had any.</span>
|
|
1046
|
+
222: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@warnings</span>.<span class="ruby-identifier">empty?</span>
|
|
1047
|
+
223: <span class="ruby-identifier">text</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">Your report does contain some issues that you may want to fix or address withyour manager or project manager:#{@warnings}</span>
|
|
1048
|
+
224: <span class="ruby-keyword kw">end</span>
|
|
1049
|
+
225:
|
|
1050
|
+
226: <span class="ruby-comment cmt"># Append the pretty printed version of the submitted status sheet.</span>
|
|
1051
|
+
227: <span class="ruby-identifier">text</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@report</span>
|
|
1052
|
+
228:
|
|
1053
|
+
229: <span class="ruby-comment cmt"># Send out the email.</span>
|
|
1054
|
+
230: <span class="ruby-identifier">sendEmail</span>(<span class="ruby-ivar">@submitter</span>, <span class="ruby-identifier">sprintf</span>(<span class="ruby-ivar">@emailSubject</span>, <span class="ruby-identifier">getResourceName</span>, <span class="ruby-ivar">@date</span>), <span class="ruby-identifier">text</span>,
|
|
1055
|
+
231: <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@messageId</span>)
|
|
1056
|
+
232: <span class="ruby-keyword kw">true</span>
|
|
1057
|
+
233: <span class="ruby-keyword kw">end</span></pre>
|
|
1027
1058
|
</div>
|
|
1028
1059
|
|
|
1029
1060
|
</div>
|
|
@@ -1035,7 +1066,7 @@ accessed via tj3client.
|
|
|
1035
1066
|
|
|
1036
1067
|
|
|
1037
1068
|
<div id="generate-nclusion-ile-method" class="method-detail ">
|
|
1038
|
-
<a name="
|
|
1069
|
+
<a name="method-i-generateInclusionFile"></a>
|
|
1039
1070
|
|
|
1040
1071
|
<div class="method-heading">
|
|
1041
1072
|
|
|
@@ -1058,24 +1089,24 @@ this directory as well.
|
|
|
1058
1089
|
<div class="method-source-code"
|
|
1059
1090
|
id="generate-nclusion-ile-source">
|
|
1060
1091
|
<pre>
|
|
1061
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1092
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 247</span>
|
|
1093
|
+
247: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateInclusionFile</span>(<span class="ruby-identifier">dir</span>)
|
|
1094
|
+
248: <span class="ruby-identifier">pwd</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">pwd</span>
|
|
1095
|
+
249: <span class="ruby-keyword kw">begin</span>
|
|
1096
|
+
250: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>(<span class="ruby-identifier">dir</span>)
|
|
1097
|
+
251: <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-value str">'all.tji'</span>, <span class="ruby-value str">'w'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
|
1098
|
+
252: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-value str">'*.tji'</span>).<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">tji</span><span class="ruby-operator">|</span>
|
|
1099
|
+
253: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">puts</span>(<span class="ruby-node">"include '#{tji}' { }"</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">tji</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'all.tji'</span>
|
|
1100
|
+
254: <span class="ruby-keyword kw">end</span>
|
|
1101
|
+
255: <span class="ruby-keyword kw">end</span>
|
|
1102
|
+
256: <span class="ruby-keyword kw">rescue</span>
|
|
1103
|
+
257: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Can't create inclusion file: #{$!}"</span>)
|
|
1104
|
+
258: <span class="ruby-keyword kw">ensure</span>
|
|
1105
|
+
259: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span>(<span class="ruby-identifier">pwd</span>)
|
|
1106
|
+
260: <span class="ruby-keyword kw">end</span>
|
|
1107
|
+
261: <span class="ruby-comment cmt"># Report the change to the SCM handler.</span>
|
|
1108
|
+
262: <span class="ruby-identifier">addToScm</span>(<span class="ruby-value str">'Adding/updating summary include file.'</span>, <span class="ruby-node">"#{dir}/all.tji"</span>)
|
|
1109
|
+
263: <span class="ruby-keyword kw">end</span></pre>
|
|
1079
1110
|
</div>
|
|
1080
1111
|
|
|
1081
1112
|
</div>
|
|
@@ -1087,7 +1118,7 @@ this directory as well.
|
|
|
1087
1118
|
|
|
1088
1119
|
|
|
1089
1120
|
<div id="get-esource-mail-method" class="method-detail ">
|
|
1090
|
-
<a name="
|
|
1121
|
+
<a name="method-i-getResourceEmail"></a>
|
|
1091
1122
|
|
|
1092
1123
|
<div class="method-heading">
|
|
1093
1124
|
|
|
@@ -1106,15 +1137,15 @@ this directory as well.
|
|
|
1106
1137
|
<div class="method-source-code"
|
|
1107
1138
|
id="get-esource-mail-source">
|
|
1108
1139
|
<pre>
|
|
1109
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1140
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 353</span>
|
|
1141
|
+
353: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getResourceEmail</span>(<span class="ruby-identifier">id</span> = <span class="ruby-ivar">@resourceId</span>)
|
|
1142
|
+
354: <span class="ruby-identifier">getResourceList</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@resourceList</span>
|
|
1143
|
+
355:
|
|
1144
|
+
356: <span class="ruby-ivar">@resourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
|
|
1145
|
+
357: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">resource</span>[<span class="ruby-value">2</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">id</span>
|
|
1146
|
+
358: <span class="ruby-keyword kw">end</span>
|
|
1147
|
+
359: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Resource ID '#{id}' not found in list"</span>)
|
|
1148
|
+
360: <span class="ruby-keyword kw">end</span></pre>
|
|
1118
1149
|
</div>
|
|
1119
1150
|
|
|
1120
1151
|
</div>
|
|
@@ -1126,7 +1157,7 @@ this directory as well.
|
|
|
1126
1157
|
|
|
1127
1158
|
|
|
1128
1159
|
<div id="get-esource-ist-method" class="method-detail ">
|
|
1129
|
-
<a name="
|
|
1160
|
+
<a name="method-i-getResourceList"></a>
|
|
1130
1161
|
|
|
1131
1162
|
<div class="method-heading">
|
|
1132
1163
|
|
|
@@ -1150,19 +1181,19 @@ href="../String.html">String</a> objects.
|
|
|
1150
1181
|
<div class="method-source-code"
|
|
1151
1182
|
id="get-esource-ist-source">
|
|
1152
1183
|
<pre>
|
|
1153
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1184
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 340</span>
|
|
1185
|
+
340: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getResourceList</span>
|
|
1186
|
+
341: <span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'@date not set'</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@date</span>
|
|
1187
|
+
342:
|
|
1188
|
+
343: <span class="ruby-identifier">fileName</span> = <span class="ruby-node">"#{@templateDir}/#{@date}/resources.yml"</span>
|
|
1189
|
+
344: <span class="ruby-keyword kw">begin</span>
|
|
1190
|
+
345: <span class="ruby-ivar">@resourceList</span> = <span class="ruby-constant">YAML</span>.<span class="ruby-identifier">load</span>(<span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">fileName</span>))
|
|
1191
|
+
346: <span class="ruby-identifier">info</span>(<span class="ruby-node">"#{@resourceList.length} resources loaded"</span>)
|
|
1192
|
+
347: <span class="ruby-keyword kw">rescue</span>
|
|
1193
|
+
348: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Cannot read resource file #{fileName}: #{$!}"</span>)
|
|
1194
|
+
349: <span class="ruby-keyword kw">end</span>
|
|
1195
|
+
350: <span class="ruby-ivar">@resourceList</span>
|
|
1196
|
+
351: <span class="ruby-keyword kw">end</span></pre>
|
|
1166
1197
|
</div>
|
|
1167
1198
|
|
|
1168
1199
|
</div>
|
|
@@ -1174,7 +1205,7 @@ href="../String.html">String</a> objects.
|
|
|
1174
1205
|
|
|
1175
1206
|
|
|
1176
1207
|
<div id="get-esource-ame-method" class="method-detail ">
|
|
1177
|
-
<a name="
|
|
1208
|
+
<a name="method-i-getResourceName"></a>
|
|
1178
1209
|
|
|
1179
1210
|
<div class="method-heading">
|
|
1180
1211
|
|
|
@@ -1193,15 +1224,15 @@ href="../String.html">String</a> objects.
|
|
|
1193
1224
|
<div class="method-source-code"
|
|
1194
1225
|
id="get-esource-ame-source">
|
|
1195
1226
|
<pre>
|
|
1196
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1227
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 362</span>
|
|
1228
|
+
362: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getResourceName</span>(<span class="ruby-identifier">id</span> = <span class="ruby-ivar">@resourceId</span>)
|
|
1229
|
+
363: <span class="ruby-identifier">getResourceList</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@resourceList</span>
|
|
1230
|
+
364:
|
|
1231
|
+
365: <span class="ruby-ivar">@resourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
|
|
1232
|
+
366: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">resource</span>[<span class="ruby-value">1</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">resource</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">id</span>
|
|
1233
|
+
367: <span class="ruby-keyword kw">end</span>
|
|
1234
|
+
368: <span class="ruby-identifier">error</span>(<span class="ruby-node">"Resource ID '#{id}' not found in list"</span>)
|
|
1235
|
+
369: <span class="ruby-keyword kw">end</span></pre>
|
|
1205
1236
|
</div>
|
|
1206
1237
|
|
|
1207
1238
|
</div>
|
|
@@ -1213,7 +1244,7 @@ href="../String.html">String</a> objects.
|
|
|
1213
1244
|
|
|
1214
1245
|
|
|
1215
1246
|
<div id="process-heet-method" class="method-detail ">
|
|
1216
|
-
<a name="
|
|
1247
|
+
<a name="method-i-processSheet"></a>
|
|
1217
1248
|
|
|
1218
1249
|
<div class="method-heading">
|
|
1219
1250
|
|
|
@@ -1234,32 +1265,39 @@ Isolate the actual syntax from <em>sheet</em> and process it.
|
|
|
1234
1265
|
<div class="method-source-code"
|
|
1235
1266
|
id="process-heet-source">
|
|
1236
1267
|
<pre>
|
|
1237
|
-
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1268
|
+
<span class="ruby-comment cmt"># File lib/SheetReceiver.rb, line 127</span>
|
|
1269
|
+
127: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processSheet</span>(<span class="ruby-identifier">sheet</span>)
|
|
1270
|
+
128: <span class="ruby-comment cmt"># Make sure the sheet is really valid UTF-8</span>
|
|
1271
|
+
129: <span class="ruby-keyword kw">begin</span>
|
|
1272
|
+
130: <span class="ruby-identifier">sheet</span>.<span class="ruby-identifier">encode!</span>(<span class="ruby-value str">'UTF-8'</span>)
|
|
1273
|
+
131: <span class="ruby-keyword kw">rescue</span>
|
|
1274
|
+
132: <span class="ruby-identifier">error</span>(<span class="ruby-node">"The sheet contains badly encoded characters. #{$!}"</span>)
|
|
1275
|
+
133: <span class="ruby-keyword kw">end</span>
|
|
1276
|
+
134: <span class="ruby-comment cmt"># Store the detected sheet so we can include it with error reports if</span>
|
|
1277
|
+
135: <span class="ruby-comment cmt"># needed.</span>
|
|
1278
|
+
136: <span class="ruby-ivar">@sheet</span> = <span class="ruby-identifier">fixLineBreaks</span>(<span class="ruby-identifier">sheet</span>)
|
|
1279
|
+
137: <span class="ruby-ivar">@sheet</span> = <span class="ruby-identifier">cutOut</span>(<span class="ruby-ivar">@sheet</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@sheetWasAttached</span>
|
|
1280
|
+
138: <span class="ruby-comment cmt"># A valid sheet must have the poper header line.</span>
|
|
1281
|
+
139: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@sheetHeader</span>.<span class="ruby-identifier">match</span>(<span class="ruby-ivar">@sheet</span>)
|
|
1282
|
+
140: <span class="ruby-identifier">checkSignature</span>(<span class="ruby-ivar">@sheet</span>)
|
|
1283
|
+
141: <span class="ruby-comment cmt"># Extract the resource ID and the end date from the sheet.</span>
|
|
1284
|
+
142: <span class="ruby-identifier">matches</span> = <span class="ruby-ivar">@sheetHeader</span>.<span class="ruby-identifier">match</span>(<span class="ruby-ivar">@sheet</span>)
|
|
1285
|
+
143: <span class="ruby-ivar">@resourceId</span>, <span class="ruby-ivar">@date</span> = <span class="ruby-identifier">matches</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>]
|
|
1286
|
+
144: <span class="ruby-comment cmt"># Email answers will only go the email address on file!</span>
|
|
1287
|
+
145: <span class="ruby-ivar">@submitter</span> = <span class="ruby-identifier">getResourceEmail</span>(<span class="ruby-ivar">@resourceId</span>)
|
|
1288
|
+
146: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Found #{@sheetWasAttached ? 'attached ' : ''}sheet for "</span> <span class="ruby-operator">+</span>
|
|
1289
|
+
147: <span class="ruby-node">"#{@resourceId} dated #{@date}"</span>)
|
|
1290
|
+
148: <span class="ruby-comment cmt"># Ok, found. Now check the full sheet.</span>
|
|
1291
|
+
149: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">checkSheet</span>(<span class="ruby-ivar">@sheet</span>)
|
|
1292
|
+
150: <span class="ruby-comment cmt"># Everything is fine. Store it away.</span>
|
|
1293
|
+
151: <span class="ruby-identifier">fileSheet</span>(<span class="ruby-ivar">@sheet</span>)
|
|
1294
|
+
152: <span class="ruby-comment cmt"># Remove the mail from the failedMailsDir</span>
|
|
1295
|
+
153: <span class="ruby-constant">File</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-node">"#{@failedMailsDir}/#{@idDigest}"</span>)
|
|
1296
|
+
154: <span class="ruby-identifier">info</span>(<span class="ruby-node">"Accepted sheet for #{@resourceId} dated #{@date}"</span>)
|
|
1297
|
+
155: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
|
1298
|
+
156: <span class="ruby-keyword kw">end</span>
|
|
1299
|
+
157: <span class="ruby-keyword kw">end</span>
|
|
1300
|
+
158: <span class="ruby-keyword kw">end</span></pre>
|
|
1263
1301
|
</div>
|
|
1264
1302
|
|
|
1265
1303
|
</div>
|