pkm_level2_converter 0.1.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'types'
4
+
5
+ # Generische Pool-Klasse
6
+ class Pool
7
+ # MOVED TO PKM-Class
8
+ def self.parse_pool(xml_node, path_of_pool, type_of_pool)
9
+ # pool = @@pools[poolSymbol]
10
+ node = xml_node.at_xpath(path_of_pool)
11
+ type_of_pool.new(node)
12
+ end
13
+
14
+ def initialize(xml_node, type)
15
+ @type = type
16
+ @key = xml_node['key'].to_i
17
+ children = xml_node.children
18
+ @items = children.map.with_index { |parameter, index| type.new(parameter, @key, index) }
19
+ end
20
+
21
+ attr_reader :items, :key
22
+
23
+ def get_by_reference(key)
24
+ @items.find { |item| item.key == key }
25
+ end
26
+
27
+ def empty?
28
+ (@items.nil? || @items.empty?)
29
+ end
30
+
31
+ def length
32
+ @items.length
33
+ end
34
+ end
35
+
36
+ # Spezifische Pool-Klassen
37
+
38
+ # Ein XML-Ausgangskontext-Pool kodiert die Auflistung aller Ausgangskontext einesTarifmoduls.
39
+ class AusgangskontextPool < Pool
40
+ def self.type
41
+ Ausgangskontext
42
+ end
43
+
44
+ def initialize(xml_node)
45
+ super(xml_node, AusgangskontextPool.type)
46
+ end
47
+
48
+ def get_by_parameter(parameter)
49
+ @items.select { |ausgangskontext| ausgangskontext.contains_parameter?(parameter) }
50
+ end
51
+ end
52
+
53
+ # Ein XML-Ausgangsparameter-Poolkodiert die Auflistung allerAusgangsparametereinerAusgangsschnittstelle.
54
+ class AusgangsparameterPool < Pool
55
+ # TODO... Das passt noch nicht zur Pool-Implementierung
56
+ def self.type
57
+ Ausgangsparameter
58
+ end
59
+
60
+ def initialize(xml_node)
61
+ super(xml_node, AusgangsparameterPool.type)
62
+ end
63
+ end
64
+
65
+ # Ein XML-Ausgangsschnittstelle-Poolkodiert die Auflistung allerAusgangsschnittstellen einesTarifmoduls.
66
+ class AusgangsschnittstellenPool < Pool
67
+ def self.type
68
+ Ausgangsschnittstelle
69
+ end
70
+
71
+ def initialize(xml_node)
72
+ super(xml_node, AusgangsschnittstellenPool.type)
73
+ end
74
+
75
+ def cr374
76
+ @items.select(&:cr374?)
77
+ end
78
+
79
+ # def cr374_asst_pool_set
80
+ # cr374.to_set
81
+ # end
82
+
83
+ def cr374?
84
+ !cr374.empty?
85
+ end
86
+ end
87
+
88
+ # Ein XML-Sprache-Pool kodiert die Auflistung aller unterstützten Sprachen eines Tarifmoduls.
89
+ class SprachePool < Pool
90
+ def self.type
91
+ Sprache
92
+ end
93
+
94
+ def initialize(xml_node)
95
+ super(xml_node, SprachePool.type)
96
+ end
97
+ end
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pry'
4
+
5
+ # Generische Klasse Poolelement
6
+ class Poolelement
7
+ class << self
8
+ def add(instance)
9
+ @all_instances ||= []
10
+ @all_instances.push(instance)
11
+ end
12
+
13
+ def get_by_ref(ref)
14
+ @all_instances.find { |element| element.key == ref }
15
+ end
16
+ attr_reader :all_instances
17
+ end
18
+
19
+ def initialize(key, index)
20
+ @key = key + index
21
+ Poolelement.add(self)
22
+ end
23
+
24
+ attr_reader :key
25
+ end
26
+
27
+ # Pool-Elemente
28
+
29
+ # Ein Ausgangsparameter identifiziert die Rolle einer Information, die von der Geräte-Software zur Anzeige,
30
+ # allgemeinen Ausgabe oder Steuerung verwendet wird.
31
+ class Ausgangsparameter < Poolelement
32
+ def initialize(node, index, key)
33
+ super(key, index)
34
+ @nr = node.at('./xmlns:nr').text.to_i
35
+ @name = node.at('./xmlns:name').text
36
+ end
37
+
38
+ attr_reader :nr, :name
39
+
40
+ def cr374?
41
+ (nr >= 9000 && nr <= 9999)
42
+ end
43
+ end
44
+
45
+ # Eine Ausgangsschnittstelle identifiziert eine Schnittstelle der Geräte-Software, über welche
46
+ # Informationen von einer Strategie an die Geräte-Software übergegeben werden können.
47
+ class Ausgangsschnittstelle < Poolelement
48
+ def initialize(asst, key, index)
49
+ super(key, index)
50
+ @nr = asst.at('nr').text.to_i
51
+ @name = asst.at('name').text
52
+ parameter_pool_raw = asst.at_xpath('//xmlns:parameter-pool')
53
+ @parameter_pool = AusgangsparameterPool.new(parameter_pool_raw)
54
+ end
55
+
56
+ attr_reader :parameter_pool, :nr, :name
57
+
58
+ def cr374?
59
+ (@nr == 3 || @nr == 4)
60
+ end
61
+
62
+ def ermittle_alle_cr374_ausgangskontexte_zu_ausgangsparametern(ausgangskontext_pool)
63
+ filtered_parameters = @parameter_pool.items.select(&:cr374?).map do |parameter|
64
+ puts "Parameter Nr. #{parameter.nr} (\"#{parameter.name}\")"
65
+ ausgangskontext_pool.get_by_parameter(parameter)
66
+ end
67
+ filtered_parameters.flatten.to_set
68
+ end
69
+ end
70
+
71
+ # Eine Sprache beschreibt das natürliche Format, in dem eine Ausgabe an den Nutzer erfolgt.
72
+ class Sprache < Poolelement
73
+ def initialize(asst, key, index)
74
+ super(key, index)
75
+ @nr = asst.at('nr').text.to_i
76
+ @name = asst.at('name').text
77
+ end
78
+ end
79
+ # <ausgangskontext-pool key="10">
80
+ # <item>
81
+ # <name>AK-Deutschlandticket-PV</name>
82
+ # <sprache>
83
+ # <ref>3</ref>
84
+ # </sprache>
85
+ # <parameter>
86
+ # <ref>5</ref>
87
+ # <ref>6</ref>
88
+ # <ref>7</ref>
89
+ # <ref>8</ref>
90
+ # <ref>9</ref>
91
+ # </parameter>
92
+ # </item>
93
+ # </ausgangskontext-pool>
94
+
95
+ # Ein Ausgangstext steht für eine statische Information, die von einem als-Text-ausgebbaren Datenelement im Rahmen eines
96
+ # Ausgangskontexts bereitgestellt wird.
97
+ class Ausgangskontext
98
+ def initialize(node, index, key)
99
+ @key = key + index
100
+ @name = node.at('./xmlns:name').text
101
+ @sprache = node.xpath('./xmlns:sprache/xmlns:ref').map do |sprache_ref|
102
+ Poolelement.get_by_ref(sprache_ref.text.to_i)
103
+ end
104
+ @parameter = node.xpath('./xmlns:parameter/xmlns:ref').map do |parameter_ref|
105
+ Poolelement.get_by_ref(parameter_ref.text.to_i)
106
+ end
107
+ # ausgangsparameter # 1..N
108
+ end
109
+ attr_reader :key, :name, :sprache, :parameter
110
+
111
+ def contains_parameter?(parameter)
112
+ @parameter.find { |p| p == parameter }
113
+ end
114
+ end
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- module PkmLevel2Converter
4
- VERSION = "0.1.2"
5
- end
1
+ # frozen_string_literal: true
2
+
3
+ module PkmLevel2Converter
4
+ VERSION = '0.3.1'
5
+ end
@@ -1,107 +1,11 @@
1
- # frozen_string_literal: true
2
- require 'nokogiri'
3
- require_relative "pkm_level2_converter/version"
4
-
5
- module PkmLevel2Converter
6
- class Error < StandardError; end
7
- class Converter
8
- def initialize(file_name)
9
- @filename = file_name
10
- end
11
-
12
- def filename
13
- @filename
14
- end
15
-
16
- def convertFileName()
17
- file_name = @filename
18
- #puts file_name
19
- f = file_name.split('_')
20
- #puts f
21
- org_id_l3 = f[1].to_i
22
- #puts org_id_l3
23
- org_id_l2 = org_id_l3 + 0x8000
24
- #puts org_id_l2
25
- f[1] = org_id_l2.to_s
26
- #puts f.join("_")
27
- return f.join("_")
28
- end
29
-
30
- def save_file(file)
31
- #SAVE FILE with NEW name
32
- new_file_name = self.convertFileName()
33
- output = File.open( new_file_name, "w" )
34
- output << file.to_xml(:indent_text => "", :indent => 0).gsub(/>\n/,">")
35
- output.close
36
- puts "File saved as: #{new_file_name}"
37
- end
38
-
39
- def check_xsd(xsd, xml)
40
- puts "Check XML-Schema..."
41
- xsd = Nokogiri::XML::Schema(xsd)
42
- error = xsd.validate(xml)
43
- if error.empty?
44
- puts "XML-Schema is valid."
45
- return true
46
- else
47
- puts "XML-Schema is invalid."
48
- error.each do |e|
49
- puts e.message
50
- end
51
- return false
52
- end
53
- end
54
-
55
- def convert_pkm()
56
- orig_file_name = @filename
57
- if File.file?(orig_file_name)
58
- @xml_doc = File.open(orig_file_name) { |f| Nokogiri::XML(f) }
59
- convert_ids
60
- if xml_is_valid_pkm(@xml_doc)
61
- save_file(@xml_doc)
62
- end
63
- else
64
- puts "File ('#{orig_file_name}') not found."
65
- end
66
- end
67
-
68
- def xml_is_valid_pkm(xml)
69
- #xsd = File.read("./ka/pkm/1/XML-Schema_PKM.xsd")
70
- file_path = File.join(File.dirname(__FILE__), './pkm_level2_converter/ka/pkm/1/XML-Schema_PKM.xsd')
71
- xsd = File.read(file_path)
72
- return self.check_xsd(xsd,xml)
73
- end
74
-
75
- def convert_xpath_l3_id(node, x_path)
76
- map = node.at_xpath x_path
77
- id = map.content.to_i
78
- map.content = (id + 0x8000).to_s
79
- end
80
-
81
- def convert_ids
82
- #Organisations-ID des DL:
83
- #dl-km/organisation/id
84
- convert_xpath_l3_id(@xml_doc, 'xmlns:dl-km/xmlns:organisation/xmlns:id')
85
- puts "Converted following IDs:"
86
- puts "/dl-km/organisation/id = " + @xml_doc.xpath('/xmlns:dl-km/xmlns:organisation/xmlns:id').text
87
-
88
- @xml_doc.xpath('/xmlns:dl-km/xmlns:kontrollmodul-pool/xmlns:item').each do |node|
89
-
90
- #Organisations-ID des PV:
91
- #dl-km/kontrollmodul-pool/item/moduldaten/organisation/id
92
- convert_xpath_l3_id(node, 'xmlns:moduldaten/xmlns:organisation/xmlns:id')
93
- puts "# dl-km/kontrollmodul-pool/item/moduldaten/organisation/id = " + node.xpath('xmlns:moduldaten/xmlns:organisation/xmlns:id').text
94
- #Für PVKM zulässige Organisations-IDs der DL:
95
- #dl-km/kontrollmodul-pool/item/moduldaten/organisation-pool/item/id
96
- node.xpath('xmlns:moduldaten/xmlns:organisation-pool/xmlns:item').each do |child|
97
- convert_xpath_l3_id(child, 'xmlns:id')
98
- puts "## dl-km/kontrollmodul-pool/item/moduldaten/organisation-pool/item/id = " + child.xpath('xmlns:id').text
99
- end
100
- end
101
- #Für Anzeige von KVP als Klartext:
102
- #dl-km/kontrollmodul-pool/item/moduldaten/nummerninterpretation-pool/item[nr=2]/nummerntext-pool/item/nr
103
- end
104
-
105
- end
106
-
107
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'pkm_level2_converter/version'
4
+ require_relative 'pkm_level2_converter/pkm'
5
+ require_relative 'pkm_level2_converter/pkm_xml'
6
+
7
+ module PkmLevel2Converter
8
+ class Error < StandardError; end
9
+ PKM = ::PKM
10
+ PKMXml = ::PKMXml
11
+ end
@@ -1,39 +1,38 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/pkm_level2_converter/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "pkm_level2_converter"
7
- spec.version = PkmLevel2Converter::VERSION
8
- spec.authors = ["Francis Doege"]
9
- spec.email = ["hello@francisdoege.com"]
10
-
11
- spec.summary = "Converts PKM modules for testing"
12
- # spec.description = "TODO: Write a longer description or delete this line."
13
- spec.homepage = "https://rubygems.org/gems/pkm_level2_converter"
14
- spec.license = "MIT"
15
- spec.required_ruby_version = ">= 2.4.0"
16
-
17
- #spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
18
-
19
- spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = "https://github.com/justusjonas74/pkm_level2_converter"
21
- #spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
22
-
23
- # Specify which files should be added to the gem when it is released.
24
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
27
- end
28
- spec.bindir = "exe"
29
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
- spec.require_paths = ["lib"]
31
-
32
- # Uncomment to register a new dependency of your gem
33
- # spec.add_dependency "example-gem", "~> 1.0"
34
- spec.add_dependency "nokogiri", "~> 1.10.4"
35
- spec.add_development_dependency "rspec", "~> 3.2"
36
-
37
- # For more information and examples about making a new gem, checkout our
38
- # guide at: https://bundler.io/guides/creating_gem.html
39
- end
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/pkm_level2_converter/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'pkm_level2_converter'
7
+ spec.version = PkmLevel2Converter::VERSION
8
+ spec.authors = ['Francis Doege']
9
+ spec.email = ['hello@francisdoege.com']
10
+
11
+ spec.summary = 'Converts PKM modules for testing'
12
+ # spec.description = "TODO: Write a longer description or delete this line."
13
+ spec.homepage = 'https://rubygems.org/gems/pkm_level2_converter'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = '>= 3.2.2'
16
+
17
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
18
+
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = 'https://github.com/justusjonas74/pkm_level2_converter'
21
+ # spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
22
+
23
+ # Specify which files should be added to the gem when it is released.
24
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
27
+ end
28
+ spec.bindir = 'exe'
29
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
+ spec.require_paths = ['lib']
31
+
32
+ # Uncomment to register a new dependency of your gem
33
+ # spec.add_dependency "example-gem", "~> 1.0"
34
+
35
+ # For more information and examples about making a new gem, checkout our
36
+ # guide at: https://bundler.io/guides/creating_gem.html
37
+ spec.metadata['rubygems_mfa_required'] = 'true'
38
+ end
metadata CHANGED
@@ -1,44 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pkm_level2_converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Doege
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-18 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: nokogiri
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 1.10.4
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: 1.10.4
27
- - !ruby/object:Gem::Dependency
28
- name: rspec
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '3.2'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '3.2'
41
- description:
11
+ date: 2023-07-21 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
42
14
  email:
