dwc-archive 0.4.3 → 0.4.4

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.4.4
data/lib/dwc-archive.rb CHANGED
@@ -28,7 +28,7 @@ class DarwinCore
28
28
 
29
29
  VERSION = open(File.join(File.dirname(__FILE__), '..', 'VERSION')).readline.strip
30
30
 
31
- attr_reader :archive, :core, :metadata, :extensions
31
+ attr_reader :archive, :core, :metadata, :extensions, :classification_normalizer
32
32
  alias :eml :metadata
33
33
 
34
34
  DEFAULT_TMP_DIR = "/tmp"
@@ -57,7 +57,8 @@ class DarwinCore
57
57
  # generates a hash from a classification data with path to each node, list of synonyms and vernacular names.
58
58
  def normalize_classification(verbose = false)
59
59
  return nil unless has_parent_id?
60
- DarwinCore::ClassificationNormalizer.new(self, verbose).normalize
60
+ @classification_normalizer ||= DarwinCore::ClassificationNormalizer.new(self, verbose)
61
+ @classification_normalizer.normalize
61
62
  end
62
63
 
63
64
  def has_parent_id?
@@ -18,6 +18,8 @@ class DarwinCore
18
18
  class VernacularNormalized < Struct.new(:name, :language);end
19
19
 
20
20
  class ClassificationNormalizer
21
+ attr_accessor :verbose
22
+ attr_reader :error_names
21
23
 
22
24
  def initialize(dwc_instance, verbose = false)
23
25
  @dwc = dwc_instance
@@ -26,7 +28,8 @@ class DarwinCore
26
28
  @res = {}
27
29
  @parser = ParsleyStore.new(1,2)
28
30
  @verbose = verbose
29
- @verbose_count = 1000
31
+ @verbose_count = 10000
32
+ @error_names = []
30
33
  end
31
34
 
32
35
  def normalize
@@ -101,7 +104,11 @@ class DarwinCore
101
104
  def calculate_classification_path
102
105
  @res.each do |taxon_id, taxon|
103
106
  next if taxon.classification_path
104
- get_classification_path(taxon)
107
+ begin
108
+ get_classification_path(taxon)
109
+ rescue DarwinCore::ParentNotCurrentError
110
+ next
111
+ end
105
112
  end
106
113
  end
107
114
 
@@ -110,7 +117,13 @@ class DarwinCore
110
117
  if DarwinCore.nil_field?(taxon.parent_id)
111
118
  taxon.classification_path = [taxon.current_name_canonical]
112
119
  else
113
- parent_cp = @res[taxon.parent_id].classification_path
120
+ begin
121
+ parent_cp = @res[taxon.parent_id].classification_path
122
+ rescue NoMethodError #name has a parent which is not a current name
123
+ error = "The parent of the taxon \'#{taxon.current_name}\' is deprecated"
124
+ @error_names << {:name => taxon, :error => error}
125
+ raise DarwinCore::ParentNotCurrentError, error
126
+ end
114
127
  if parent_cp
115
128
  taxon.classification_path = parent_cp + [taxon.current_name_canonical]
116
129
  else
@@ -156,3 +169,4 @@ class DarwinCore
156
169
  end
157
170
  end
158
171
 
172
+
@@ -6,4 +6,5 @@ class DarwinCore
6
6
  class CoreFileError < Error; end
7
7
  class ExtensionFileError < Error; end
8
8
  class GeneratorError < Error; end
9
+ class ParentNotCurrentError < Error; end
9
10
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dwc-archive
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 4
9
- - 3
10
- version: 0.4.3
9
+ - 4
10
+ version: 0.4.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dmitry Mozzherin
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-13 00:00:00 -04:00
18
+ date: 2010-09-14 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency