Util::HTMLcatalog (version 1.0)


package Util::HTMLcatalog;

##############################################################################
#
# DESCRIPTION: Create a catalog of files in HTML format. This Class works
# DESCRIPTION: just like the parent class except that the output is in
# DESCRIPTION: HTML format.
#
# HISTORY:
#
# VERSION: 1.0
#
##############################################################################

use Util::Catalog;
@ISA = ("Util::Catalog");
use strict;


#########################################
# constructor
#########################################
sub new {
    my $proto=shift;
    my $self=$proto->SUPER::new(shift);

    my $filename=$self->filename();


    ####################################
    # file type of the HTML list
    ####################################
    $self->{HTML_TYPE}=shift;
    $self->{CAT_NAME}=$filename->get($self->{HTML_TYPE});

    ##############################################
    # write the HTML header
    ##############################################
    my $seq=$filename->sequence();
    my $header=$filename->get("header");

    $self->{DATA}.="<HTML>\n";
    $self->{DATA}.="<TITLE>\n";
    $self->{DATA}.="Sequence $seq File List\n";
    $self->{DATA}.="</TITLE>\n";
    $self->{DATA}.="<BODY>\n";
    $self->{DATA}.="<H1>Sequence $seq File List</H1>\n";

    $self->{DATA}.="This page lists all of the files included in the\n";
    $self->{DATA}.="distribution for this sequence.\n";
    $self->{DATA}.="The size of most files is given after the\n";
    $self->{DATA}.="file name.\n";
    $self->{DATA}.="<P>\n";

    $self->{DATA}.="The following information is also available:\n";
    $self->{DATA}.="<UL>\n";
    $self->{DATA}.="  <LI><STRONG><A HREF=\"${header}\">\n";
    $self->{DATA}.="  The processing header page</A></STRONG>\n";
    $self->{DATA}.="</UL>\n";
    $self->{DATA}.="<HR>\n";

    return $self;
}

#####################
# METHODS:
#####################

###################################################
# add all the files of a given type to the catalog
###################################################
sub add_type {
    my $self=shift;
    my $type=shift;

    my @files=$self->files_of_type($type);
    if(! @files) {return};

    my $description=$self->filename()->description($type);
    my $format=$self->format($files[0]);

    ########################################
    # HTML header for this file type
    ########################################
    
    $self->{DATA}.="<H2>$description ($format)</H2>\n";
    $self->{DATA}.="<OL>\n";
 
    my $file;
    foreach $file (@files ) {
        $self->add_file($file);
    }

    $self->{DATA}.="</OL>\n";

}


######################################
# add a file to the catalog
######################################
sub add_file {
    my $self=shift;
    my $file=shift;

    my $size=$self->size($file);

    $self->{DATA}.="<LI> $file";
    if($size) { $self->{DATA}.=" ($size kilobytes)\n" }
    else      { $self->{DATA}.=                  "\n" }

}

###########################################
# write the file
###########################################
sub close {
    my $self=shift;

    my $filename=$self->filename();

    my $file=$filename->get($self->{HTML_TYPE});

    open HTML, ">$file";
    print HTML $self->{DATA};
    close HTML;

}


1;