dor-services 6.2.0 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9ab63108ab2c8ddd29600d7a9facf709a67dc52474d7c0de6becac108664807
4
- data.tar.gz: 332ce5d6ceef2432a7135788bc87de7d28ec108ff9820bc5c4e253ba0f8f700a
3
+ metadata.gz: 8610285f6083a621745b30d7bd063bf732e33052ff2f8be6ea6fd5f976bbcfe1
4
+ data.tar.gz: 0f235f97bdc5e5102cc675a2789eafce2cf12a10fa1ba06772b69f864707e476
5
5
  SHA512:
6
- metadata.gz: 5742a34bb7b5250df9ca07b5c2b4291f59b165acc1050dbc9f76f9bd185d4a5bd0bc961552ab20e40d13b42c631ac0c0c3c515347ae9476b2811ec5dd75f2ad0
7
- data.tar.gz: edb36ac7a3bcce46e5d3111c4a23bf69fed05afda48c82d42f0bbcbcca564d128b180774d7cf6231e168e7b3301af40a15a552f57f226a97259e582173a1c29d
6
+ metadata.gz: 1bbe06840429b3612a827375b54022fc43ea9318153acc4e4b68c747c025f0e12b460630a211ddbdd0a9030be42a8160ce8eeea30b1ce0872e653364aca02709
7
+ data.tar.gz: 3222dd6c0435580bbf452c9cc89b6ebcedd47d8b279f127dfc256621b9d4ce9ee50b08a2ea4adaf5d3d29bbc2d45f6bd4155a835b5bba5fba24e241c7ffc490d
data/lib/dor-services.rb CHANGED
@@ -90,6 +90,7 @@ module Dor
90
90
  autoload :IdentifiableIndexer
91
91
  autoload :ProcessableIndexer
92
92
  autoload :ReleasableIndexer
93
+ autoload :WorkflowIndexer
93
94
  end
94
95
 
95
96
  # datastreams
@@ -3,6 +3,9 @@
3
3
  module Dor
4
4
  # TODO: class docs
5
5
  class WorkflowDs < ActiveFedora::OmDatastream
6
+ extend Deprecation
7
+ self.deprecation_horizon = 'dor-services version 7.0.0'
8
+
6
9
  before_save :build_location
7
10
  set_terminology do |t|
8
11
  t.root(path: 'workflows')
@@ -38,8 +41,10 @@ module Dor
38
41
 
39
42
  Workflow::Document.new(xml.to_s)
40
43
  end
44
+ deprecation_deprecate get_workflow: 'This has been moved to Argo and will be discontinued'
41
45
 
42
46
  alias [] get_workflow
47
+ deprecation_deprecate :[] => 'This has been moved to Argo and will be discontinued'
43
48
 
44
49
  def ng_xml
45
50
  @ng_xml ||= Nokogiri::XML::Document.parse(content)
@@ -51,7 +56,8 @@ module Dor
51
56
  def content(refresh = false)
52
57
  @content = nil if refresh
53
58
  @content ||= Dor::Config.workflow.client.get_workflow_xml 'dor', pid, nil
54
- rescue Dor::WorkflowException
59
+ rescue Dor::WorkflowException => e
60
+ Dor.logger.warn "Unable to connect to the workflow service #{e}. Falling back to placeholder XML"
55
61
  xml = Nokogiri::XML(%(<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<workflows objectId="#{pid}"/>))
56
62
  digital_object.datastreams.keys.each do |dsid|
57
63
  next unless dsid =~ /WF$/
@@ -76,9 +82,8 @@ module Dor
76
82
  cp.priority.to_i
77
83
  end
78
84
 
79
- def to_solr(solr_doc = {}, *args)
80
- # super solr_doc, *args
81
- workflows.each { |wf| solr_doc = wf.to_solr(solr_doc, *args) }
85
+ def to_solr(solr_doc = {}, *_args)
86
+ # noop - indexing is done by the WorkflowIndexer
82
87
  solr_doc
83
88
  end
84
89
 
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dor
4
+ # Indexes the objects position in workflows
5
+ class WorkflowIndexer
6
+ include SolrDocHelper
7
+
8
+ attr_reader :resource
9
+ def initialize(resource:)
10
+ @resource = resource
11
+ end
12
+
13
+ # @return [Hash] the partial solr document for workflow concerns
14
+ def to_solr
15
+ {}.tap do |solr_doc|
16
+ workflows.each { |wf| solr_doc = wf.to_solr(solr_doc) }
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ # @returns [Array<Dor::WorkflowDocument>]
23
+ def workflows
24
+ resource.workflows.workflows
25
+ end
26
+ end
27
+ end
@@ -15,7 +15,8 @@ module Dor
15
15
  DescribableIndexer,
