#-*- perl -*- # # Copyright (C) 2006 Ken'ichi Fukamachi # All rights reserved. # # $FML: Project.pm,v 1.3 2006/10/10 09:53:22 fukachan Exp $ # package FML::Process::Project; use vars qw($debug @ISA @EXPORT @EXPORT_OK); use strict; use Carp; use FML::Process::Kernel; @ISA = qw(FML::Process::Kernel); =head1 NAME FML::Process::Project -- generate a Gantt chart as a demonstration. =head1 SYNOPSIS use FML::Process::Project; $curproc = new FML::Process::Project; $curproc->run(); =head1 DESCRIPTION FML::Process::Project is a demonstration module to show fml module usage. This module provides Project presentation as a simple scheduler based on FML::Demo::Project class. =head1 METHODS =head2 new($args) constructor. =head2 prepare($args) load default configuration file to use $path_* variables. =head2 verify_request($args) dummy. =head2 run($args) main routine. It parses the specified file and print it out by CSV or HTML TABLE format. You can specify the format by --csv or --html command line option. CSV by default. =head2 finish($args) dummy. =cut # Descriptions: constructor. # avoid the default fml new() since we do not need it. # Arguments: OBJ($self) HASH_REF($args) # Side Effects: none # Return Value: OBJ sub new { my ($self, $args) = @_; my ($type) = ref($self) || $self; my $me = {}; $me->{ main_cf } = $args->{ main_cf }; $me->{ __parent_args } = $args; return bless $me, $type; } # Descriptions: load default configurations to use $path_* info. # Arguments: OBJ($curproc) HASH_REF($args) # Side Effects: none # Return Value: none sub prepare { my ($curproc, $args) = @_; # load default configurations. use FML::Config; $curproc->{ config } = new FML::Config; $curproc->config_cf_files_load(); } # Descriptions: dummy. # Arguments: OBJ($self) HASH_REF($args) # Side Effects: none # Return Value: none sub verify_request { 1; } # Descriptions: dummy. # Arguments: OBJ($self) HASH_REF($args) # Side Effects: none # Return Value: none sub finish { 1; } # Descriptions: prepare parameters and call FML::Demo::Project module. # we use w3m to show Project (HTML table). # Arguments: OBJ($curproc) HASH_REF($args) # Side Effects: create temporary file and remove it in the last # Return Value: none sub run { my ($curproc, $args) = @_; my $config = $curproc->config(); my $argv = $curproc->command_line_raw_argv(); my $option = $curproc->command_line_options(); my $mode = 'text'; # -h or --help if (defined $option->{ h } || defined $option->{ help }) { return $curproc->help(); } use FML::Demo::Chart; use FML::Demo::Project; my $file = $argv->[0]; my $proj = new FML::Demo::Project; $proj->parse($file); $proj->build(); if (defined $option->{ html }) { $proj->print_as_html_table(); } elsif (defined $option->{ csv }) { $proj->print_as_csv(); } elsif (defined $option->{ xml }) { $proj->print_as_xml(); } else { $proj->print_as_xml(); } } # Descriptions: show help. # Arguments: OBJ($curproc) # Side Effects: none # Return Value: none sub help { my ($curproc) = @_; my $name = $0; eval q{ use File::Basename; $name = basename($0); if ($name =~ /(\w+)$/) { $name = $1;} }; print <<"_EOF_"; Usage: $name [--debug] [--html] [--csv] [--xml] --debug debug mode on --html dump data as html table format --csv dump data as CSV --xml dump data as GanttProject xml format _EOF_ } =head1 CODING STYLE See C on fml coding style guide. =head1 AUTHOR Ken'ichi Fukamachi =head1 COPYRIGHT Copyright (C) 2006 Ken'ichi Fukamachi All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 HISTORY FML::Process::Project first appeared in fml8 mailing list driver package. See C for more details. C is renamed to C. =cut 1;