Class TaskJuggler
In: lib/taskjuggler/Account.rb
lib/taskjuggler/AccountCredit.rb
lib/taskjuggler/AccountScenario.rb
lib/taskjuggler/AlertLevelDefinitions.rb
lib/taskjuggler/Allocation.rb
lib/taskjuggler/AttributeBase.rb
lib/taskjuggler/AttributeDefinition.rb
lib/taskjuggler/Attributes.rb
lib/taskjuggler/BatchProcessor.rb
lib/taskjuggler/Booking.rb
lib/taskjuggler/Charge.rb
lib/taskjuggler/ChargeSet.rb
lib/taskjuggler/DataCache.rb
lib/taskjuggler/FileList.rb
lib/taskjuggler/HTMLDocument.rb
lib/taskjuggler/HTMLElements.rb
lib/taskjuggler/ICalendar.rb
lib/taskjuggler/Interval.rb
lib/taskjuggler/IntervalList.rb
lib/taskjuggler/Journal.rb
lib/taskjuggler/KeywordArray.rb
lib/taskjuggler/KeywordDocumentation.rb
lib/taskjuggler/LeaveList.rb
lib/taskjuggler/Limits.rb
lib/taskjuggler/Log.rb
lib/taskjuggler/LogFile.rb
lib/taskjuggler/LogicalExpression.rb
lib/taskjuggler/LogicalFunction.rb
lib/taskjuggler/LogicalOperation.rb
lib/taskjuggler/MessageHandler.rb
lib/taskjuggler/PTNProxy.rb
lib/taskjuggler/Painter.rb
lib/taskjuggler/Painter/BasicShapes.rb
lib/taskjuggler/Painter/Color.rb
lib/taskjuggler/Painter/Element.rb
lib/taskjuggler/Painter/FontData.rb
lib/taskjuggler/Painter/FontMetrics.rb
lib/taskjuggler/Painter/FontMetricsData.rb
lib/taskjuggler/Painter/Group.rb
lib/taskjuggler/Painter/Points.rb
lib/taskjuggler/Painter/Primitives.rb
lib/taskjuggler/Painter/SVGSupport.rb
lib/taskjuggler/Painter/Text.rb
lib/taskjuggler/Project.rb
lib/taskjuggler/ProjectFileParser.rb
lib/taskjuggler/ProjectFileScanner.rb
lib/taskjuggler/PropertyList.rb
lib/taskjuggler/PropertySet.rb
lib/taskjuggler/PropertyTreeNode.rb
lib/taskjuggler/Query.rb
lib/taskjuggler/RealFormat.rb
lib/taskjuggler/Resource.rb
lib/taskjuggler/ResourceScenario.rb
lib/taskjuggler/RichText.rb
lib/taskjuggler/RichText/Document.rb
lib/taskjuggler/RichText/Element.rb
lib/taskjuggler/RichText/FunctionExample.rb
lib/taskjuggler/RichText/FunctionHandler.rb
lib/taskjuggler/RichText/Parser.rb
lib/taskjuggler/RichText/RTFHandlers.rb
lib/taskjuggler/RichText/RTFNavigator.rb
lib/taskjuggler/RichText/RTFQuery.rb
lib/taskjuggler/RichText/RTFReport.rb
lib/taskjuggler/RichText/RTFReportLink.rb
lib/taskjuggler/RichText/RTFWithQuerySupport.rb
lib/taskjuggler/RichText/Scanner.rb
lib/taskjuggler/RichText/Snip.rb
lib/taskjuggler/RichText/SyntaxRules.rb
lib/taskjuggler/RichText/TOCEntry.rb
lib/taskjuggler/RichText/TableOfContents.rb
lib/taskjuggler/Scenario.rb
lib/taskjuggler/ScenarioData.rb
lib/taskjuggler/Scoreboard.rb
lib/taskjuggler/SheetHandlerBase.rb
lib/taskjuggler/SheetReceiver.rb
lib/taskjuggler/SheetSender.rb
lib/taskjuggler/Shift.rb
lib/taskjuggler/ShiftAssignments.rb
lib/taskjuggler/ShiftScenario.rb
lib/taskjuggler/SimpleQueryExpander.rb
lib/taskjuggler/StatusSheetReceiver.rb
lib/taskjuggler/StatusSheetSender.rb
lib/taskjuggler/StdIoWrapper.rb
lib/taskjuggler/SyntaxReference.rb
lib/taskjuggler/TableColumnDefinition.rb
lib/taskjuggler/TableColumnSorter.rb
lib/taskjuggler/Task.rb
lib/taskjuggler/TaskDependency.rb
lib/taskjuggler/TaskJuggler.rb
lib/taskjuggler/TaskScenario.rb
lib/taskjuggler/TernarySearchTree.rb
lib/taskjuggler/TextFormatter.rb
lib/taskjuggler/TextParser.rb
lib/taskjuggler/TimeSheetReceiver.rb
lib/taskjuggler/TimeSheetSender.rb
lib/taskjuggler/TimeSheetSummary.rb
lib/taskjuggler/TimeSheets.rb
lib/taskjuggler/Tj3AppBase.rb
lib/taskjuggler/Tj3SheetAppBase.rb
lib/taskjuggler/TjException.rb
lib/taskjuggler/TjTime.rb
lib/taskjuggler/TjpExample.rb
lib/taskjuggler/TjpSyntaxRules.rb
lib/taskjuggler/URLParameter.rb
lib/taskjuggler/UserManual.rb
lib/taskjuggler/VimSyntax.rb
lib/taskjuggler/WorkingHours.rb
lib/taskjuggler/XMLDocument.rb
lib/taskjuggler/XMLElement.rb
lib/taskjuggler/apps/Tj3.rb
lib/taskjuggler/apps/Tj3Client.rb
lib/taskjuggler/apps/Tj3Daemon.rb
lib/taskjuggler/apps/Tj3Man.rb
lib/taskjuggler/apps/Tj3SsReceiver.rb
lib/taskjuggler/apps/Tj3SsSender.rb
lib/taskjuggler/apps/Tj3TsReceiver.rb
lib/taskjuggler/apps/Tj3TsSender.rb
lib/taskjuggler/apps/Tj3TsSummary.rb
lib/taskjuggler/daemon/Daemon.rb
lib/taskjuggler/daemon/ProcessIntercom.rb
lib/taskjuggler/daemon/ProjectBroker.rb
lib/taskjuggler/daemon/ProjectServer.rb
lib/taskjuggler/daemon/ReportServer.rb
lib/taskjuggler/daemon/ReportServlet.rb
lib/taskjuggler/daemon/WebServer.rb
lib/taskjuggler/daemon/WelcomePage.rb
lib/taskjuggler/reports/AccountListRE.rb
lib/taskjuggler/reports/CSVFile.rb
lib/taskjuggler/reports/ChartPlotter.rb
lib/taskjuggler/reports/CollisionDetector.rb
lib/taskjuggler/reports/ColumnTable.rb
lib/taskjuggler/reports/GanttChart.rb
lib/taskjuggler/reports/GanttContainer.rb
lib/taskjuggler/reports/GanttHeader.rb
lib/taskjuggler/reports/GanttHeaderScaleItem.rb
lib/taskjuggler/reports/GanttLine.rb
lib/taskjuggler/reports/GanttLoadStack.rb
lib/taskjuggler/reports/GanttMilestone.rb
lib/taskjuggler/reports/GanttRouter.rb
lib/taskjuggler/reports/GanttTaskBar.rb
lib/taskjuggler/reports/HTMLGraphics.rb
lib/taskjuggler/reports/ICalReport.rb
lib/taskjuggler/reports/Navigator.rb
lib/taskjuggler/reports/NikuReport.rb
lib/taskjuggler/reports/Report.rb
lib/taskjuggler/reports/ReportBase.rb
lib/taskjuggler/reports/ReportContext.rb
lib/taskjuggler/reports/ReportTable.rb
lib/taskjuggler/reports/ReportTableCell.rb
lib/taskjuggler/reports/ReportTableColumn.rb
lib/taskjuggler/reports/ReportTableLegend.rb
lib/taskjuggler/reports/ReportTableLine.rb
lib/taskjuggler/reports/ResourceListRE.rb
lib/taskjuggler/reports/StatusSheetReport.rb
lib/taskjuggler/reports/TableReport.rb
lib/taskjuggler/reports/TableReportColumn.rb
lib/taskjuggler/reports/TagFile.rb
lib/taskjuggler/reports/TaskListRE.rb
lib/taskjuggler/reports/TextReport.rb
lib/taskjuggler/reports/TimeSheetReport.rb
lib/taskjuggler/reports/TjpExportRE.rb
lib/taskjuggler/reports/TraceReport.rb
Parent: Object

