Sha256: 968612ccfa423441d95fb9b0f5c620e60d072d5a0970c03e3068a73813a0f646

Contents?: true

Size: 1.34 KB

Versions: 11

Compression:

Stored size: 1.34 KB

Contents

module ActiveFedora
  class VersionsGraph < ::RDF::Graph

    def all opts={}
      if opts[:include_auto_save]
        fedora_versions
      else
        fedora_versions.reject { |v| v.label.match("auto") }
      end
    end

    def first
      all.first
    end

    def last
      all.last
    end

    def with_label label
      all.each do |version|
        return version if version.label == label
      end
    end

    def resources
      query(predicate: ActiveFedora::RDF::Fcrepo4.hasVersion)
    end

    private

      class ResourceVersion
        attr_accessor :uri, :label, :created
      end

      def version_from_resource statement
        version = ResourceVersion.new
        version.uri = statement.object.to_s.gsub(/\/fcr:metadata$/,"")
        version.label = label_query(statement)
        version.created = created_query(statement)
        return version
      end

      def label_query statement
        query(subject: statement.object).query(predicate: ActiveFedora::RDF::Fcrepo4.hasVersionLabel).first.object.to_s
      end

      def created_query statement
        query(subject: statement.object).query(predicate: ActiveFedora::RDF::Fcrepo4.created).first.object.to_s
      end

      def fedora_versions
        list = resources.map { |statement| version_from_resource(statement) }
        list.sort_by(&:created)
      end

  end

end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
active-fedora-9.0.6 lib/active_fedora/versions_graph.rb
active-fedora-9.0.5 lib/active_fedora/versions_graph.rb
active-fedora-9.0.4 lib/active_fedora/versions_graph.rb
active-fedora-9.0.3 lib/active_fedora/versions_graph.rb
active-fedora-9.0.2 lib/active_fedora/versions_graph.rb
active-fedora-9.0.1 lib/active_fedora/versions_graph.rb
active-fedora-9.0.0 lib/active_fedora/versions_graph.rb
active-fedora-9.0.0.rc3 lib/active_fedora/versions_graph.rb
active-fedora-9.0.0.rc2 lib/active_fedora/versions_graph.rb
active-fedora-9.0.0.rc1 lib/active_fedora/versions_graph.rb
active-fedora-9.0.0.beta8 lib/active_fedora/versions_graph.rb