UR::Object::Property::ID


UR documentation Contained in the UR distribution.

Index


Code Index:


UR documentation Contained in the UR distribution.

package UR::Object::Property::ID;

use strict;
use warnings;

our $VERSION = $UR::VERSION;;

sub _create_object {
    my $class = shift;
    my %params = @_;
    if ($params{attribute_name} and not $params{property_name}) {
        my $property_name = $params{attribute_name};
        $property_name =~ s/ /_/g;
        $params{property_name} = $property_name;
    }
    elsif ($params{property_name} and not $params{attribute_name}) {
        my $attribute_name = $params{property_name};
        $attribute_name =~ s/_/ /g;
        $params{attribute_name} = $attribute_name;
    }
    unless ($params{class_name} and $params{type_name}) {   
        my $class_obj;
        if ($params{type_name}) {
            $class_obj = UR::Object::Type->is_loaded(type_name => $params{type_name});
            $params{class_name} = $class_obj->class_name;
        } 
        elsif ($params{class_name}) {
            $class_obj = UR::Object::Type->is_loaded(class_name => $params{class_name});
            $params{type_name} = $class_obj->type_name;
        } 
    }  
    return $class->SUPER::_create_object(%params);
}

sub get_property {
    my $self = shift;
    return UR::Object::Property->get(
        class_name => $self->class_name,
        property_name => $self->property_name
    );
}

1;