encoding: UTF-8

TableReportColumn.rb — The TaskJuggler III Project Management Software

Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012

              by Chris Schlaeger <chris@linux.com>

This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation.

Methods

Classes and Modules

Module TaskJuggler::HTMLElements
Module TaskJuggler::HTMLGraphics
Module TaskJuggler::ProcessIntercom
Module TaskJuggler::ProcessIntercomIface
Module TaskJuggler::RichTextSyntaxRules
Module TaskJuggler::StdIoWrapper
Module TaskJuggler::TjpSyntaxRules
Class TaskJuggler::Account
Class TaskJuggler::AccountAttribute
Class TaskJuggler::AccountCredit
Class TaskJuggler::AccountCreditListAttribute
Class TaskJuggler::AccountListRE
Class TaskJuggler::AccountScenario
Class TaskJuggler::AlertLevelDefinition
Class TaskJuggler::AlertLevelDefinitions
Class TaskJuggler::Allocation
Class TaskJuggler::AllocationAttribute
Class TaskJuggler::AttributeBase
Class TaskJuggler::AttributeDefinition
Class TaskJuggler::AttributeOverwrite
Class TaskJuggler::BatchProcessor
Class TaskJuggler::Booking
Class TaskJuggler::BookingListAttribute
Class TaskJuggler::BooleanAttribute
Class TaskJuggler::CSVFile
Class TaskJuggler::CellSettingPattern
Class TaskJuggler::CellSettingPatternList
Class TaskJuggler::Charge
Class TaskJuggler::ChargeListAttribute
Class TaskJuggler::ChargeSet
Class TaskJuggler::ChargeSetListAttribute
Class TaskJuggler::ChartPlotter
Class TaskJuggler::ChartPlotterError
Class TaskJuggler::CollisionDetector
Class TaskJuggler::ColumnListAttribute
Class TaskJuggler::ColumnTable
Class TaskJuggler::Daemon
Class TaskJuggler::DataCache
Class TaskJuggler::DataCacheEntry
Class TaskJuggler::DateAttribute
Class TaskJuggler::DefinitionListAttribute
Class TaskJuggler::DependencyListAttribute
Class TaskJuggler::DurationAttribute
Class TaskJuggler::FileList
Class TaskJuggler::FileRecord
Class TaskJuggler::FixnumAttribute
Class TaskJuggler::FlagListAttribute
Class TaskJuggler::FloatAttribute
Class TaskJuggler::FormatListAttribute
Class TaskJuggler::GanttChart
Class TaskJuggler::GanttContainer
Class TaskJuggler::GanttHeader
Class TaskJuggler::GanttHeaderScaleItem
Class TaskJuggler::GanttLine
Class TaskJuggler::GanttLoadStack
Class TaskJuggler::GanttMilestone
Class TaskJuggler::GanttRouter
Class TaskJuggler::GanttTaskBar
Class TaskJuggler::HTMLDocument
Class TaskJuggler::ICalReport
Class TaskJuggler::ICalendar
Class TaskJuggler::Interval
Class TaskJuggler::IntervalList
Class TaskJuggler::JobInfo
Class TaskJuggler::Journal
Class TaskJuggler::JournalEntry
Class TaskJuggler::JournalEntryList
Class TaskJuggler::JournalSortListAttribute
Class TaskJuggler::KeywordArray
Class TaskJuggler::KeywordDocumentation
Class TaskJuggler::Leave
Class TaskJuggler::LeaveAllowance
Class TaskJuggler::LeaveAllowanceList
Class TaskJuggler::LeaveAllowanceListAttribute
Class TaskJuggler::LeaveList
Class TaskJuggler::LeaveListAttribute
Class TaskJuggler::Limits
Class TaskJuggler::LimitsAttribute
Class TaskJuggler::ListAttributeBase
Class TaskJuggler::Log
Class TaskJuggler::LogFile
Class TaskJuggler::LogicalAttribute
Class TaskJuggler::LogicalExpression
Class TaskJuggler::LogicalExpressionAttribute
Class TaskJuggler::LogicalExpressionListAttribute
Class TaskJuggler::LogicalFlag
Class TaskJuggler::LogicalFunction
Class TaskJuggler::LogicalOperation
Class TaskJuggler::ManagerResponsibilities
Class TaskJuggler::ManagerStatusRecord
Class TaskJuggler::Message
Class TaskJuggler::MessageHandler
Class TaskJuggler::Navigator
Class TaskJuggler::NavigatorElement
Class TaskJuggler::NikuProject
Class TaskJuggler::NikuReport
Class TaskJuggler::NikuResource
Class TaskJuggler::NodeListAttribute
Class TaskJuggler::PTNProxy
Class TaskJuggler::Painter
Class TaskJuggler::PlaceHolderCell
Class TaskJuggler::Project
Class TaskJuggler::ProjectBroker
Class TaskJuggler::ProjectBrokerIface
Class TaskJuggler::ProjectFileParser
Class TaskJuggler::ProjectFileScanner
Class TaskJuggler::ProjectRecord
Class TaskJuggler::ProjectServer
Class TaskJuggler::ProjectServerIface
Class TaskJuggler::PropertyAttribute
Class TaskJuggler::PropertyList
Class TaskJuggler::PropertySet
Class TaskJuggler::PropertyTreeNode
Class TaskJuggler::Query
Class TaskJuggler::RTFHandlers
Class TaskJuggler::RTFNavigator
Class TaskJuggler::RTFQuery
Class TaskJuggler::RTFReport
Class TaskJuggler::RTFReportLink
Class TaskJuggler::RTFWithQuerySupport
Class TaskJuggler::RealFormat
Class TaskJuggler::RealFormatAttribute
Class TaskJuggler::ReferenceAttribute
Class TaskJuggler::Report
Class TaskJuggler::ReportBase
Class TaskJuggler::ReportContext
Class TaskJuggler::ReportScenario
Class TaskJuggler::ReportServer
Class TaskJuggler::ReportServerIface
Class TaskJuggler::ReportServerRecord
Class TaskJuggler::ReportServlet
Class TaskJuggler::ReportTable
Class TaskJuggler::ReportTableCell
Class TaskJuggler::ReportTableColumn
Class TaskJuggler::ReportTableLegend
Class TaskJuggler::ReportTableLine
Class TaskJuggler::Resource
Class TaskJuggler::ResourceListAttribute
Class TaskJuggler::ResourceListRE
Class TaskJuggler::ResourceScenario
Class TaskJuggler::RichText
Class TaskJuggler::RichTextAttribute
Class TaskJuggler::RichTextDocument
Class TaskJuggler::RichTextElement
Class TaskJuggler::RichTextFunctionExample
Class TaskJuggler::RichTextFunctionHandler
Class TaskJuggler::RichTextImage
Class TaskJuggler::RichTextIntermediate
Class TaskJuggler::RichTextParser
Class TaskJuggler::RichTextScanner
Class TaskJuggler::RichTextSnip
Class TaskJuggler::Scenario
Class TaskJuggler::ScenarioData
Class TaskJuggler::ScenarioListAttribute
Class TaskJuggler::Scoreboard
Class TaskJuggler::ScoreboardInterval
Class TaskJuggler::SheetHandlerBase
Class TaskJuggler::SheetReceiver
Class TaskJuggler::SheetSender
Class TaskJuggler::Shift
Class TaskJuggler::ShiftAssignment
Class TaskJuggler::ShiftAssignments
Class TaskJuggler::ShiftAssignmentsAttribute
Class TaskJuggler::ShiftScenario
Class TaskJuggler::SimpleQueryExpander
Class TaskJuggler::SortListAttribute
Class TaskJuggler::StatusSheetReceiver
Class TaskJuggler::StatusSheetReport
Class TaskJuggler::StatusSheetSender
Class TaskJuggler::StringAttribute
Class TaskJuggler::SymbolAttribute
Class TaskJuggler::SymbolListAttribute
Class TaskJuggler::SyntaxReference
Class TaskJuggler::TOCEntry
Class TaskJuggler::TSResourceRecord
Class TaskJuggler::TSTaskRecord
Class TaskJuggler::TableColumnDefinition
Class TaskJuggler::TableColumnSorter
Class TaskJuggler::TableOfContents
Class TaskJuggler::TableReport
Class TaskJuggler::TableReportColumn
Class TaskJuggler::TagFile
Class TaskJuggler::Task
Class TaskJuggler::TaskDepListAttribute
Class TaskJuggler::TaskDependency
Class TaskJuggler::TaskListAttribute
Class TaskJuggler::TaskListRE
Class TaskJuggler::TaskScenario
Class TaskJuggler::TernarySearchTree
Class TaskJuggler::TextFormatter
Class TaskJuggler::TextParser
Class TaskJuggler::TextReport
Class TaskJuggler::TimeInterval
Class TaskJuggler::TimeIntervalListAttribute
Class TaskJuggler::TimeSheet
Class TaskJuggler::TimeSheetReceiver
Class TaskJuggler::TimeSheetRecord
Class TaskJuggler::TimeSheetReport
Class TaskJuggler::TimeSheetSender
Class TaskJuggler::TimeSheetSummary
Class TaskJuggler::TimeSheets
Class TaskJuggler::Tj3
Class TaskJuggler::Tj3AppBase
Class TaskJuggler::Tj3Client
Class TaskJuggler::Tj3Daemon
Class TaskJuggler::Tj3Man
Class TaskJuggler::Tj3SheetAppBase
Class TaskJuggler::Tj3SsReceiver
Class TaskJuggler::Tj3SsSender
Class TaskJuggler::Tj3TsReceiver
Class TaskJuggler::Tj3TsSender
Class TaskJuggler::Tj3TsSummary
Class TaskJuggler::TjException
Class TaskJuggler::TjRuntimeError
Class TaskJuggler::TjTime
Class TaskJuggler::TjpExample
Class TaskJuggler::TjpExportRE
Class TaskJuggler::TraceReport
Class TaskJuggler::URLParameter
Class TaskJuggler::UserManual
Class TaskJuggler::VimSyntax
Class TaskJuggler::WebServer
Class TaskJuggler::WelcomePage
Class TaskJuggler::WorkingHours
Class TaskJuggler::WorkingHoursAttribute
Class TaskJuggler::XMLBlob
Class TaskJuggler::XMLComment
Class TaskJuggler::XMLDocument
Class TaskJuggler::XMLElement
Class TaskJuggler::XMLNamedText
Class TaskJuggler::XMLText

