Class: ORE::Proxy

Inherits:
ActiveTriples::Resource
  • Object
show all
Includes:
ActiveFedora::RDF::Indexing, Digest, Solrizer::Common
Defined in:
app/models/concerns/ore/proxy.rb

Defined Under Namespace

Modules: Id

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(proxy_resource_uri, graph_context_uri, *args) ⇒ Proxy

Returns a new instance of Proxy.



57
58
59
60
61
62
63
# File 'app/models/concerns/ore/proxy.rb', line 57

def initialize(proxy_resource_uri, graph_context_uri, *args)
  proxy_resource_uri = RDF::URI(proxy_resource_uri)
  super(proxy_resource_uri,*args)
  update(RDF::Statement(rdf_subject,RDF.nodeID,proxy_resource_uri))
  self.proxyIn = graph_context_uri
  self.proxyFor = proxy_resource_uri
end

Class Method Details

.typeObject



22
23
24
# File 'app/models/concerns/ore/proxy.rb', line 22

def self.type
  RDF::ORE.Proxy
end

Instance Method Details

#apply_prefix(name) ⇒ Object

override to obscure attempts to identify a containing Datastream



66
67
68
# File 'app/models/concerns/ore/proxy.rb', line 66

def apply_prefix(name)
  name
end

#fieldsObject

returns a Hash, e.g.: => {:values => [], :type => :something, :behaviors => [], …}



94
95
96
97
98
99
100
101
# File 'app/models/concerns/ore/proxy.rb', line 94

def fields
  field_map = {}.with_indifferent_access
  insert_field_map(:type, type_config(),field_map)
  self.class.properties.each do |name, config|
    insert_field_map(name, config, field_map)
  end
  field_map
end

#insert_field_map(name, config, field_map = {}) ⇒ Object



103
104
105
106
107
108
109
110
111
112
113
# File 'app/models/concerns/ore/proxy.rb', line 103

def insert_field_map(name, config, field_map={})
  type = config[:type]
  behaviors = config[:behaviors]
  return field_map unless type and behaviors
  return field_map if config[:class_name] && config[:class_name] < ActiveFedora::Base
  resource.query(:subject => rdf_subject, :predicate => config[:predicate]).each_statement do |statement|
    field_map[name] ||= {:values => [], :type => type, :behaviors => behaviors, term: config[:term]}
    field_map[name][:values] << statement.object.to_s
  end
  field_map
end

#resourceObject



70
71
72
# File 'app/models/concerns/ore/proxy.rb', line 70

def resource
  self
end

#to_jsonObject



74
75
76
# File 'app/models/concerns/ore/proxy.rb', line 74

def to_json
  to_solr.with_indifferent_access
end

#to_solr(solr_doc = {}) ⇒ Object

:nodoc:



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'app/models/concerns/ore/proxy.rb', line 78

def to_solr(solr_doc = {}) # :nodoc:
  fields.each do |field_key, field_info|
    values = resource.get_values(field_key.to_sym).result || []
    values = [values] unless values.is_a? Array
    values.each do |val|
      if val.kind_of? RDF::URI
        val = val.to_s 
      elsif val.kind_of? ActiveTriples::Resource
        val = val.solrize
      end
      self.class.create_and_insert_terms(apply_prefix(field_key), val, field_info[:behaviors], solr_doc)
    end
  end
  solr_doc
end

#type_configObject



115
116
117
118
119
120
121
# File 'app/models/concerns/ore/proxy.rb', line 115

def type_config
  @type_node_config ||= begin
    config = ActiveTriples::NodeConfig.new(:type, RDF.type)
    config.with_index {|ix| ix.as :symbol }
    config
  end
end