Class: Paneron::Register::Raw::DataSet

Inherits:
Object
  • Object
show all
Defined in:
lib/paneron/register/raw/data_set.rb

Constant Summary collapse

DATA_SET_METADATA_FILENAME =
"/register.yaml"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(register_path, data_set_name, extension = "yaml") ⇒ DataSet

Returns a new instance of DataSet.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/paneron/register/raw/data_set.rb', line 12

def initialize(register_path, data_set_name, extension = "yaml")
  data_set_path = File.join(register_path, data_set_name)
  self.class.validate_data_set_path(data_set_path)

  @register_path = register_path
  @data_set_name = data_set_name
  @extension = extension
  @data_set_path = data_set_path
  @data_set_yaml_path = File.join(data_set_path,
                                  )
  @item_classes = {}
  @item_class_names = nil
  @item_uuids = nil
   = nil
end

Instance Attribute Details

#data_set_nameObject (readonly)

Returns the value of attribute data_set_name.



9
10
11
# File 'lib/paneron/register/raw/data_set.rb', line 9

def data_set_name
  @data_set_name
end

#data_set_pathObject (readonly)

Returns the value of attribute data_set_path.



9
10
11
# File 'lib/paneron/register/raw/data_set.rb', line 9

def data_set_path
  @data_set_path
end

#data_set_yaml_pathObject (readonly)

Returns the value of attribute data_set_yaml_path.



9
10
11
# File 'lib/paneron/register/raw/data_set.rb', line 9

def data_set_yaml_path
  @data_set_yaml_path
end

#extensionObject (readonly)

Returns the value of attribute extension.



9
10
11
# File 'lib/paneron/register/raw/data_set.rb', line 9

def extension
  @extension
end

#register_pathObject (readonly)

Returns the value of attribute register_path.



9
10
11
# File 'lib/paneron/register/raw/data_set.rb', line 9

def register_path
  @register_path
end

Class Method Details

.validate_data_set_path(data_set_path) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/paneron/register/raw/data_set.rb', line 30

def self.validate_data_set_path(data_set_path)
  unless File.exist?(data_set_path)
    raise Paneron::Register::Error,
          "Data Set path does not exist"
  end
  unless File.directory?(data_set_path)
    raise Paneron::Register::Error,
          "Data Set path is not a directory"
  end
  unless File.exist?(File.join(
                       data_set_path, 
                     ))
    raise Paneron::Register::Error,
          "Data Set metadata file does not exist"
  end
end

Instance Method Details

#item_class_lutamlsObject



54
55
56
57
58
# File 'lib/paneron/register/raw/data_set.rb', line 54

def item_class_lutamls
  item_classes.map do |_item_class_name, item_class|
    item_class.to_lutaml
  end
end

#item_class_namesObject



74
75
76
77
78
# File 'lib/paneron/register/raw/data_set.rb', line 74

def item_class_names
  @item_class_names ||=
    Dir.glob(File.join(data_set_path, "*/*.#{extension}"))
      .map { |file| File.basename(File.dirname(file)) }.uniq
end

#item_classes(item_class_name = nil) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/paneron/register/raw/data_set.rb', line 60

def item_classes(item_class_name = nil)
  if item_class_name.nil?
    item_class_names.reduce({}) do |acc, item_class_name|
      acc[item_class_name] = item_classes(item_class_name)
      acc
    end
  else
    @item_classes[item_class_name] ||=
      Paneron::Register::Raw::ItemClass.new(
        data_set_path, item_class_name
      )
  end
end

#item_uuidsObject



80
81
82
# File 'lib/paneron/register/raw/data_set.rb', line 80

def item_uuids
  item_classes.values.map(&:item_uuids).flatten
end

#metadataObject



84
85
86
87
88
89
# File 'lib/paneron/register/raw/data_set.rb', line 84

def 
   ||= YAML.safe_load_file(
    data_set_yaml_path,
    permitted_classes: [Time],
  )
end

#to_lutamlObject



47
48
49
50
51
52
# File 'lib/paneron/register/raw/data_set.rb', line 47

def to_lutaml
  Paneron::Register::DataSet.new(
    name: data_set_name,
    item_classes: item_class_lutamls,
  )
end