Attributes

generateTraces  [RW] 
maxCpuCores  [RW] 
messageHandler  [R] 
project  [R] 
warnTsDeltas  [RW] 

Public Class methods

Create a new TaskJuggler object. console is a boolean that determines whether or not messsages can be written to $stderr.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 31
  def initialize(console)
    @project = nil
    @parser = nil
    @messageHandler = MessageHandler.new(console)
    @maxCpuCores = 1
    @warnTsDeltas = false
    @generateTraces = false
    TjTime.setTimeZone('UTC')
  end

Public Instance methods

Check the content of the file fileName and interpret it as a status sheet. If the sheet is syntaxtically correct and matches the loaded project, true is returned. Otherwise false.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 331
  def checkStatusSheet(fileName)
    begin
      Log.enter('checkStatusSheet', 'Parsing #{fileName} ...')

      # To use this feature, the user must have specified which scenario is
      # the tracking scenario.
      unless @project['trackingScenarioIdx']
        raise TjException.new, 'No trackingscenario defined'
      end

      return false unless (ss = parseFile(fileName, :statusSheetFile))
      queryAttrs = { 'project' => @project,
                     'property' => ss[0],
                     'scopeProperty' => nil,
                     'scenarioIdx' => @project['trackingScenarioIdx'],
                     'timeFormat' => '%Y-%m-%d',
                     'start' => ss[1],
                     'end' => ss[2],
                     'timeFormat' => '%Y-%m-%d',
                     'selfContained' => true }
      query = Query.new(queryAttrs)
      puts ss[0].query_dashboard(query).richText.inputText
    rescue TjException => msg
      if msg.message && !msg.message.empty?
        @messageHandler.critical('check_status_sheet', msg.message)
      end
      Log.exit('checkStatusSheet')
      return false
    end
    Log.exit('checkStatusSheet')
    true
  end

