Sha256: 3ecea13b05228d50a3445d27f8ae7ad80c1f93e32cc5943b6ec5bb5096f2b648

Contents?: true

Size: 1.5 KB

Versions: 15

Compression:

Stored size: 1.5 KB

Contents

require 'tempfile'
require 'active_support/core_ext/time/calculations'

module MPXJ
  # Used to read a project plan from a file
  class Reader
    # Reads a project plan from a file, and returns a Project instance
    # which provides access to the structure and attributes of the project data.
    # Note that an optional timezone can be supplied to ensue that all date-time
    # values returned are in the specified timezone.
    #
    # @param file_name [String] the name of the file to read
    # @param zone [ActiveSupport::TimeZone] an optional timezone
    # @return [Project] new Project instance
    def self.read(file_name, zone = nil)
      project = nil
      json_file = Tempfile.new([File.basename(file_name, ".*"), '.json'])
      tz = zone || Time.zone || ActiveSupport::TimeZone["UTC"]

      begin
        classpath = Dir["#{File.dirname(__FILE__)}/*.jar"].join(path_separator)
        java_output = `java -cp \"#{classpath}\" net.sf.mpxj.sample.MpxjConvert \"#{file_name}\" \"#{json_file.path}\"`
        if $?.exitstatus != 0
          raise "Failed to read file: #{java_output}"
        end
        project = Project.new(json_file, tz)
      ensure
        json_file.close
        json_file.unlink
      end
      project
    end

    # @private
    def self.path_separator
      if windows?
        ";"
      else
        ":"
      end
    end

    # @private
    def self.windows?
      (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
mpxj-5.3.2 lib/mpxj/reader.rb
mpxj-5.3.1 lib/mpxj/reader.rb
mpxj-5.3.0 lib/mpxj/reader.rb
mpxj-5.2.2 lib/mpxj/reader.rb
mpxj-5.2.1 lib/mpxj/reader.rb
mpxj-5.2.0 lib/mpxj/reader.rb
mpxj-5.1.18 lib/mpxj/reader.rb
mpxj-5.1.17 lib/mpxj/reader.rb
mpxj-5.1.16 lib/mpxj/reader.rb
mpxj-5.1.15 lib/mpxj/reader.rb
mpxj-5.1.14 lib/mpxj/reader.rb
mpxj-5.1.13 lib/mpxj/reader.rb
mpxj-5.1.12 lib/mpxj/reader.rb
mpxj-5.1.11 lib/mpxj/reader.rb
mpxj-5.1.10 lib/mpxj/reader.rb