package Data::Workflow::Namespace::null;

#################################################################################
#
# Author:  Nat Goodman
# Created: 05-11-19
# $Id: 
#
# null Namespace
# Used for Resources that don't have Namespaces
#
#################################################################################

use strict;
use Class::AutoClass;
use Carp;
use File::stat;
use Data::Workflow::Namespace;

use vars qw(@ISA @AUTO_ATTRIBUTES @OTHER_ATTRIBUTES @CLASS_ATTRIBUTES %SYNONYMS %DEFAULTS %AUTODB);
#@ISA = qw(Data::Workflow::Namespace);
@ISA = qw(Data::Workflow::Namespace::path);

@AUTO_ATTRIBUTES=qw();
@OTHER_ATTRIBUTES=qw();
@CLASS_ATTRIBUTES=qw(verbose);
%SYNONYMS=();
%DEFAULTS=(versionable=>0,modtime_autoset=>0);
Class::AutoClass::declare(__PACKAGE__);

#sub _init_self {
#  my ($self, $class, $args) = @_;
#  return unless $class eq __PACKAGE__;
#}
#sub full_id {
#  my($self,$resource_or_version)=@_;
#  my($resource,$version)=$self->_resource_or_version($resource_or_version);
#  $resource->id;
#}

#sub full_id {
#  my($self,$resource,$version)=@_;
#  my $full_id=$resource->id;
#  if ($self->versionable) {
#    my $version_id=$version->id;
##    $full_id.='_'.$version_id if $version_id;
#    $full_id="$version_id/$full_id"if length($version_id);
#  }
#  $full_id;
#}

sub full_path {
  my($self,$resource,$version)=@_;
  my $full_path=$resource->id;
  if ($self->versionable) {
    my $version_id=$version->id;
#    $full_path.='_'.$version_id if $version_id;
    $full_path="$version_id/$full_path"if length($version_id);
  }
  $full_path;
}
*full_id=\&full_path;

# uses modtime of file if exists unless explicitly set
sub modtime {
  my($self,$resource,$version)=splice(@_,0,3);
  $version->_modtime($_[0]) if @_;
  my $full_path=$self->full_path($resource,$version);
  my $stat=stat($full_path);
  $stat? $stat->mtime: $version->_modtime || 0;
}

__PACKAGE__->needs_rv(qw(full_id full_path modtime)); # used in base class
1;