Check the content of the file fileName and interpret it as a time sheet. If the sheet is syntaxtically correct and matches the loaded project, true is returned. Otherwise false.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 288
  def checkTimeSheet(fileName)
    begin
      Log.enter('checkTimeSheet', 'Parsing #{fileName} ...')

      # To use this feature, the user must have specified which scenario is
      # the tracking scenario.
      unless @project['trackingScenarioIdx']
        raise TjException.new, 'No trackingscenario defined'
      end

      # Make sure we don't use data from old time sheets or Journal entries.
      @project.timeSheets.clear
      @project['journal'] = Journal.new
      return false unless (ts = parseFile(fileName, :timeSheetFile))
      return false unless @project.checkTimeSheets
      queryAttrs = { 'project' => @project,
                     'property' => ts.resource,
                     'scopeProperty' => nil,
                     'scenarioIdx' => @project['trackingScenarioIdx'],
                     'start' => ts.interval.start,
                     'end' => ts.interval.end,
                     'journalMode' => :journal,
                     'journalAttributes' => %w( alert property headline flags
                                                timesheet summary details ),
                     'sortJournalEntries' => [ [ :seqno, 1 ] ],
                     'timeFormat' => '%Y-%m-%d',
                     'selfContained' => true }
      query = Query.new(queryAttrs)
      puts ts.resource.query_journal(query).richText.inputText
    rescue TjException => msg
      if msg.message && !msg.message.empty?
        @messageHandler.critical('check_time_sheet', msg.message)
      end
      Log.exit('checkTimeSheet')
      return false
    end
    Log.exit('checkTimeSheet')
    true
  end

