| DbFramework documentation | Contained in the DbFramework distribution. |
DbFramework::Key - Key class
use DbFramework::Key;
$k = new DbFramework::Key($name,\@attributes);
$name = $k->name($name);
@a = @{$k->incorporates_l(\@attributes)};
@names = $k->attribute_names;
$sql = $k->as_sql;
$table = $k->belongs_to($table);
$html = $k->as_html_heading;
The DbFramework::Key class implements keys (indexes) for a table.
DbFramework::Util
Create a new DbFramework::Key object. $name is the name of the key. @attributes is a list of DbFramework::Attribute objects from a single DbFramework::Table object which make up the key.
A key incorporates 0 or more attributes. These attributes can be accessed using the attribute INCORPORATES_L. See AUTOLOAD() in DbFramework::Util for the accessor methods for this attribute.
If $name is supplied sets the data model name. Returns the data model name.
$table is a DbFramework::Table object. If supplied sets the table to which this key refers to $table. Returns a DbFramework::Table.
If $color is supplied sets the background colour for HTML table cells. Returns the current background colour.
Returns a list of the names of the attributes which make up the key.
Returns a string which can be used in an SQL 'CREATE TABLE' statement to create the key.
Returns a string for use as a column heading cell in an HTML table;
DbFramework::ForeignKey, DbFramework::PrimaryKey and DbFramework::Catalog.
Paul Sharpe <paul@miraclefish.com>
Copyright (c) 1997,1998 Paul Sharpe. England. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| DbFramework documentation | Contained in the DbFramework distribution. |
package DbFramework::Key; use strict; use base qw(DbFramework::Util); use Alias; use vars qw( $NAME @INCORPORATES_L $BELONGS_TO $BGCOLOR ); my %fields = ( NAME => undef, # Key 0:N Incorporates 0:N Attribute INCORPORATES_L => undef, # Key 1:1 BelongsTo 1:1 Table BELONGS_TO => undef, BGCOLOR => '#ffffff', ); ##----------------------------------------------------------------------------- ## CLASS METHODS ##-----------------------------------------------------------------------------
sub new { my $DEBUG = 0; my $proto = shift; my $class = ref($proto) || $proto; print STDERR "=>$class::new(@_)\n" if $DEBUG; my $self = bless { _PERMITTED => \%fields, %fields, }, $class; $self->name(shift); $self->incorporates_l(shift); print STDERR "<=$class::new()\n" if $DEBUG; return $self; } ##---------------------------------------------------------------------------- ## OBJECT METHODS ##-----------------------------------------------------------------------------
sub attribute_names { my $self = attr shift; my @names; for ( @INCORPORATES_L ) { push(@names,$_->name) } return @names; } #-----------------------------------------------------------------------------
sub as_sql { my $self = attr shift; return "KEY $NAME (" . join(',',$self->attribute_names) . ")"; } #----------------------------------------------------------------------------- sub _input_template { my $self = attr shift; my $t_name = $BELONGS_TO ? $BELONGS_TO->name : 'UNKNOWN_TABLE'; my $in; my $bgcolor = $self->bgcolor; for ( @INCORPORATES_L ) { my $a_name = $_->name; $in .= qq{<TD><DbField ${t_name}.${a_name}></TD>}; } $in; } #----------------------------------------------------------------------------- sub _output_template { my $self = attr shift; my $t_name = $BELONGS_TO ? $BELONGS_TO->name : 'UNKNOWN_TABLE'; my $out; for ( @INCORPORATES_L ) { my $a_name = $_->name; $out .= qq{<TD BGCOLOR='$BGCOLOR'><DbValue ${t_name}.${a_name}></TD>}; } $out; } #-----------------------------------------------------------------------------
sub as_html_heading { my $self = attr shift; my $html = "<TD BGCOLOR='$BGCOLOR' COLSPAN=".scalar(@INCORPORATES_L).">"; for ( @INCORPORATES_L ) { $html .= $_->name . ',' } chop($html); "$html</TD>"; } 1;