NAME
Dia::SQL - Convert Dia class diagrams into SQL.
SYNOPSIS
use Dia::SQL;
my $dia = Dia::SQL->new(
files => [ 'diagram1.dia', 'diagram2.dia' ], db => 'db2' );
$dia->convert();
print $dia->get_sql();
DESCRIPTION
Dia is a diagram creation program for Linux, Unix and Windows released under the GPL license.
Dia::SQL converts Dia class diagrams into SQL.
Dia::SQL is the parser that interprets the .dia file(s) into an internal datastructure.
Dia::SQL::Output (or one of its sub classes) can take the datastructure and generate SQL statements it represents.
DATABASE SUPPORT NOTE
As of VERSION 0.01 the only supported database is DB2. The aim is to suppport the same set of databases as tedia2sql.
Adding support for additional databases
Adding support for additional databases means to create a subclass of Dia::SQL::Output.
Patches are welcome.
AUTHOR
Dia::SQL is based on tedia2sql by Tim Ellis and others. See the AUTHORS file for details.
Modified by Andreas Faafeng, <aff at cpan.org>
for release on CPAN.
BUGS
Please report any bugs or feature requests to bug-dia-sql at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Dia-SQL. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Dia::SQL
You can also look for information at:
RT: CPAN's request tracker
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
SEE ALSO
Dia::SQL::Output
http://tedia2sql.tigris.org/
http://live.gnome.org/Dia
ACKNOWLEDGEMENTS
See the AUTHORS file.
LICENSE
This program is released under the GNU General Public License.
TERMINOLOGY
By database we mean relational database managment system (RDBMS).
new
The constructor. Arguments:
file - .dia file to parse
db - the target database type
_init_log
Initialize logger
_init_const
Initialize Constants component
_init_utils
Initialize Dia::SQL::Utils class.
get_output_instance
Return Output subclass.
Some params will be taken from this object unless explicitly set by caller:
classes
associations
small_packages
components
files
Dies if db is unknown.
convert
Parse the .dia file and create inner representation.
get_sql
Return sql for given db
_parse_doms
Uncompress the .dia file(s) and parse xml content. Push the parsed xml dom onto the docs list.
Return the number of parsed files.
_get_docs
Returns the parsed xml dom documents (for testing).
_get_nodelist
Create nodelist from dom. Return array of array XML::DOM::NodeList objects.
Each inner array correspond to a separate input file.
get_smallpackages_ref
Accessor
_parse_smallpackages
Got through nodelists and return number of 'SmallPackages' found
_parse_smallpackage
Returns hashref where key is name of SmallPackage and value is its content.
get_classes_ref
TODO: Should be renamed to 'get_classes' once the real 'get_classes' is renamed 'parse_classes', see below.
_parse_classes
Returns hashref where key is name of class and value is its content.
get_components_ref
Accessor
_parse_component
Parse a component and take our what is needed to create inserts.
Returns a hash reference.
_parse_class
Parse a CLASS and salt away the information needed to generate its SQL DDL.
Returns a hash reference.
generate_small_package_sql
Returns string with sql statements for small packages (pre/post/etc).
Since this information is already explicit SQL, there is not a distinction between parsing and printing.
get_associations_ref
TODO: Rename this to get_associations?
_parse_associations
Scan the nodeList for UML Associations and return them.
_parse_association
Generate the foreign key relationship between two tables: classify the relationship, and generate the necessary constraints and centre (join) tables.
uml_class_lookup
Look up a class given the XML id of the class, taking into account placeholder classes.
generate_many_to_many_association
Generate SQL for a many to many association including generating the centre (join) table.
gen_table_view_sql
Generate Table or View SQL based on an object given.
TODO : Rename to save_class
add_centre_cols
Add column descriptors for a centre (join) table to an array of descriptors passed in
generate_one_to_any_association
Generate data for SQL generation for an association where one side has multiplicity one; no additional table is necessary.
save_foreign_key
Save the details of foreign keys for output later (i.e. push onto fk_defs array ref).