Return the number of errors that had been reported during processing.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 377
  def errors
    @project.messageHandler.errors
  end

Generate an export report definition for bookings up to the freezeDate.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 212
  def freeze(freezeDate, taskBookings)
    begin
      # Check the master file is really a file and not stdin.
      unless (masterFile = @project.inputFiles.masterFile)
        @messageHandler.error('cannot_freeze_stdin',
                              "The project freeze feature only when the " +
                              "master file is a real file, not standard input.")
      end

      # Derive the file names for the header and bookings file from the base
      # name of the master file.
      masterFileBase = File.basename(masterFile, '.tjp')
      headerFile = masterFileBase + '-header.tji'
      bookingsFileBase = masterFileBase + '-bookings'
      bookingsFile = bookingsFileBase + '.tji'

      if !File.exists?(bookingsFile) || !File.exists?(headerFile)
        @messageHandler.info('incl_freeze_files',
                             "Please make sure you include #{headerFile} at " +
                             "the end of the project header and " +
                             "#{bookingsFile} at the end of #{masterFile}.")
      end

      # Generate the project header include file with the new 'now' date.
      begin
        File.open(headerFile, 'w') do |f|
          f.puts("now #{freezeDate}")
        end
      rescue
        @messageHandler.error('write_header_incl',
                              "Cannote write header include file " +
                              "#{headerFile}")
      end

      # Generate an export report for the bookings.
      report = Report.new(@project, '_bookings_', bookingsFileBase, nil)
      report.typeSpec = :export
      report.set('formats', [ :tjp ])
      report.inheritAttributes

      # We export only the tracking scenario.
      unless (trackingScenarioIdx = @project['trackingScenarioIdx'])
        @messageHandler.error('no_tracking_scen',
                              'No trackingscenario defined')
      end
      report.set('scenarios', [ trackingScenarioIdx ])

      # Only generate bookings up to the freeze date.
      report.set('end', freezeDate)
      # Show all tasks, sorted by seqno-up.
      report.set('hideTask', LogicalExpression.new(LogicalOperation.new(0)))
      report.set('sortTasks', [ [ 'seqno', true, -1 ] ])
      # Show all resources, sorted by seqno-up.
      report.set('hideResource',
                  LogicalExpression.new(LogicalOperation.new(0)))
      report.set('sortResources', [ [ 'seqno', true, -1 ] ])
      # Only generate bookings, no other attributes or definitions.
      report.set('definitions', [])
      # We group the bookings by task or by resource depending on the user
      # request.
      if taskBookings
        report.set('taskAttributes', [ 'booking' ])
        report.set('resourceAttributes', [])
      else
        report.set('taskAttributes', [])
        report.set('resourceAttributes', [ 'booking' ])
      end
    rescue TjException
      return false
    end
    true
  end

