class ActiveFedora::VersionsGraph

def all opts={}

def all opts={}
  versions = fedora_versions
  unless opts[:include_auto_save]
    versions.reject! { |version| version.label.match("auto") }
  end
  versions.sort_by { |version| DateTime.parse(version.created) }
rescue ArgumentError, NoMethodError
  raise ActiveFedora::VersionLacksCreateDate
end

def created_query statement

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

def fedora_versions

def fedora_versions
  resources.map { |statement| version_from_resource(statement) }
end

def first

def first
  all.first
end

def label_query statement

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

def last

def last
  all.last
end

def resources

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

def version_from_resource statement

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 with_label label

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