43
15
  - hello@francisdoege.com
44
16
  executables:
@@ -49,6 +21,8 @@ files:
49
21
  - ".gitignore"
50
22
  - ".rspec"
51
23
  - ".rspec_status"
24
+ - ".rubocop.yml"
25
+ - ".ruby-version"
52
26
  - Gemfile
53
27
  - Gemfile.lock
54
28
  - LICENSE.txt
@@ -57,8 +31,6 @@ files:
57
31
  - bin/console
58
32
  - bin/setup
59
33
  - exe/pkmlevel2
60
- - lib/conv_PV_KM.rb
61
- - lib/conv_RN_TM.rb
62
34
  - lib/pkm_level2_converter.rb
63
35
  - lib/pkm_level2_converter/ka/pkm/1/XML-Schema_PKM.xsd
64
36
  - lib/pkm_level2_converter/ka/pkm/1/XML-Schema_PKM_TX.xsd
@@ -66,6 +38,10 @@ files:
66
38
  - lib/pkm_level2_converter/ka/pkm/2/XML-Schema_PKM.xsd.MD5
67
39
  - lib/pkm_level2_converter/ka/pkm/2/XML-Schema_PKM_TX.xsd
68
40
  - lib/pkm_level2_converter/ka/pkm/2/XML-Schema_PKM_TX.xsd.MD5