Generate the report with the ID reportId. If regExpMode is true, reportId is interpreted as a Regular Expression and all reports with matching IDs are generated. formats is a list of formats (e. g. :html, :csv, etc.). dynamicAtributes is a String that may contain attributes to supplement the report definition. The String must be in TJP format and may be nil if no additional attributes are provided.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 178
  def generateReport(reportId, regExpMode, formats = nil,
                     dynamicAttributes = nil)
    begin
      Log.enter('generateReport', 'Generating report #{reportId} ...')
      @project.generateReport(reportId, regExpMode, formats, dynamicAttributes)
    rescue TjException => msg
      if msg.message && !msg.message.empty?
        @messageHandler.critical('generate_report', msg.message)
      end
      Log.exit('generateReport')
      return false
    end
    Log.exit('generateReport')
    true
  end

Generate all specified reports. The project must have be scheduled before this method can be called. It returns true if no error occured, false otherwise.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 143
  def generateReports(outputDir = './')
    @project.checkReports
    outputDir += '/' unless outputDir.empty? || outputDir[-1] == '/'
    @project.outputDir = outputDir
    Log.enter('reports', 'Generating reports ...')

    begin
      #RubyProf.start
      @project.generateReports(@maxCpuCores)
      #profile = RubyProf.stop
      #printer = RubyProf::GraphHtmlPrinter.new(profile)
      #File.open("profile.html", "w") do |file|
      #  printer.print(file)
      #end
      #printer = RubyProf::CallTreePrinter.new(profile)
      #File.open("profile.clt", "w") do |file|
      #  printer.print(file)
      #end
    rescue TjException => msg
      if msg.message && !msg.message.empty?
        @messageHandler.critical('generate_reports', msg.message)
      end
      return false
    end

    Log.exit('reports')
    true
  end

