summaryrefslogtreecommitdiff
path: root/rt/sbin/factory
diff options
context:
space:
mode:
authorivan <ivan>2005-10-15 09:11:20 +0000
committerivan <ivan>2005-10-15 09:11:20 +0000
commitd4d0590bef31071e8809ec046717444b95b3f30a (patch)
treeee1236da50578390d2642114f28eaed99a5efb18 /rt/sbin/factory
parentd39d52aac8f38ea9115628039f0df5aa3ac826de (diff)
import rt 3.4.4
Diffstat (limited to 'rt/sbin/factory')
-rw-r--r--rt/sbin/factory98
1 files changed, 76 insertions, 22 deletions
diff --git a/rt/sbin/factory b/rt/sbin/factory
index 882e4a826..743d8b90e 100644
--- a/rt/sbin/factory
+++ b/rt/sbin/factory
@@ -1,9 +1,9 @@
-#!/usr/bin/perl
-# {{{ BEGIN BPS TAGGED BLOCK
+#!/usr/bin/perl -w
+# BEGIN BPS TAGGED BLOCK {{{
#
# COPYRIGHT:
#
-# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC
# <jesse@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
@@ -43,7 +43,8 @@
# works based on those contributions, and sublicense and distribute
# those contributions and any derivatives thereof.
#
-# }}} END BPS TAGGED BLOCK
+# END BPS TAGGED BLOCK }}}
+use strict;
use DBI;
my $database = shift;
@@ -59,11 +60,17 @@ my $password = '';
my $LicenseBlock = << '.';
-# BEGIN BPS TAGGED BLOCK
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2004 Best Practical Solutions, LLC
+# <jesse@bestpractical.com>
#
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
+# (Except where explicitly superseded by other copyright notices)
#
-# (Except where explictly superceded by other copyright notices)
+#
+# LICENSE:
#
# This work is made available to you under the terms of Version 2 of
# the GNU General Public License. A copy of that license should have
@@ -75,14 +82,29 @@ my $LicenseBlock = << '.';
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
#
-# END BPS TAGGED BLOCK
-
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
.
my $Attribution = << '.';
@@ -126,6 +148,7 @@ foreach my $table (@tables) {
$tablemap{'CreatedBy'} = 'User';
$tablemap{'UpdatedBy'} = 'User';
+my %typemap;
$typemap{'id'} = 'ro';
$typemap{'Creator'} = 'auto';
$typemap{'Created'} = 'auto';
@@ -162,7 +185,27 @@ foreach my $table (@tables) {
my $ClassAccessible = "";
my $FieldsPod = "";
my $CreatePod = "";
+ my $RecordInit = "";
my %fields;
+
+
+ my $introspection = $dbh->prepare("SELECT * from $table where id is null");
+ $introspection->execute();
+ my @names =@{ $introspection->{'NAME'}};
+ my @types = @{$introspection->{'TYPE'}};
+ my @is_blob = @{$introspection->{'mysql_is_blob'}};
+ my @is_num = @{$introspection->{'mysql_is_num'}};
+
+ my %blobness = ();
+ my %sqltypes = ();
+ my %numeric = ();
+ foreach my $name (@names) {
+ $sqltypes{$name} = shift @types;
+ $blobness{$name} = (shift @is_blob || "0");
+ $numeric{$name} = (shift @is_num || "0");
+ }
+
+
my $sth = $dbh->prepare("DESCRIBE $table");
$sth->execute;
@@ -170,10 +213,16 @@ foreach my $table (@tables) {
my $field = $row->{'Field'};
my $type = $row->{'Type'};
my $default = $row->{'Default'};
+ my $length = 0;
+ if ($type =~ /^(?:.*?)\((\d+)\)$/) {
+ $length = $1;
+ }
$fields{$field} = 1;
#generate the 'accessible' datastructure
+ no warnings 'uninitialized';
+
if ( $typemap{$field} eq 'auto' ) {
$ClassAccessible .= " $field =>
{read => 1, auto => 1,";
@@ -187,7 +236,7 @@ foreach my $table (@tables) {
{read => 1, write => 1,";
}
-
+ $ClassAccessible .= " sql_type => $sqltypes{$field}, length => $length, is_blob => $blobness{$field}, is_numeric => $numeric{$field}, ";
$ClassAccessible .= " type => '$type', default => '$default'},\n";
#generate pod for the accessible fields
@@ -199,7 +248,7 @@ Returns the current value of $field.
";
- unless ( $typemap{$field} eq 'auto' || $typemap{$field} eq 'ro' ) {
+ unless ( exists $typemap{$field} && ( $typemap{$field} eq 'auto' || $typemap{$field} eq 'ro' )) {
$FieldsPod .= "
=head2 Set$field VALUE
@@ -254,7 +303,7 @@ sub ${field}Obj {
}
- $Create = "
+ my $Create = "
sub Create {
my \$self = shift;
my \%args = (
@@ -306,10 +355,15 @@ sub _Init {
$CollectionClass .= "
- # By default, order by name
- \$self->OrderBy( ALIAS => 'main',
- FIELD => 'SortOrder',
- ORDER => 'ASC');
+ # By default, order by SortOrder
+ \$self->OrderByCols(
+ { ALIAS => 'main',
+ FIELD => 'SortOrder',
+ ORDER => 'ASC' },
+ { ALIAS => 'main',
+ FIELD => 'id',
+ ORDER => 'ASC' },
+ );
";
}
$CollectionClass .= "
@@ -397,7 +451,7 @@ $ClassAccessible
open( COL, ">$CollectionClassPath" );
print COL $CollectionClass;
- close($COL);
+ close(COL);
}
@@ -438,7 +492,7 @@ _Vendor is for 3rd-party vendor add-ons, while _Local is for site-local customiz
These overlay files can contain new subs or subs to replace existing subs in this module.
-If you'll be working with perl 5.6.0 or greater, each of these files should begin with the line
+Each of these files should begin with the line
no warnings qw(redefine);