[Rt-commit] [svn] r1184 - in DBIx-SearchBuilder/trunk: .
SearchBuilder
jesse at pallas.eruditorum.org
jesse at pallas.eruditorum.org
Wed Jul 7 12:31:30 EDT 2004
Author: jesse
Date: Wed Jul 7 12:31:29 2004
New Revision: 1184
Modified:
DBIx-SearchBuilder/trunk/ (props changed)
DBIx-SearchBuilder/trunk/Changes
DBIx-SearchBuilder/trunk/META.yml
DBIx-SearchBuilder/trunk/SIGNATURE
DBIx-SearchBuilder/trunk/SearchBuilder.pm
DBIx-SearchBuilder/trunk/SearchBuilder/Record.pm
Log:
----------------------------------------------------------------------
r2076 at tinbook: jesse | 2004-07-07T16:31:21.661837Z
Revision history for Perl extension DBIx::SearchBuilder.
1.02_01 Wed Jul 7 12:28:08 EDT 2004
- magic _Object instantiation from cubic at acronis.ru
- make SB::_Handle settable directly (cubic at acronis.ru)
- document the above
----------------------------------------------------------------------
Modified: DBIx-SearchBuilder/trunk/Changes
==============================================================================
--- DBIx-SearchBuilder/trunk/Changes (original)
+++ DBIx-SearchBuilder/trunk/Changes Wed Jul 7 12:31:29 2004
@@ -1,5 +1,15 @@
Revision history for Perl extension DBIx::SearchBuilder.
+1.02_01 Wed Jul 7 12:28:08 EDT 2004
+ - magic _Object instantiation from cubic at acronis.ru
+ - make SB::_Handle settable directly (cubic at acronis.ru)
+ - document the above
+
+
+1.01 Sun Jun 27 23:35:46 EDT 2004
+
+ - Releasing 1.00_06 as stable
+
1.00_06 - Pg/Oracle: Don't attempt to do case insensitive comparisons on
integer values.
Modified: DBIx-SearchBuilder/trunk/META.yml
==============================================================================
--- DBIx-SearchBuilder/trunk/META.yml (original)
+++ DBIx-SearchBuilder/trunk/META.yml Wed Jul 7 12:31:29 2004
@@ -1,5 +1,5 @@
name: DBIx-SearchBuilder
-version: 1.00_05
+version: 1.02_01
license: perl
distribution_type: module
build_requires:
Modified: DBIx-SearchBuilder/trunk/SIGNATURE
==============================================================================
--- DBIx-SearchBuilder/trunk/SIGNATURE (original)
+++ DBIx-SearchBuilder/trunk/SIGNATURE Wed Jul 7 12:31:29 2004
@@ -14,33 +14,34 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-SHA1 6b86a2386aecfa50985724130a8eba17c07fe846 Changes
-SHA1 4c80b9b3ced55a0a392956e4bb988e9f5c33c0c5 MANIFEST
+SHA1 cdcfe8762beecc2efa51d97ebbb9c8d2c42b4c9e Changes
+SHA1 f5a02a65c7d73ceb666d3351cdede865555f5fd4 MANIFEST
SHA1 8541c8988476422ee38fbc8714c1dd45b212f7fb MANIFEST.SKIP
-SHA1 b7612c5c409f89caa2643c97cf8066afbd50707b META.yml
+SHA1 d85c5711b3a5445b0f478788b0791011d8c6f7ad META.yml
SHA1 2948c70821e3394e345c1b5e5352abd01219680d Makefile.PL
-SHA1 bc9bdb43882d388cdf40593327563124e001755f SearchBuilder.pm
-SHA1 8b6334d48acaf0a345b71774a4095c569c83dd97 SearchBuilder/Handle.pm
+SHA1 fd5d94a3ba7e72d70f82358ef3bc689b549b40ab SearchBuilder.pm
+SHA1 4a91b3855a941fc5dd5c7e8edd7b50e27820d51f SearchBuilder/Handle.pm
SHA1 68a6d7d744e5d123e3c8b59041d12253fcee5d04 SearchBuilder/Handle/Informix.pm
SHA1 35f764ab7e3c675ffc568f5bcb1ebf921813d801 SearchBuilder/Handle/ODBC.pm
SHA1 6f9abc7ece4b28988fa53f45ccafb7bc31454588 SearchBuilder/Handle/Oracle.pm
-SHA1 2f2b69089f17dde2758a11aef136df41330c3194 SearchBuilder/Handle/Pg.pm
+SHA1 18332427eebac78ea1e6bb8f6ba281f63f65bbf7 SearchBuilder/Handle/Pg.pm
SHA1 2d651d9a1b941be09a2b956a8d7475822da6b662 SearchBuilder/Handle/SQLite.pm
+SHA1 97af6fa4d25c34fa9ffd03c50463fa78d283b2d6 SearchBuilder/Handle/Sybase.pm
SHA1 cf4420e25ae28aa09fbf5e12643ff43f6a2d9241 SearchBuilder/Handle/mysql.pm
SHA1 e9716814b99c423b8e3f46c68a86363047b408fd SearchBuilder/Handle/mysqlPP.pm
SHA1 dfb989fdac5a6df1a677e3fbd4084ef54d61b1bb SearchBuilder/Record.pm
SHA1 4be7e87f7a4679b36e3ac5e8b44180c52abc8925 SearchBuilder/Record/Cachable.pm
SHA1 437511f27cc1319839143e560368fa1ceb4d697a SearchBuilder/Union.pm
-SHA1 1c4a7470ed3ccf5c4145c942f861e8c38d51ba8d inc/Module/Install.pm
-SHA1 54278b050ddfc2e0c852197e1f2195b94abf05b4 inc/Module/Install/Base.pm
-SHA1 cd57a7aec4ec3a938e4a243e4a83dc6798c904c6 inc/Module/Install/Makefile.pm
-SHA1 6096a872f6cfe1fb533f405ff6aea7822e874365 inc/Module/Install/Metadata.pm
+SHA1 90c19f4d1cef235e05176f2e89227351a4b65264 inc/Module/Install.pm
+SHA1 9d69487127cef5f79db775e9a3de93bb9d90cd71 inc/Module/Install/Base.pm
+SHA1 28d2deeca781323948253499889536f28ea0d636 inc/Module/Install/Makefile.pm
+SHA1 427c6d91969cbb8e014f3ffe70a63c65573f9d4f inc/Module/Install/Metadata.pm
SHA1 9768f7bbbd233cb9f2924db07f2f3c3a421a1c4b t/00.load.t
SHA1 e9c6a5881fc60173fbc8d479c1afd2ce3b43bef1 t/pod.t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Darwin)
-iD8DBQFApCu7Ei9d9xCOQEYRAjRPAKCWOIxRWWekZotD9u1Pu+dSFZhaPgCeNIha
-E4uHrCf4phY0PWDDPWThfE8=
-=Zmte
+iD8DBQFA35QvEi9d9xCOQEYRAjCoAJkBvS/Hw0e5LvL3eZxe6TmVKipWwwCfQ+nn
+3sJlaMENnYHN+VwOENq0el0=
+=23t8
-----END PGP SIGNATURE-----
Modified: DBIx-SearchBuilder/trunk/SearchBuilder.pm
==============================================================================
--- DBIx-SearchBuilder/trunk/SearchBuilder.pm (original)
+++ DBIx-SearchBuilder/trunk/SearchBuilder.pm Wed Jul 7 12:31:29 2004
@@ -5,7 +5,7 @@
use strict;
use vars qw($VERSION);
-$VERSION = "1.00_06";
+$VERSION = "1.02_01";
=head1 NAME
@@ -91,8 +91,18 @@
# }}}
# {{{ sub _Handle
+
+=head2 _Handle [DBH]
+
+Get or set this object's DBI database handle.
+
+=cut
+
sub _Handle {
my $self = shift;
+ if (@_) {
+ $self->{'DBIxHandle'} = shift;
+ }
return ( $self->{'DBIxHandle'} );
}
@@ -1439,7 +1449,7 @@
=head1 AUTHOR
-Copyright (c) 2001 Jesse Vincent, jesse at fsck.com.
+Copyright (c) 2001-2004 Jesse Vincent, jesse at fsck.com.
All rights reserved.
Modified: DBIx-SearchBuilder/trunk/SearchBuilder/Record.pm
==============================================================================
--- DBIx-SearchBuilder/trunk/SearchBuilder/Record.pm (original)
+++ DBIx-SearchBuilder/trunk/SearchBuilder/Record.pm Wed Jul 7 12:31:29 2004
@@ -408,9 +408,7 @@
*{$AUTOLOAD} = sub { return ($_[0]->_Value($Attrib))};
return($self->_Value($Attrib));
- }
-
- elsif ($AUTOLOAD =~ /.*::[sS]et_?(\w+)/o) {
+ } elsif ($AUTOLOAD =~ /.*::[sS]et_?(\w+)/o) {
if ($self->_Accessible($1,'write')) {
my $Attrib = $1;
@@ -432,8 +430,23 @@
else {
return(0, 'Nonexistant field?');
}
+ } elsif ($AUTOLOAD =~ /.*::(\w+?)_?[oO]bj$/o) {
+ if ($self->_Accessible($1,'object')) {
+ my $Attrib = $1;
+ *{$AUTOLOAD} = sub {
+ my $s = shift;
+ return $s->_Object(
+ Field => $Attrib,
+ Args => [@_],
+ );
+ };
+ return $self->_Object( Field => $Attrib, Args => [@_] );
+ } else {
+ return(0, 'No object mapping for field');
+ }
}
+
#Previously, I checked for writability here. but I'm not sure that's the
#right idea. it breaks the ability to do ValidateQueue for a ticket
#on creation.
@@ -720,6 +733,50 @@
}
# }}}
+# {{{ sub _Object
+
+=head2 _Object
+
+_Object takes a single column name and an array reference.
+It creates new object instance of class specified in _ClassAccessable
+structure and calls LoadById on recently created object with the
+current column value as argument. It uses the array reference as
+the object constructor's arguments.
+Subclasses can override _Object to insert custom access control or
+define default contructor arguments.
+
+=cut
+
+sub _Object
+{
+ my $self = shift;
+ return $self->__Object(@_);
+}
+
+sub __Object
+{
+ my $self = shift;
+ my %args = ( Field => '', Args => [], @_ );
+
+ my $field = $args{'Field'};
+ my $class = $self->_Accessible( $field, 'object' );
+
+# Globs magic to be sure that we call 'eval "require $class"' only once
+# because eval is quite slow -- cubic at acronis.ru
+ no strict qw( refs );
+ my $vglob = ${ $class . '::' }{'VERSION'};
+ unless ( $vglob && *$vglob{'SCALAR'} ) {
+ eval "require $class";
+ die "Couldn't use $class: $@" if ( $@ );
+ unless ( $vglob && *$vglob{'SCALAR'} ) {
+ *{$class."::VERSION"} = '-1, By DBIx::SerchBuilder';
+ }
+ }
+
+ my $object = $class->new( @{ $args{'Args'} } );
+ $object->LoadById( $self->__Value( $field ) );
+ return $object;
+}
# }}}
More information about the Rt-commit
mailing list