16
16
  EditableIndexer,
17
17
  IdentifiableIndexer,
18
- ProcessableIndexer
18
+ ProcessableIndexer,
19
+ WorkflowIndexer
19
20
  )
20
21
  end
21
22
  end
@@ -11,7 +11,8 @@ module Dor
11
11
  DescribableIndexer,
12
12
  IdentifiableIndexer,
13
13
  ProcessableIndexer,
14
- ReleasableIndexer
14
+ ReleasableIndexer,
15
+ WorkflowIndexer
15
16
  )
16
17
  end
17
18
  end
@@ -3,6 +3,8 @@
3
3
  module Dor
4
4
  module Preservable
5
5
  extend ActiveSupport::Concern
6
+ extend Deprecation
7
+ self.deprecation_horizon = 'dor-services version 7.0.0'
6
8
 
7
9
  included do
8
10
  has_metadata name: 'provenanceMetadata', type: ProvenanceMetadataDS, label: 'Provenance Metadata'
@@ -21,6 +23,7 @@ module Dor
21
23
  def sdr_ingest_transfer(agreement_id)
22
24
  SdrIngestService.transfer(self, agreement_id)
23
25
  end
26
+ deprecation_deprecate sdr_ingest_transfer: 'Use SdrIngestService.transfer instead'
24
27
 
25
28
  private
26
29
 
@@ -18,7 +18,8 @@ module Dor
18
18
  DescribableIndexer,
19
19
  IdentifiableIndexer,
20
20
  ProcessableIndexer,
21
- ReleasableIndexer
21
+ ReleasableIndexer,
22
+ WorkflowIndexer
22
23
  )
23
24
 
24
25
  has_metadata name: 'technicalMetadata', type: TechnicalMetadataDS, label: 'Technical Metadata', control_group: 'M'
@@ -11,7 +11,8 @@ module Dor
11
11
  DataIndexer,
12
12
  DescribableIndexer,
13
13
  IdentifiableIndexer,
14
- ProcessableIndexer
14
+ ProcessableIndexer,
15
+ WorkflowIndexer
15
16
  )
16
17
  end
17
18
  end
@@ -14,7 +14,8 @@ module Dor
14
14
  DataIndexer,
15
15
  DescribableIndexer,
16
16
  IdentifiableIndexer,
17
- ProcessableIndexer
17
+ ProcessableIndexer,
18
+ WorkflowIndexer
18
19
  )
19
20
 
20
21
  def self.find_by_name(name)
data/lib/dor/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dor
4
- VERSION = '6.2.0'
4
+ VERSION = '6.3.0'
5
5
  end
@@ -67,7 +67,8 @@ module Dor
67
67
  @processes ||=
68
68
  if definition
69
69
  definition.processes.collect do |process|
70
- node = ng_xml.at("/workflow/process[@name = '#{process.name}']")
70
+ nodes = ng_xml.xpath("/workflow/process[@name = '#{process.name}']")
71
+ node = nodes.max { |a, b| a.attr('version').to_i <=> b.attr('version').to_i }
71
72
  process.update!(node, self)
72
73
  end
73
74
  else
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor-services
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.2.0
4
+ version: 6.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Klein
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-01-23 00:00:00.000000000 Z
17
+ date: 2019-01-30 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: active-fedora
@@ -512,6 +512,20 @@ dependencies:
512
512
  - - "~>"
513
513
  - !ruby/object:Gem::Version
514
514
  version: 0.60.0
515
+ - !ruby/object:Gem::Dependency
516
+ name: rubocop-rspec
517
+ requirement: !ruby/object:Gem::Requirement
518
+ requirements:
519
+ - - ">="
520
+ - !ruby/object:Gem::Version
521
+ version: '0'
522
+ type: :development
523
+ prerelease: false
524
+ version_requirements: !ruby/object:Gem::Requirement
525
+ requirements:
526
+ - - ">="
527
+ - !ruby/object:Gem::Version
528
+ version: '0'
515
529
  - !ruby/object:Gem::Dependency
516
530
  name: simplecov
517
531
  requirement: !ruby/object:Gem::Requirement
@@ -609,6 +623,7 @@ files:
609
623
  - lib/dor/indexers/identifiable_indexer.rb
610
624
  - lib/dor/indexers/processable_indexer.rb
611
625
  - lib/dor/indexers/releasable_indexer.rb
626
+ - lib/dor/indexers/workflow_indexer.rb
612
627
  - lib/dor/models/abstract.rb
613
628
  - lib/dor/models/admin_policy_object.rb
614
629
  - lib/dor/models/agreement.rb