Class: Xsdvi::Comparison::JavaManager

Inherits:
Object
  • Object
show all
Defined in:
lib/xsdvi/comparison/java_manager.rb

Overview

Manages downloading, caching, and executing Java XsdVi

Constant Summary collapse

JAR_URL =
"https://github.com/metanorma/xsdvi/releases/download/v1.3/xsdvi-1.3.jar"
CACHE_DIR =
File.expand_path("~/.xsdvi")
JAR_FILENAME =
"xsdvi-1.3.jar"
JAR_PATH =
File.join(CACHE_DIR, JAR_FILENAME)
EXPECTED_SIZE =

~2.5MB minimum

2_500_000

Instance Method Summary collapse

Constructor Details

#initializeJavaManager

Returns a new instance of JavaManager.



16
17
18
# File 'lib/xsdvi/comparison/java_manager.rb', line 16

def initialize
  @jar_path = JAR_PATH
end

Instance Method Details

#ensure_jar_availableBoolean

Ensure JAR is available, download if needed

Returns:

  • (Boolean)

    true if JAR is ready



22
23
24
25
26
27
28
29
# File 'lib/xsdvi/comparison/java_manager.rb', line 22

def ensure_jar_available
  return true if jar_valid?

  puts "Downloading Java XsdVi v1.3..."
  download_jar
  verify_jar
  true
end

#generate(xsd_file, output_dir, options = {}) ⇒ Boolean

Generate SVG using Java XsdVi

Parameters:

  • xsd_file (String)

    Path to XSD file

  • output_dir (String)

    Output directory path

  • options (Hash) (defaults to: {})

    Generation options

Options Hash (options):

  • :root (String)

    Root element name

  • :all (Boolean)

    Generate all elements

Returns:

  • (Boolean)

    true if successful



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/xsdvi/comparison/java_manager.rb', line 38

def generate(xsd_file, output_dir, options = {})
  ensure_java_available
  ensure_jar_available

  cmd = build_java_command(xsd_file, output_dir, options)
  puts "Executing Java XsdVi..."

  success = system(cmd)
  raise "Java XsdVi execution failed" unless success

  true
end