Module: EASupport

Defined in:
lib/ea_support/ea_support.rb

Constant Summary collapse

FIXMAP =
{
  :tags => {
    "EAStub" => proc { |tag, attr| 
      UML13EA::Class.new(:name => attr["name"]) if attr["UMLType"] == "Class"
    }
  }
}
INFO =
XMI11Instantiator::INFO
WARN =
XMI11Instantiator::WARN
ERROR =
XMI11Instantiator::ERROR

Class Method Summary collapse

Class Method Details

.instantiateUML13FromXMI11(envUML, fileName, options = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/ea_support/ea_support.rb', line 24

def self.instantiateUML13FromXMI11(envUML, fileName, options={})
  envUMLEA = RGen::Environment.new
  xmiInst = XMI11Instantiator.new(envUMLEA, FIXMAP, options[:loglevel] || ERROR)
  xmiInst.add_metamodel("omg.org/UML1.3", UML13EA)
  File.open(fileName) do |f|
    xmiInst.instantiate(f.read)
  end
  trans = UML13EAToUML13.new(envUMLEA, envUML)
  trans.transform
  trans.cleanModel if options[:clean_model]
end

.serializeUML13ToXMI11(envUML, fileName, options = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/ea_support/ea_support.rb', line 36

def self.serializeUML13ToXMI11(envUML, fileName, options={})
  envUMLEA = RGen::Environment.new
  
  UML13EA.idStore = options[:keep_ids] ? 
    IdStore.new(File.dirname(fileName)+"/"+File.basename(fileName)+".ids") : IdStore.new
  
  UML13ToUML13EA.new(envUML, envUMLEA).transform
  
  File.open(fileName, "w") do |f|
    xmiSer = RGen::Serializer::XMI11Serializer.new(f)
    xmiSer.setNamespace("UML","omg.org/UML1.3")
    xmiSer.serialize(envUMLEA.find(:class => UML13EA::Model).first, 
      {:documentation => {:exporter => "Enterprise Architect", :exporterVersion => "2.5"}})
  end
  
  UML13EA.idStore.store
end