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

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!

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());

column_details

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