|
| 1 | +require_relative 'asposecellsjava/version' |
| 2 | +require_relative 'asposecellsjava/asposecells' |
| 3 | +require 'logger' |
| 4 | +require 'rjb' |
| 5 | + |
| 6 | +module Asposecellsjava |
| 7 | + |
| 8 | + class << self |
| 9 | + attr_accessor :aspose_cells_config |
| 10 | + end |
| 11 | + |
| 12 | + def initialize_aspose_cells |
| 13 | + aspose_jars_dir = Asposecellsjava.aspose_cells_config ? Asposecellsjava.aspose_cells_config['jar_dir'] : nil |
| 14 | + aspose_license_path = Asposecellsjava.aspose_cells_config ? Asposecellsjava.aspose_cells_config['license_path'] : nil |
| 15 | + jvm_args = Asposecellsjava.aspose_cells_config ? Asposecellsjava.aspose_cells_config['jvm_args'] : nil |
| 16 | + |
| 17 | + load_aspose_jars(aspose_jars_dir, jvm_args) |
| 18 | + load_aspose_license(aspose_license_path) |
| 19 | + end |
| 20 | + |
| 21 | + def load_aspose_license(aspose_license_path) |
| 22 | + if aspose_license_path && File.exist?(aspose_license_path) |
| 23 | + set_license(File.join(aspose_license_path)) |
| 24 | + else |
| 25 | + logger = Logger.new(STDOUT) |
| 26 | + logger.level = Logger::WARN |
| 27 | + logger.warn('Using the non licensed aspose jar. Please specify path to your aspose license directory in config/aspose.yml file!') |
| 28 | + end |
| 29 | + end |
| 30 | + |
| 31 | + def load_aspose_jars(aspose_jars_dir, jvm_args) |
| 32 | + if aspose_jars_dir && File.exist?(aspose_jars_dir) |
| 33 | + jardir = File.join(aspose_jars_dir, '**', '*.jar') |
| 34 | + else |
| 35 | + jardir = File.join(File.dirname(File.dirname(__FILE__)), 'jars', '**', '*.jar') |
| 36 | + end |
| 37 | + |
| 38 | + if jvm_args |
| 39 | + args = jvm_args.split(' ') << '-Djava.awt.headless=true' |
| 40 | + logger = Logger.new(STDOUT) |
| 41 | + logger.level = Logger::DEBUG |
| 42 | + logger.debug("JVM args : #{args}") |
| 43 | + Rjb::load(classpath = Dir.glob(jardir).join(':'), jvmargs=args) |
| 44 | + else |
| 45 | + Rjb::load(classpath = Dir.glob(jardir).join(':'), jvmargs=['-Djava.awt.headless=true']) |
| 46 | + end |
| 47 | + |
| 48 | + end |
| 49 | + |
| 50 | + def input_file(file) |
| 51 | + Rjb::import('java.io.FileInputStream').new(file) |
| 52 | + end |
| 53 | + |
| 54 | + def set_license(aspose_license_file) |
| 55 | + begin |
| 56 | + fstream = input_file(aspose_license_file) |
| 57 | + license = Rjb::import('com.aspose.api.License').new() |
| 58 | + license.setLicense(fstream) |
| 59 | + rescue Exception => ex |
| 60 | + logger = Logger.new(STDOUT) |
| 61 | + logger.level = Logger::ERROR |
| 62 | + logger.error("Could not load the license file : #{ex}") |
| 63 | + fstream.close() if fstream |
| 64 | + end |
| 65 | + end |
| 66 | + |
| 67 | + def self.configure_aspose_cells config |
| 68 | + Asposecellsjava.aspose_cells_config = config |
| 69 | + end |
| 70 | + |
| 71 | +end |
0 commit comments