41
+ - lib/pkm_level2_converter/pkm.rb
42
+ - lib/pkm_level2_converter/pkm_xml.rb
43
+ - lib/pkm_level2_converter/pools.rb
44
+ - lib/pkm_level2_converter/types.rb
69
45
  - lib/pkm_level2_converter/version.rb
70
46
  - pkm_level2_converter.gemspec
71
47
  homepage: https://rubygems.org/gems/pkm_level2_converter
@@ -74,7 +50,8 @@ licenses:
74
50
  metadata:
75
51
  homepage_uri: https://rubygems.org/gems/pkm_level2_converter
76
52
  source_code_uri: https://github.com/justusjonas74/pkm_level2_converter
77
- post_install_message:
53
+ rubygems_mfa_required: 'true'
54
+ post_install_message:
78
55
  rdoc_options: []
79
56
  require_paths:
80
57
  - lib
@@ -82,15 +59,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
59
  requirements:
83
60
  - - ">="
84
61
  - !ruby/object:Gem::Version
85
- version: 2.4.0
62
+ version: 3.2.2
86
63
  required_rubygems_version: !ruby/object:Gem::Requirement
87
64
  requirements:
88
65
  - - ">="
89
66
  - !ruby/object:Gem::Version
90
67
  version: '0'
91
68
  requirements: []
