class Libis::Metadata::SharepointMapping

Copy of old Sharepoint mapping class. Needs inspection and probably a mayor update.

Public Class Methods

new(mapping_file) click to toggle source
Calls superclass method
# File lib/libis/metadata/sharepoint_mapping.rb, line 14
def initialize(mapping_file)


  CSV.foreach(mapping_file, headers: true, skip_blanks: true) do |row|
    next unless row[1]
    # next unless (row[2] || row[3])

    # compensation for bug in library that reads the Excel data
    0.upto(5) { |i| row[i] = row[i].gsub(/_x005F(_x[0-9a-fA-F]{4}_)/, '\1') if row[i] }

    name = row[0] ? row[0].strip : nil
    label = row[1].strip.to_sym
    dc_tag = row[2] ? row[2].strip : ''
    db_column = row[3] ? row[3].strip : nil
    db_datatype = row[4] ? row[4].strip.upcase.to_sym : nil
    db_valuemask = row[5] ? row[5] : nil
    #      scope_tag = row[6] ? row[6].strip : nil
    #      scope_id = (row[7] and row[7] =~ /[0-9]+/ ? Integer(row[7].strip) : nil)


    mapping = {}
    mapping[:fancy_name] = name if name
    mapping[:db_column] = db_column if db_column
    mapping[:db_datatype] = :STRING
    mapping[:db_datatype] = db_datatype if db_datatype
    mapping[:db_valuemask] = (mapping[:db_datatype] == :STRING ? "'@@'" : '@@')
    mapping[:db_valuemask] = db_valuemask if db_valuemask
    #      mapping[:scope_tag] = scope_tag if scope_tag
    #      mapping[:scope_id] = scope_id if scope_id

    if dc_tag.match(/^\s*"(.*)"\s*(<.*)$/)
      mapping[:dc_prefix] = $1
      dc_tag = $2
    end

    if dc_tag.match(/^\s*<dc:[^.]+\.([^.>]+)>(.*)$/)
      mapping[:dc_tag] = "dcterms:#{$1}"
      dc_tag = $2

    elsif dc_tag.match(/^\s*<dc:([^.>]+)>(.*)$/)
      mapping[:dc_tag] = "dc:#{$1}"
      dc_tag = $2
    end

    if dc_tag.match(/^\s*"(.*)"\s*$/)
      mapping[:dc_postfix] = $1
    end

    self[label] = mapping.empty? ? nil : mapping

  end

  File.open('mapping.yml', 'wt') { |fp|
    fp.puts self.to_yaml
  }
  super nil

end

Public Instance Methods

db_column(label) click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 103
def db_column(label)
  mapping = self[label]
  mapping = mapping[:db_column] if mapping
  mapping
end
db_value(label, value) click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 109
def db_value(label, value)
  mapping = self[label]
  return nil unless mapping
  mask = mapping[:db_valuemask]
  mask.gsub('@@', value.to_s)
end
dc_postfix(label) click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 97
def dc_postfix(label)
  mapping = self[label]
  mapping = mapping[:dc_postfix] if mapping
  mapping
end
dc_prefix(label) click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 91
def dc_prefix(label)
  mapping = self[label]
  mapping = mapping[:dc_prefix] if mapping
  mapping
end
dc_tag(label) click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 85
def dc_tag(label)
  mapping = self[label]
  mapping = mapping[:dc_tag] if mapping
  mapping
end
fancy_label(label) click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 79
def fancy_label(label)
  mapping = self[label]
  mapping = mapping[:fancy_name] if mapping
  "#{label}#{mapping ? '(' + mapping + ')' : ''}"
end
name(label) click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 73
def name(label)
  mapping = self[label]
  mapping = mapping[:fancy_name] if mapping
  mapping || label
end