NAME
FabForce::DBDesigner4
VERSION
version 0.305
SYNOPSIS
use FabForce::DBDesigner4;
my $designer = FabForce::DBDesigner4->new();
$designer->parsefile(xml => 'KESS.xml');
$designer->writeSQL('text_sql.sql',{ type => 'mysql' });
DESCRIPTION
FabForce::DBDesigner4 is a module to analyse xml-files created by the Database-Design tool DBDesigner (Version 4) from FabForce (http://www.fabforce.net).
NOTICE: As of version 0.2 you can not parse sql files any longer. You just can parse xml files created by DBDesigner. And you can't create XML files!
NAME
FabForce::DBDesigner4 - Parse/Analyse XML-Files created by DBDesigner 4 (FabForce)
METHODS
new
# create a new instance
my $designer = FabForce::DBDesigner4->new();
parsefile
parse the input file (XML - FabForce format )
# parse a xml-file
$designer->parsefile(xml => 'KESS.xml');
writeSQL
print the structure into a sql-file
$designer->writeSQL('foo.sql');
# print "drop table statements"
$designer->writeSQL( 'foo.sql', { drop_tables => 1 } );
getTables
returns an array of table-objects
my @tables = $designer->getTables();
getSQL
returns an array of CREATE statements. One element for each table.
my @creates = $designer->getSQL();
# get "drop table" statements in extra elements
my @creates = $designer->getSQL({ drop_table => 1 });
DBDesigner4::Table
Each table is an object which contains information about the columns, the relations and the keys.
Methods of the table-objects
name
# set the tablename
$table->name('tablename');
# get the tablename
my $name = $table->name();
columns
# set the tablecolumns
my @array = ({'column1' => ['int','not null']});
$table->columns(\@array);
# get the columns
print $_,"\n" for($table->columns());
columnType
# get datatype of n-th column (i.e. 3rd column)
my $datatype = $table->columnType(3);
columnInfo
# get info about n-th column (i.e. 4th column)
print Dumper($table->columnInfo(4));
stringsToTableCols
# maps column information to hash (needed for columns())
my @columns = ('col1 varchar(255) primary key', 'col2 int not null');
my @array = $table->stringsToTableCols(@columns);
addColumn
# add the tablecolumn
my $column = ['column1','int','not null'];
$table->addColumn($column);
relations
# set relations
my @relations = ([1,'startTable.startCol','targetTable.targetCol']);
$table->relations(\@relations);
# get relations
print $_,"\n" for($table->relations());
addRelation
$table->addRelation([1,'startTable.startCol','targetTable.targetCol']);
removeRelation
# removes a relation (i.e. 2nd relation)
$table->removeRelation(2);
key
# set the primary key
$table->key(['prim1']);
# get the primary key
print "the primary key contains these columns:\n";
print $_,"\n" for($table->key());
DEPENDENCIES
This module requires XML::Twig
BUGS and COMMENTS
This module is still in development so feel free to contact me and send me bugreports or comments on this module.
SEE ALSO
XML::Twig and IO::File
AUTHOR
Renee Baecker, <module@renee-baecker.de>
COPYRIGHT AND LICENSE
Copyright (C) 2005 - 2009 by Renee Baecker
This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License version 2.0.
These conditions apply for all files in this package.
AUTHOR
Renee Baecker <module@renee-baecker.de>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2010 by Renee Baecker.
This is free software, licensed under:
The Artistic License 2.0