92
- rubygems_version: 3.1.6
93
- signing_key:
69
+ rubygems_version: 3.4.16
70
+ signing_key:
94
71
  specification_version: 4
95
72
  summary: Converts PKM modules for testing
96
73
  test_files: []
data/lib/conv_PV_KM.rb DELETED
@@ -1,75 +0,0 @@
1
- require 'nokogiri'
2
- #require 'pry'
3
- require_relative 'check_xsd'
4
-
5
- def convertFileName(file_name)
6
- f = file_name.split('_')
7
- org_id_l3 = f[1].to_i
8
- org_id_l2 = org_id_l3 + 0x8000
9
- f[1] = org_id_l2.to_s
10
- return f.join("_")
11
- end
12
-
13
- def safe_file(file, new_file_name)
14
- #SAVE FILE with NEW name
15
- output = File.open( new_file_name, "w" )
16
- output << file.to_xml(:indent_text => "", :indent => 0).gsub(/>\n/,">")
17
- output.close
18
- puts "File saved as: #{new_file_name}"
19
-
20
- end
21
-
22
- def convert_pkm(orig_file_name)
23
- if File.file?(orig_file_name)
24
- new_file_name = convertFileName(orig_file_name)
25
- @xml_doc = File.open(orig_file_name) { |f| Nokogiri::XML(f) }
26
- convert_ids
27
- if xml_is_valid_pkm(@xml_doc)
28
- safe_file(@xml_doc, new_file_name)
29
- end
30
- else
31
- puts "File ('#{orig_file_name}') not found."
32
- end
33
- end
34
-
35
- def xml_is_valid_pkm(xml)
36
- #xsd = File.read("./ka/pkm/1/XML-Schema_PKM.xsd")
37
- file_path = File.join(File.dirname(__FILE__), './ka/pkm/1/XML-Schema_PKM.xsd')
38
- xsd = File.read(file_path)
39
- return check_xsd(xsd,xml)
40
- end
41
-
42
- def convert_xpath_l3_id(node, x_path)
43
- map = node.at_xpath x_path
44
- id = map.content.to_i
45
- map.content = (id + 0x8000).to_s
46
- end
47
-
48
- def convert_ids
49
- #Organisations-ID des DL:
50
- #dl-km/organisation/id
51
- # convert_xpath_l3_id(@xml_doc, 'xmlns:dl-km/xmlns:organisation/xmlns:id')
52
- # puts "Converted following IDs:"
53
- # puts "/dl-km/organisation/id = " + @xml_doc.xpath('/xmlns:dl-km/xmlns:organisation/xmlns:id').text
54
-
55
- # @xml_doc.xpath('/xmlns:dl-km/xmlns:kontrollmodul-pool/xmlns:item').each do |node|
56
- node = @xml_doc.xpath('/xmlns:pv-km')
57
- #Organisations-ID des PV:
58
- #dl-km/kontrollmodul-pool/item/moduldaten/organisation/id
59
- # convert_xpath_l3_id(node, '/xmlns:pv-km/xmlns:organisation/xmlns:id')
60
- convert_xpath_l3_id(node, 'xmlns:organisation/xmlns:id')
61
- puts "# pv-km/organisation/id = " + node.xpath('xmlns:organisation/xmlns:id').text
62
- #Für PVKM zulässige Organisations-IDs der DL:
63
- #dl-km/kontrollmodul-pool/item/moduldaten/organisation-pool/item/id
64
- node.xpath('xmlns:organisation-pool/xmlns:item').each do |child|
65
- convert_xpath_l3_id(child, 'xmlns:id')
66
- puts "## pv-km/organisation-pool/item/id = " + child.xpath('xmlns:id').text
67
- end
68
- # end
69
- #Für Anzeige von KVP als Klartext:
70
- #dl-km/kontrollmodul-pool/item/moduldaten/nummerninterpretation-pool/item[nr=2]/nummerntext-pool/item/nr
71
- end
72
-
73
- orig_file_name = ARGV.first
74
- convert_pkm(orig_file_name)
75
-
data/lib/conv_RN_TM.rb DELETED
@@ -1,73 +0,0 @@
1
- require 'nokogiri'
2
- #require 'pry'
3
- require_relative 'check_xsd'
4
-
5
- def convertFileName(file_name)
6
- f = file_name.split('_')
7
- org_id_l3 = f[1].to_i
8
- org_id_l2 = org_id_l3 + 0x8000
9
- f[1] = org_id_l2.to_s
10
- return f.join("_")
11
- end
12
-
13
- def safe_file(file, new_file_name)
14
- #SAVE FILE with NEW name
15
- output = File.open( new_file_name, "w" )
16
- output << file.to_xml(:indent_text => "", :indent => 0).gsub(/>\n/,">")
17
- output.close
18
- puts "File saved as: #{new_file_name}"
19
-
20
- end
21
-
22
- def convert_pkm(orig_file_name)
23
- if File.file?(orig_file_name)
24
- new_file_name = convertFileName(orig_file_name)
25
- @xml_doc = File.open(orig_file_name) { |f| Nokogiri::XML(f) }
26
- convert_ids
27
- if xml_is_valid_pkm(@xml_doc)
28
- safe_file(@xml_doc, new_file_name)
29
- end
30
- else
31
- puts "File ('#{orig_file_name}') not found."
32
- end
33
- end
34
-
35
- def xml_is_valid_pkm(xml)
36
- xsd = File.read("ka/pkm/2/XML-Schema_PKM.xsd")
37
- return check_xsd(xsd,xml)
38
- end
39
-
40
- def convert_xpath_l3_id(node, x_path)
41
- map = node.at_xpath x_path
42
- id = map.content.to_i
43
- map.content = (id + 0x8000).to_s
44
- end
45
-
46
- def convert_ids
47
- #Organisations-ID des RN:
48
- #rntm/herausgeber/nr
49
- convert_xpath_l3_id(@xml_doc, 'xmlns:rntm/xmlns:herausgeber/xmlns:nr')
50
- puts "Converted following IDs:"
51
- puts "rntm/herausgeber/nr = " + @xml_doc.xpath('xmlns:rntm/xmlns:herausgeber/xmlns:nr').text
52
-
53
- @xml_doc.xpath('/xmlns:rntm/xmlns:tarifmodul-pool/xmlns:item').each do |node|
54
-
55
- #Organisations-ID des PV:
56
- #dl-km/kontrollmodul-pool/item/moduldaten/organisation/id
57
-
58
- convert_xpath_l3_id(node, 'xmlns:tarifmodul/xmlns:herausgeber/xmlns:nr')
59
- puts "# /rntm/tarifmodul-pool/item/tarifmodul/herausgeber/nr/ = " + node.xpath('xmlns:tarifmodul/xmlns:herausgeber/xmlns:nr').text
60
- #Für PVKM zulässige Organisations-IDs der DL:
61
- #dl-km/kontrollmodul-pool/item/moduldaten/organisation-pool/item/id
62
- node.xpath('xmlns:tarifmodul/xmlns:organisation-pool/xmlns:item').each do |child|
63
- convert_xpath_l3_id(child, 'xmlns:nr')
64
- puts "## /rntm/tarifmodul-pool/item/tarifmodul/organisation-pool/item/nr = " + child.xpath('xmlns:nr').text
65
- end
66
- end
67
- #Für Anzeige von KVP als Klartext:
68
- #dl-km/kontrollmodul-pool/item/moduldaten/nummerninterpretation-pool/item[nr=2]/nummerntext-pool/item/nr
69
- end
70
-
71
- orig_file_name = ARGV.first
72
- convert_pkm(orig_file_name)
73
-