class Libis::Metadata::SharepointRecord

Copy of the old SharepointRecord class. Needs inspection and probably a mayor update.

Attributes

node[RW]

Public Class Methods

from_xml(xml_node) click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 171
def self.from_xml(xml_node)

  record = Libis::Metadata::SharepointRecord.new

  xml_node.element_children.each do |node|
    record[node.name.to_sym] = node.content
  end

  record

end
new() click to toggle source
Calls superclass method
# File lib/libis/metadata/sharepoint_record.rb, line 18
def initialize
  @node = nil
  self[:label_prefix] = ''
  super nil
end

Public Instance Methods

accessright_model() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 142
def accessright_model
  return self[:ows_Access_x0020_rights_x0020_model] if self[:ows_Access_x0020_rights_x0020_model]
  return self.node.parent.content.accessright_model if node and node.parent and node.parent.content
  nil
end
content_code() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 117
def content_code
  case simple_content_type
    when :archive
      'a'
    when :map
      'm'
    when :file
      'f'
    when :mmap
      'v'
    when :mfile
      '<'
    when :unknown
      '-'
    else
      ' '
  end + (is_described? ? '*' : ' ')
end
content_type() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 40
def content_type
  self[:ows_ContentType]
end
create_dc(dir, mapping) click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 237
def create_dc(dir, mapping)
  xml_doc = to_dc mapping
  dc_file = "#{dir}/dc_#{self[:index].to_s}.xml"
  xml_doc.save dc_file
  dc_file
end
file_name() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 44
def file_name
  self[:ows_FileLeafRef]
end
file_path() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 48
def file_path
  self[:ows_FileRef]
end
file_size() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 52
def file_size
  self[:ows_FileSizeDisplay]
end
ingest_model() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 136
def ingest_model
  return self[:ows_Ingestmodel] if self[:ows_Ingestmodel]
  return self.node.parent.content.ingest_model if node and node.parent and node.parent.content
  nil
end
is_described?() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 80
      def is_described?
=begin
    self[:ows_Title1] and
        (   self[:ows_Creation_x0020_date_x0028_s_x0029_] or
            self[:ows_Startdate] or
            self[:ows_Enddate]
        )
=end
        self[:ows_Unit_of_description]
      end
is_file?() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 75
def is_file?
  return true if [:file, :mfile].include? simple_content_type
  false
end
label() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 32
def label
  (self[:ows_Title1] || self[:ows_BaseName] || file_name).to_s
end
label_prefix() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 24
def label_prefix
  self[:label_prefix]
end
label_prefix=(value) click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 28
def label_prefix=(value)
  self[:label_prefix] = value
end
local_path(sub_dir) click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 68
def local_path(sub_dir)
  return relative_path unless sub_dir
  sub_dir += '/' unless sub_dir[-1] == '/'
  return relative_path.gsub(/^#{sub_dir}/, '') if relative_path
  nil
end
print_metadata(f, mapping) click to toggle source
relative_path() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 63
def relative_path
  return file_path.gsub(/^sites\/lias\/Gedeelde documenten\//, '') if file_path
  nil
end
simple_content_type() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 91
def simple_content_type
  case content_type
    when /^Archief/i
      return :archive
    when /^Bestanddeel \(folder\)/i
      return :map
    when /^Bestanddeel of stuk \(document\)/i
      return :file
    when /^Meervoudige beschrijving \(folder\)/i
      return :mmap
    when /^Meervoudige beschrijving \(document\)/i
      return :mfile
    when /^Tussenniveau/i
      return :map
    when /^Film/i
      return :file
    when /^Object/i
      return :file
    when /^Document/i
      return :file
    else
      # type code here
  end
  :unknown
end
title() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 36
def title
  self[:label_prefix] + ' ' + self.label
end
to_dc(mapping) click to toggle source

@param [Libis::Metadata::SharepointMapping] mapping

# File lib/libis/metadata/sharepoint_record.rb, line 184
def to_dc(mapping)

  return nil unless mapping and mapping.is_a? Hash

  xml_doc = Libis::Tools::XmlDocument.new

  #noinspection RubyStringKeysInHashInspection
  xml_doc.root = xml_doc.create_node(
      'record',
      namespaces: {
          'dc' => 'http://purl.org/dc/elements/1.1/',
          'xsi' => 'http://www.w3.org/2001/XMLSchema-instance',
          'dcterms' => 'http://purl.org/dc/terms/'})

  self.each do |label, value|
    dc_tag = mapping.dc_tag(label)
    next unless dc_tag
    dc_value = (mapping.dc_prefix(label) || '') + value.to_s + (mapping.dc_postfix(label) || '')
    #noinspection RubyResolve
    xml_doc.root << xml_doc.create_text_node(dc_tag, dc_value)
  end

  if xml_doc.xpath('//dc:title').size == 0
    xml_doc.root << xml_doc.create_text_node('dc:title', self[:ows_BaseName])
  end

  xml_doc

end
to_raw() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 148
def to_raw
  self
end
to_s() click to toggle source
Calls superclass method
# File lib/libis/metadata/sharepoint_record.rb, line 244
def to_s
  super
end
to_sql(mapping) click to toggle source

@param [Libis::Metadata::SharepointMapping] mapping

# File lib/libis/metadata/sharepoint_record.rb, line 215
def to_sql(mapping)
  sql_fields = []
  sql_values = []

  self.each do |label, value|
    db_column = mapping.db_column(label)
    next unless db_column
    db_value = mapping.db_value(label, value)
    next unless db_value and db_value != "''"
    sql_fields << db_column
    sql_values << db_value.escape_for_sql
  end

  sql_fields.each_with_index { |element, index| (index % 10 == 0) && (sql_fields[index] = "\n    " + element)
  }
  sql_values.each_with_index { |element, index| (index % 10 == 0) && (sql_values[index] = "\n    " + element)
  }

  'INSERT INTO @TABLE_NAME@ (' + sql_fields.join(',') + ")\n  VALUES (" + sql_values.join(',') + ');'

end
to_xml() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 152
def to_xml

  xml_doc = Libis::Tools::XmlDocument.new

  xml_doc.root = xml_doc.create_node('record')

  self.each do |label, value|

    unless label == :node
      #noinspection RubyResolve
      xml_doc.root << xml_doc.create_text_node(label.to_s, value.to_s)
    end

  end

  xml_doc

end
url() click to toggle source
# File lib/libis/metadata/sharepoint_record.rb, line 56
      def url
#    self[:ows_EncodedAbsUrl]
#    'https://www.groupware.kuleuven.be' + CGI.escape(self[:ows_ServerUrl], Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
#    'https://www.groupware.kuleuven.be' + CGI.escape(self[:ows_ServerUrl])
        CGI.escape(CGI.unescape(self[:ows_EncodedAbsUrl]))
      end