List the details of the report with reportId or if regExpMode the reports that match the regular expression in reportId.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 196
  def listReports(reportId, regExpMode)
    begin
      Log.enter('listReports', 'Generating report list for #{reportId} ...')
      @project.listReports(reportId, regExpMode)
    rescue TjException => msg
      if msg.message && !msg.message.empty?
        @messageHandler.critical('list_reports', msg.message)
      end
      Log.exit('listReports')
      return false
    end
    Log.exit('listReports')
    true
  end

Read in the files passed as file names in files, parse them and construct a Project object. In case of success true is returned. Otherwise false.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 44
  def parse(files, keepParser = false)
    Log.enter('parser', 'Parsing files ...')
    master = true
    @project = nil

    #RubyProf.start
    @parser = ProjectFileParser.new(@messageHandler)
    files.each do |file|
      begin
        @parser.open(file, master)
      rescue TjException => msg
        if msg.message && !msg.message.empty?
          @messageHandler.critical('parse', msg.message)
        end
        Log.exit('parser')
        return false
      end
      if master
        # The first file is considered the master file.
        if (@project = @parser.parse(:project)) == false
          Log.exit('parser')
          return false
        end
        master = false
      else
        # All other files.
        @parser.setGlobalMacros
        if @parser.parse(:propertiesFile) == false
          Log.exit('parser')
          return false
        end
      end
      @project.inputFiles << file
      @parser.close
    end

    #profile = RubyProf.stop
    #printer = RubyProf::GraphHtmlPrinter.new(profile)
    #File.open("profile.html", "w") do |file|
    #  printer.print(file)
    #end
    #printer = RubyProf::CallTreePrinter.new(profile)
    #File.open("profile.clt", "w") do |file|
    #  printer.print(file)
    #end

    # For the report server mode we may need to keep the parser. Otherwise,
    # destroy it.
    @parser = nil unless keepParser

    Log.exit('parser')
    @messageHandler.errors == 0
  end

Parse a file and add the content to the existing project. fileName is the name of the file. rule is the TextParser::Rule to start with.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 100
  def parseFile(fileName, rule)
    begin
      @parser.open(fileName, false)
      @project.inputFiles << fileName
    rescue TjException => msg
      if msg.message && !msg.message.empty?
        @messageHandler.critical('parse_file', msg.message)
      end
      return nil
    end

    @parser.setGlobalMacros
    return nil if (res = @parser.parse(rule)) == false

    @parser.close
    res
  end

Return the ID of the project or nil if no project has been loaded yet.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 365
  def projectId
    return nil if @project.nil?
    @project['projectid']
  end

Return the name of the project or nil if no project has been loaded yet.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 371
  def projectName
    return nil if @project.nil?
    @project['name']
  end

Schedule all scenarios in the project. Return true if no error was detected, false otherwise.

[Source]

# File lib/taskjuggler/TaskJuggler.rb, line 120
  def schedule
    Log.enter('scheduler', 'Scheduling project ...')
    #puts @project.to_s
    @project.warnTsDeltas = @warnTsDeltas

    begin
      res = @project.schedule
    rescue TjException => msg
      if msg.message && !msg.message.empty?
        @messageHandler.critical('scheduling_error', msg.message)
      end
      return false
    end

    @project.enableTraceReports(@generateTraces)

    Log.exit('scheduler')
    res
  end

[Validate]