Class: Moab::FileInstance

Inherits:
Serializable
  • Object
show all
Includes:
HappyMapper
Defined in:
lib/moab/file_instance.rb

Overview

Note:

Copyright © 2012 by The Board of Trustees of the Leland Stanford Junior University. All rights reserved. See LICENSE for details.

The file path and last modification date properties of a file

Data Model

  • FileInventory = container for recording information about a collection of related files

    • FileGroup [1..*] = subset allow segregation of content and metadata files

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ FileInstance


24
25
26
# File 'lib/moab/file_instance.rb', line 24

def initialize(opts={})
  super(opts)
end

Instance Attribute Details

#datetimeString


34
# File 'lib/moab/file_instance.rb', line 34

attribute :datetime, String

#pathString


30
# File 'lib/moab/file_instance.rb', line 30

attribute :path, String, :key => true

Instance Method Details

#==(other) ⇒ Object

(see #eql?)


65
66
67
# File 'lib/moab/file_instance.rb', line 65

def ==(other)
  eql?(other)
end

#eql?(other) ⇒ Boolean

Returns true if self and other have the same path.


58
59
60
61
# File 'lib/moab/file_instance.rb', line 58

def eql?(other)
  return false unless other.respond_to?(:path)  # Cannot equal an incomparable type!
  self.path == other.path
end

#hashFixnum

Note:

The hash and eql? methods override the methods inherited from Object. These methods ensure that instances of this class can be used as Hash keys. See

Also overriden is #== so that equality tests in other contexts will also return the expected result.

Two file instances with the same relative path will have the same hash code (and will compare using eql?).


77
78
79
# File 'lib/moab/file_instance.rb', line 77

def hash
  path.hash
end

#instance_from_file(pathname, base_directory) ⇒ FileInstance

Returns a file instance containing a physical file's' properties


49
50
51
52
53
# File 'lib/moab/file_instance.rb', line 49

def instance_from_file(pathname, base_directory)
  @path = pathname.expand_path.relative_path_from(base_directory.expand_path).to_s
  @datetime = pathname.mtime.iso8601
  self
end