gedcomx-jruby 0.1.1 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -2
- data/README.md +3 -3
- data/gedcomx-jruby.gemspec +0 -4
- data/lib/gedcomx-jruby.rb +1 -0
- data/lib/gedcomx.rb +181 -0
- data/lib/gedcomx/date.rb +87 -0
- data/lib/gedcomx/fact.rb +69 -0
- data/lib/gedcomx/field.rb +54 -0
- data/lib/gedcomx/field_value.rb +32 -0
- data/lib/gedcomx/gender.rb +59 -0
- data/lib/gedcomx/identifier.rb +39 -0
- data/lib/gedcomx/iterator.rb +7 -0
- data/lib/gedcomx/jruby/version.rb +1 -1
- data/lib/gedcomx/name.rb +133 -0
- data/lib/gedcomx/name_form.rb +41 -0
- data/lib/gedcomx/name_part.rb +50 -0
- data/lib/gedcomx/person.rb +208 -9
- data/lib/gedcomx/place.rb +42 -0
- data/lib/gedcomx/record.rb +51 -4
- data/lib/gedcomx/relationship.rb +56 -0
- data/lib/gedcomx/resource_reference.rb +39 -0
- data/lib/gedcomx/writer.rb +18 -0
- metadata +30 -16
- data/lib/gedcomx/gedcomx.rb +0 -40
@@ -0,0 +1,32 @@
|
|
1
|
+
module Gedcomx
|
2
|
+
class FieldValue
|
3
|
+
|
4
|
+
def self.java_class
|
5
|
+
Java::OrgGedcomxRecords::FieldValue
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(input = nil)
|
9
|
+
@value = input || self.class.java_class.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def text
|
13
|
+
@value.get_text
|
14
|
+
end
|
15
|
+
|
16
|
+
def text=(input_string)
|
17
|
+
@value.text= input_string
|
18
|
+
end
|
19
|
+
|
20
|
+
def type
|
21
|
+
@value.get_type.to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
def type= (input_type)
|
25
|
+
@value.type = ( input_type.is_a? Gedcomx.java_uri_class ) ? input_type : Gedcomx.new_uri(input_type)
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_java
|
29
|
+
@value
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Gedcomx
|
2
|
+
class Gender
|
3
|
+
|
4
|
+
attr_reader :fields
|
5
|
+
|
6
|
+
def self.java_class
|
7
|
+
Java::OrgGedcomxConclusion::Gender
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.create(attributes = {})
|
11
|
+
new_gender = self.new
|
12
|
+
new_gender.type = attributes[:type] if attributes[:type]
|
13
|
+
attributes[:fields].each { |field| new_gender.add_field(field) } if attributes[:fields].is_a? Array
|
14
|
+
new_gender
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.create_male
|
18
|
+
new_gender = self.new
|
19
|
+
new_gender.type = Gedcomx::TYPES[:male]
|
20
|
+
field = Gedcomx::Field.create( values: [ { text: 'Male', type: Gedcomx::TYPES[:original] } ],
|
21
|
+
type: Gedcomx::TYPES[:gender] )
|
22
|
+
new_gender.add_field(field)
|
23
|
+
new_gender
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.create_female
|
27
|
+
new_gender = self.new
|
28
|
+
new_gender.type = Gedcomx::TYPES[:female]
|
29
|
+
field = Gedcomx::Field.create( values: [ { text: 'Female', type: Gedcomx::TYPES[:original] } ],
|
30
|
+
type: Gedcomx::TYPES[:gender] )
|
31
|
+
new_gender.add_field(field)
|
32
|
+
new_gender
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize(input = nil)
|
36
|
+
@gender = input || self.class.java_class.new
|
37
|
+
@fields = []
|
38
|
+
@fields = @gender.fields.map { |field| Gedcomx::Field.new(field) } if @gender.fields.is_a? Array
|
39
|
+
end
|
40
|
+
|
41
|
+
def add_field(field)
|
42
|
+
return false unless field.is_a? Gedcomx::Field
|
43
|
+
@gender.add_field field.to_java
|
44
|
+
@fields << field
|
45
|
+
end
|
46
|
+
|
47
|
+
def type
|
48
|
+
@gender.get_type.to_s
|
49
|
+
end
|
50
|
+
|
51
|
+
def type= (input_type)
|
52
|
+
@gender.type = ( input_type.is_a? Gedcomx.java_uri_class ) ? input_type : Gedcomx.new_uri(input_type)
|
53
|
+
end
|
54
|
+
|
55
|
+
def to_java
|
56
|
+
@gender
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Gedcomx
|
2
|
+
class Identifier
|
3
|
+
|
4
|
+
def self.java_class
|
5
|
+
Java::OrgGedcomxConclusion::Identifier
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.create(attributes = {})
|
9
|
+
new_identifier = self.new
|
10
|
+
new_identifier.type = attributes[:type] if attributes[:type]
|
11
|
+
new_identifier.value = attributes[:value] if attributes[:value]
|
12
|
+
new_identifier
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(input = nil)
|
16
|
+
@identifier = input || self.class.java_class.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def type
|
20
|
+
@identifier.get_type.to_s
|
21
|
+
end
|
22
|
+
|
23
|
+
def type=(input_type)
|
24
|
+
@identifier.type = ( input_type.is_a? Gedcomx.java_uri_class ) ? input_type : Gedcomx.new_uri(input_type)
|
25
|
+
end
|
26
|
+
|
27
|
+
def value
|
28
|
+
@identifier.get_value.to_s
|
29
|
+
end
|
30
|
+
|
31
|
+
def value=(input_value)
|
32
|
+
@identifier.value = ( input_value.is_a? Gedcomx.java_uri_class ) ? input_value : Gedcomx.new_uri(input_value)
|
33
|
+
end
|
34
|
+
|
35
|
+
def to_java
|
36
|
+
@identifier
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/gedcomx/iterator.rb
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
module Gedcomx
|
3
3
|
class Iterator
|
4
4
|
def initialize(input)
|
5
|
+
unless File.file?(input)
|
6
|
+
input = Gedcomx.input_stream(input)
|
7
|
+
end
|
5
8
|
@iter = org.gedcomx.util.RecordSetIterator.new(input)
|
6
9
|
end
|
7
10
|
|
@@ -16,5 +19,9 @@ module Gedcomx
|
|
16
19
|
def next
|
17
20
|
Record.new(@iter.next)
|
18
21
|
end
|
22
|
+
|
23
|
+
def to_java
|
24
|
+
@iter
|
25
|
+
end
|
19
26
|
end
|
20
27
|
end
|
data/lib/gedcomx/name.rb
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
module Gedcomx
|
2
|
+
class Name
|
3
|
+
|
4
|
+
attr_reader :date, :forms
|
5
|
+
|
6
|
+
def self.java_class
|
7
|
+
Java::OrgGedcomxConclusion::Name
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.build_simple(attributes = {})
|
11
|
+
first = attributes[:first]
|
12
|
+
last = attributes[:last]
|
13
|
+
name_form = Gedcomx::NameForm.new
|
14
|
+
name_form.full_text = attributes[:full] if attributes[:full]
|
15
|
+
|
16
|
+
if first
|
17
|
+
field = Gedcomx::Field.create( first_attributes = {
|
18
|
+
values: [ { text: first, type: Gedcomx::TYPES[:original] } ],
|
19
|
+
type: Gedcomx::TYPES[:given]
|
20
|
+
} )
|
21
|
+
|
22
|
+
name_part = Gedcomx::NamePart.create( first_attributes = {
|
23
|
+
fields: [ field ],
|
24
|
+
value: first,
|
25
|
+
type: Gedcomx::TYPES[:given]
|
26
|
+
})
|
27
|
+
|
28
|
+
name_form.add_part(name_part)
|
29
|
+
end
|
30
|
+
|
31
|
+
if last
|
32
|
+
field = Gedcomx::Field.create( last_attributes = {
|
33
|
+
values: [ { text: last, type: Gedcomx::TYPES[:original] } ],
|
34
|
+
type: Gedcomx::TYPES[:surname]
|
35
|
+
} )
|
36
|
+
|
37
|
+
name_part = Gedcomx::NamePart.create( last_attributes = {
|
38
|
+
fields: [ field ],
|
39
|
+
value: last,
|
40
|
+
type: Gedcomx::TYPES[:surname]
|
41
|
+
})
|
42
|
+
|
43
|
+
name_form.add_part(name_part)
|
44
|
+
end
|
45
|
+
|
46
|
+
attributes[:forms] = [name_form]
|
47
|
+
self.create(attributes)
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.create(attributes = {})
|
51
|
+
new_name = self.new
|
52
|
+
new_name.confidence = attributes[:confidence] if attributes[:confidence]
|
53
|
+
new_name.preferred = attributes[:preferred] if attributes[:preferred]
|
54
|
+
new_name.language = attributes[:language] if attributes[:language]
|
55
|
+
new_name.type = attributes[:type] if attributes[:type]
|
56
|
+
|
57
|
+
if attributes[:type]
|
58
|
+
puts attributes[:type]
|
59
|
+
end
|
60
|
+
|
61
|
+
attributes[:forms].each { |form| new_name.add_form(form) } if attributes[:forms].is_a? Array
|
62
|
+
new_name
|
63
|
+
end
|
64
|
+
|
65
|
+
def initialize(input = nil)
|
66
|
+
@name = input || self.class.java_class.new
|
67
|
+
@date = Gedcomx::Date.new(@name.get_date) if @name.get_date
|
68
|
+
@forms = []
|
69
|
+
@forms = @name.get_name_forms.map { |form| Gedcomx::NameForm.new(form) } if @name.get_name_forms
|
70
|
+
end
|
71
|
+
|
72
|
+
def add_form(form)
|
73
|
+
return false unless form.is_a? Gedcomx::NameForm
|
74
|
+
@name.add_name_form form.to_java
|
75
|
+
@forms << form
|
76
|
+
end
|
77
|
+
|
78
|
+
def date=(date)
|
79
|
+
return false unless date.is_a? Gedcomx::Date
|
80
|
+
@name.date = date.to_java
|
81
|
+
@date = date
|
82
|
+
end
|
83
|
+
|
84
|
+
def confidence
|
85
|
+
@name.get_confidence
|
86
|
+
end
|
87
|
+
|
88
|
+
def confidence=(input_confidence)
|
89
|
+
if input_confidence.is_a? Gedcomx.java_uri_class
|
90
|
+
@name.confidence = input_confidence
|
91
|
+
else
|
92
|
+
@name.confidence = Gedcomx.new_uri(input_confidence)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def preferred?
|
97
|
+
@name.get_preferred
|
98
|
+
end
|
99
|
+
|
100
|
+
def preferred=(input_boolean)
|
101
|
+
return false unless input_boolean.is_a? Boolean
|
102
|
+
@name.preferred = input_boolean
|
103
|
+
end
|
104
|
+
|
105
|
+
def language
|
106
|
+
@name.get_lang
|
107
|
+
end
|
108
|
+
|
109
|
+
def language=(input_language)
|
110
|
+
return false unless input_language.is_a? String
|
111
|
+
@name.lang = input_language
|
112
|
+
end
|
113
|
+
|
114
|
+
def type
|
115
|
+
@name.get_type.to_s
|
116
|
+
end
|
117
|
+
|
118
|
+
def type=(input_type)
|
119
|
+
@name.type = ( input_type.is_a? Gedcomx.java_uri_class ) ? input_type : Gedcomx.new_uri(input_type)
|
120
|
+
end
|
121
|
+
|
122
|
+
def to_java
|
123
|
+
@name
|
124
|
+
end
|
125
|
+
|
126
|
+
# Generates accessor methods for each of the types
|
127
|
+
TYPES.keys.each do |type|
|
128
|
+
define_method type do
|
129
|
+
first_value(type)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Gedcomx
|
2
|
+
class NameForm
|
3
|
+
|
4
|
+
attr_reader :parts
|
5
|
+
|
6
|
+
def self.java_class
|
7
|
+
Java::OrgGedcomxConclusion::NameForm
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.create(attributes = {})
|
11
|
+
new_form = self.new
|
12
|
+
new_form.full_text = attributes[:full_text] if attributes[:full_text]
|
13
|
+
attributes[:fields].each { |field| new_form.add_field field } if attributes[:fields].is_a? Array
|
14
|
+
attributes[:parts].each { |part| new_form.add_part part } if attributes[:parts].is_a? Array
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(input = nil)
|
18
|
+
@name_form = input || self.class.java_class.new
|
19
|
+
@parts = []
|
20
|
+
@parts = @name_form.parts.map { |part| Gedcomx::NamePart.new(part) } if @name_form.parts
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_part(part)
|
24
|
+
return false unless part.is_a? Gedcomx::NamePart
|
25
|
+
@name_form.add_part part.to_java
|
26
|
+
@parts << part
|
27
|
+
end
|
28
|
+
|
29
|
+
def full_text
|
30
|
+
@name_form.get_full_text
|
31
|
+
end
|
32
|
+
|
33
|
+
def full_text=(full_text)
|
34
|
+
@name_form.full_text = full_text
|
35
|
+
end
|
36
|
+
|
37
|
+
def to_java
|
38
|
+
@name_form
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Gedcomx
|
2
|
+
class NamePart
|
3
|
+
|
4
|
+
attr_reader :fields
|
5
|
+
|
6
|
+
def self.java_class
|
7
|
+
Java::OrgGedcomxConclusion::NamePart
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.create(attributes = {})
|
11
|
+
new_part = self.new
|
12
|
+
new_part.value = attributes[:value] if attributes[:value]
|
13
|
+
new_part.type = attributes[:type] if attributes[:type]
|
14
|
+
attributes[:fields].each { |field| new_part.add_field field } if attributes[:fields].is_a? Array
|
15
|
+
new_part
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize(input = nil)
|
19
|
+
@name_part = input || self.class.java_class.new
|
20
|
+
@fields = []
|
21
|
+
@fields = @name_part.fields.map { |field| Gedcomx::Field.new(field) } if @name_part.fields
|
22
|
+
end
|
23
|
+
|
24
|
+
def add_field(field)
|
25
|
+
return false unless field.is_a? Gedcomx::Field
|
26
|
+
@name_part.to_java.add_field field.to_java
|
27
|
+
@fields << field
|
28
|
+
end
|
29
|
+
|
30
|
+
def type
|
31
|
+
@name_part.get_type.to_s
|
32
|
+
end
|
33
|
+
|
34
|
+
def type=(input_type)
|
35
|
+
@name_part.type = ( input_type.is_a? Gedcomx.java_uri_class ) ? input_type : Gedcomx.new_uri(input_type)
|
36
|
+
end
|
37
|
+
|
38
|
+
def value
|
39
|
+
@name_part.get_value
|
40
|
+
end
|
41
|
+
|
42
|
+
def value=(input_value)
|
43
|
+
@name_part.value = input_value
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_java
|
47
|
+
@name_part
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/gedcomx/person.rb
CHANGED
@@ -1,9 +1,34 @@
|
|
1
1
|
module Gedcomx
|
2
|
-
|
3
2
|
class Person
|
4
3
|
|
5
|
-
|
6
|
-
|
4
|
+
attr_reader :names, :fields, :facts, :identifiers, :gender
|
5
|
+
|
6
|
+
def self.java_class
|
7
|
+
Java::OrgGedcomxConclusion::Person
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.create(attributes = {})
|
11
|
+
new_person = self.new
|
12
|
+
new_person.principal = attributes[:principal] if attributes[:principal]
|
13
|
+
new_person.relative_id = attributes[:relative_id] if attributes[:relative_id]
|
14
|
+
attributes[:fields].each { |field| new_person.add_field(field) } if attributes[:fields].is_a? Array
|
15
|
+
attributes[:facts].each { |fact| new_person.add_fact(fact) } if attributes[:facts].is_a? Array
|
16
|
+
attributes[:names].each { |name| new_person.add_name(name) } if attributes[:names].is_a? Array
|
17
|
+
attributes[:identifiers].each { |id| new_person.add_identifier(id) } if attributes[:identifiers].is_a? Array
|
18
|
+
new_person
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(input = nil)
|
22
|
+
@person = input || self.class.java_class.new
|
23
|
+
@gender = Gedcomx::Gender.new(@person.get_gender) if @person.get_gender
|
24
|
+
@identifiers = []
|
25
|
+
@identifiers = @person.identifiers.map { |identifier| Gedcomx::Identifier.new(identifier) } if @person.identifiers
|
26
|
+
@names = []
|
27
|
+
@names = @person.names.map { |name| Gedcomx::Name.new(name) } if @person.names
|
28
|
+
@facts = []
|
29
|
+
@facts = @person.facts.map { |fact| Gedcomx::Fact.new(fact) } if @person.facts
|
30
|
+
@fields = []
|
31
|
+
@fields = @person.fields.map { |field| Gedcomx::Field.new(field) } if @person.fields
|
7
32
|
end
|
8
33
|
|
9
34
|
def male?
|
@@ -16,24 +41,198 @@ module Gedcomx
|
|
16
41
|
gender == TYPES[:female]
|
17
42
|
end
|
18
43
|
|
19
|
-
def
|
20
|
-
return TYPES[:male] if
|
21
|
-
TYPES[:female] if
|
44
|
+
def gender_type
|
45
|
+
return TYPES[:male] if male?
|
46
|
+
TYPES[:female] if female?
|
47
|
+
end
|
48
|
+
|
49
|
+
def set_gender(gender)
|
50
|
+
return false unless gender.is_a? Gedcomx::Gender
|
51
|
+
@person.gender = gender.to_java
|
52
|
+
@gender = gender
|
53
|
+
end
|
54
|
+
|
55
|
+
def set_gender_male
|
56
|
+
set_gender(Gedcomx::Gender.create_male)
|
57
|
+
end
|
58
|
+
|
59
|
+
def set_gender_female
|
60
|
+
set_gender(Gedcomx::Gender.create_female)
|
22
61
|
end
|
23
62
|
|
24
63
|
# Returns a list of name hashes
|
25
|
-
def
|
64
|
+
def names_hash
|
26
65
|
names_list = []
|
27
66
|
@person.names.each do |name_obj|
|
28
67
|
name_obj.name_forms.each do |name_form_obj|
|
29
68
|
name_hash = {}
|
30
69
|
name_hash[:full] = name_form_obj.get_full_text
|
31
|
-
|
32
|
-
|
70
|
+
first_name = name_form_obj.parts.find{|part| part.get_type.to_s == TYPES[:given] }
|
71
|
+
unless first_name.nil?
|
72
|
+
name_hash[:first] = first_name.get_value
|
73
|
+
end
|
74
|
+
last_name = name_form_obj.parts.find{|part| part.get_type.to_s == TYPES[:surname] }
|
75
|
+
unless last_name.nil?
|
76
|
+
name_hash[:last] = last_name.get_value
|
77
|
+
end
|
33
78
|
names_list << name_hash
|
34
79
|
end
|
35
80
|
end
|
36
81
|
names_list
|
37
82
|
end
|
83
|
+
|
84
|
+
def add_fact(fact)
|
85
|
+
return false unless fact.is_a? Gedcomx::Fact
|
86
|
+
@person.add_fact(fact.to_java)
|
87
|
+
@facts << fact
|
88
|
+
end
|
89
|
+
|
90
|
+
def add_field(field)
|
91
|
+
return false unless field.is_a? Gedcomx::Field
|
92
|
+
@person.add_field(field.to_java)
|
93
|
+
@fields << field
|
94
|
+
end
|
95
|
+
|
96
|
+
def add_identifier(identifier)
|
97
|
+
return false unless identifier.is_a? Gedcomx::Identifier
|
98
|
+
@person.add_identifier identifier.to_java
|
99
|
+
@identifiers << identifier
|
100
|
+
end
|
101
|
+
|
102
|
+
def add_name(name)
|
103
|
+
return false unless name.is_a? Gedcomx::Name
|
104
|
+
@person.add_name name.to_java
|
105
|
+
@names << name
|
106
|
+
end
|
107
|
+
|
108
|
+
def add_birthday(info = {})
|
109
|
+
birth_date = Gedcomx::Date.create_simple(info)
|
110
|
+
birth_fact = Gedcomx::Fact.create(date: birth_date, type: Gedcomx::TYPES[:birth])
|
111
|
+
add_fact(birth_fact)
|
112
|
+
end
|
113
|
+
|
114
|
+
def principal?
|
115
|
+
@person.get_principal
|
116
|
+
end
|
117
|
+
|
118
|
+
def principal=(input_boolean)
|
119
|
+
return false unless input_boolean.is_a? Boolean
|
120
|
+
@person.principal = input_boolean
|
121
|
+
end
|
122
|
+
|
123
|
+
def event_date
|
124
|
+
primary_fact = self.primary_fact
|
125
|
+
unless primary_fact.nil?
|
126
|
+
primary_date = primary_fact.get_date
|
127
|
+
return get_date(primary_date) unless primary_date.nil?
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def birth_date
|
132
|
+
birthday_obj = Gedcomx.get_first_fact(@person, :birth)
|
133
|
+
unless birthday_obj.nil?
|
134
|
+
birth_date_obj = birthday_obj.get_date
|
135
|
+
get_date(birth_date_obj)
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def first_value(type)
|
140
|
+
field = Gedcomx.get_first_field(@person, type)
|
141
|
+
unless field.nil?
|
142
|
+
interpreted = Gedcomx.interpreted_value(field)
|
143
|
+
return interpreted.get_text unless interpreted.nil?
|
144
|
+
return nil
|
145
|
+
end
|
146
|
+
fact = Gedcomx.get_first_fact(@person, type)
|
147
|
+
unless fact.nil?
|
148
|
+
fact.get_value
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def location
|
153
|
+
primary_fact = @person.facts.find{|fact| fact.get_primary }
|
154
|
+
|
155
|
+
location = primary_fact.get_place
|
156
|
+
location_params = {}
|
157
|
+
location_params[:name] = location.get_original
|
158
|
+
|
159
|
+
# Fill in the location level definitions
|
160
|
+
location_levels = {}
|
161
|
+
location_fields = @person.fields.select{|field| field.get_type.to_s.include? 'EVENT_PLACE_LEVEL_' }
|
162
|
+
location_fields.each do |field|
|
163
|
+
value = field.get_values[0].get_text
|
164
|
+
level = /EVENT_PLACE_LEVEL_\d/.match(field.get_type.to_s)[0]
|
165
|
+
location_levels[level] = value
|
166
|
+
end
|
167
|
+
|
168
|
+
# Match the location name to the appropriate level
|
169
|
+
location.get_fields.each do |field|
|
170
|
+
value = Gedcomx.interpreted_value(field)
|
171
|
+
|
172
|
+
# Store the level if it is valid
|
173
|
+
level = location_levels[value.label_id]
|
174
|
+
next if level.nil?
|
175
|
+
mapped_value = Gedcomx.location_mapping(level)
|
176
|
+
next if mapped_value.nil?
|
177
|
+
location_params[mapped_value] = value.get_text
|
178
|
+
end
|
179
|
+
|
180
|
+
location_params
|
181
|
+
end
|
182
|
+
|
183
|
+
def relative_id
|
184
|
+
@person.get_id
|
185
|
+
end
|
186
|
+
|
187
|
+
def relative_id=(id_string)
|
188
|
+
return false unless id_string.is_a? String
|
189
|
+
@person.id = id_string
|
190
|
+
end
|
191
|
+
|
192
|
+
def to_java
|
193
|
+
@person
|
194
|
+
end
|
195
|
+
|
196
|
+
# Generates accessor methods for each of the types
|
197
|
+
TYPES.keys.each do |type|
|
198
|
+
define_method type do
|
199
|
+
first_value(type)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
def gender
|
204
|
+
@gender
|
205
|
+
end
|
206
|
+
|
207
|
+
protected
|
208
|
+
|
209
|
+
def method_missing(something)
|
210
|
+
@person.send(something)
|
211
|
+
end
|
212
|
+
|
213
|
+
def primary_fact
|
214
|
+
@person.facts.find{|fact| fact.get_primary }
|
215
|
+
end
|
216
|
+
|
217
|
+
def get_date(date_obj)
|
218
|
+
date_hash = {}
|
219
|
+
year_field = Gedcomx.interpreted_value( Gedcomx.get_first_field(date_obj, :year) )
|
220
|
+
unless year_field.nil?
|
221
|
+
year = year_field.get_text.to_i
|
222
|
+
date_hash[:year] = year
|
223
|
+
end
|
224
|
+
month_field = Gedcomx.interpreted_value( Gedcomx.get_first_field(date_obj, :month) )
|
225
|
+
unless month_field.nil?
|
226
|
+
month = month_field.get_text
|
227
|
+
month = MONTH_MAP[month.downcase.to_sym] unless month.nil?
|
228
|
+
date_hash[:month] = month
|
229
|
+
end
|
230
|
+
day_field = Gedcomx.interpreted_value( Gedcomx.get_first_field(date_obj, :day) )
|
231
|
+
unless day_field.nil?
|
232
|
+
day = day_field.get_text
|
233
|
+
date_hash[:day] = day
|
234
|
+
end
|
235
|
+
date_hash
|
236
|
+
end
|
38
237
|
end
|
39
238
|
end
|