The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Rose::DBx::Object::Metadata::Column::Xml - Xml binary large object column metadata.

SYNOPSIS

  use Rose::DBx::Object::Metadata::Column::Xml;

  $col = Rose::DBx::Object::Metadata::Column::Xml->new(...);
  $col->make_methods(...);
  ...

     You could add this XML type to your Rose::DB::Object::Metadata column type
  by creating your own Metadata object inherited from Rose::DB::Object::Metadata.
  See below:

        package Model::MyObjectMetadata;
        use Mojo::Base 'Rose::DB::Object::Metadata';

        sub new {
                my $class = shift;
                my $self = $class->SUPER::new(@_);
                $self->extend_column_type_classes;
                return $self;
        }

        sub extend_column_type_classes {
                my $self = shift;
                my $ctc = {$self->column_type_classes};
                @$ctc{qw/xml xmltype ora_xmltype/}      = ('Model::Object::Metadata::Column::Xml') x 3;    # <-------------
                $self->column_type_classes(%$ctc);
                return $self;
        }

        1;


  xml, xmltype, ora_xmltype - are aliases to the XML type. You can use any other names you want.

  Model DB class may look as follows:

        package Model::DB;
        use base 'Rose::DBx::AutoReconnect'; # <------------- if you need autoreconnection

        # Use a private registry for this class
        __PACKAGE__->use_private_registry;

        # Set the default domain and type
        __PACKAGE__->default_domain('production');
        __PACKAGE__->default_type('main');

        1;

  Then you have to use your "brend new" MyObjectMetadata in your inherited from Rose::DB::Object class as below:


        package Model::Object;
        use Model::DB;
        use Model::MyObjectMetadata; # <-------------
        use Mojo::Base qw(Rose::DB::Object);

        sub init_db {return Model::DB->new_or_cached}

        sub meta_class {return "Model::ObjectMetadata"}   # <-------------

        1;


  And in Scheme class do as below:

    package Model::Scheme::AnySchemeClass;
        use base qw/Model::Object/;

        __PACKAGE__->meta->setup
        (
                table   => 'anytablename',

                columns => [
                        ...,
                        my_xml_field => { type => 'xml'},
                        ...
                ],
                ...
        );

        1;

  And that's it!

DESCRIPTION

Objects of this class store and manipulate metadata for long, variable-length character-based columns in a database. Column metadata objects store information about columns (data type, size, etc.) and are responsible for creating object methods that manipulate column values.

This class inherits from Rose::DB::Object::Metadata::Column::Text. Inherited methods that are not overridden will not be documented a second time here. See the Rose::DB::Object::Metadata::Column::Character documentation for more information.

METHOD MAP

get_set

Rose::DB::Object::MakeMethods::Generic, character, ...

get

Rose::DB::Object::MakeMethods::Generic, character, ...

get_set

Rose::DB::Object::MakeMethods::Generic, character, ...

See the Rose::DB::Object::Metadata::Column documentation for an explanation of this method map.

OBJECT METHODS

type

Returns "xml".

AUTHOR

Andrey Chergik (andrey@chergik.ru)

LICENSE

Copyright (c) 2011 by Andrey Chergik. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

1;