[Bio] / FigKernelScripts / OneShotAttributeAdder.pl Repository:
ViewVC logotype

View of /FigKernelScripts/OneShotAttributeAdder.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (download) (as text) (annotate)
Tue Feb 5 02:58:06 2008 UTC (11 years, 9 months ago) by parrello
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, myrast_rel40, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
Changes since 1.1: +0 -2 lines
Removed obsolete use clauses.

#!/usr/bin/perl -w

=head1 Attribute Adder

This is a dinky script for adding attributes culled from the MySQL command-line
tool. Only lines that start with a vertical bar and a space are processed. These lines
must contain an identifier, a vertical bar surrounded by spaces, a value, and a vertical
bar preceded by spaces at the end of the line. If the identifier is C<id>, the value
is presumed to be an attribute name. Otherwise, the identifier is an object ID and the
value is an attribute value. The named attribute is cleared when we find its name,
and then reloaded from the subsequent objectID/value lines. The input is from the
standard input.

The currently-supported command-line options are as follows.

=over 4

=item user

Name suffix to be used for log files. If omitted, the PID is used.

=item trace

Numeric trace level. A higher trace level causes more messages to appear. The
default trace level is 2. Tracing will be directly to the standard output
as well as to a C<trace>I<User>C<.log> file in the FIG temporary directory,
where I<User> is the value of the B<user> option above.

=item sql

If specified, turns on tracing of SQL activity.

=item background

Save the standard and error output to files. The files will be created
in the FIG temporary directory and will be named C<err>I<User>C<.log> and
C<out>I<User>C<.log>, respectively, where I<User> is the value of the
B<user> option above.

=item h

Display this command's parameters and options.

=item phone

Phone number to message when the script is complete.

=back

=cut

use strict;
use Tracer;
use Cwd;
use File::Copy;
use File::Path;
use FIG;
use Stats;

# Get the command-line options and parameters.
my ($options, @parameters) = StandardSetup([qw(FIG) ],
                                           {
                                              phone => ["", "phone number (international format) to call when load finishes"],
                                           },
                                           "",
                                           @ARGV);
# Set a variable to contain return type information.
my $rtype;
# Insure we catch errors.
eval {
    # Get the FIG object.
    my $fig = FIG->new();
    # Denote we do not yet have an attribute name.
    my $attributeName;
    # Get a statistics object.
    my $stats = Stats->new();
    # Loop through the input.
    while (my $line = <STDIN>) {
        # Parse this line.
        if ($line =~ /^\|\s+(\S+)\s+\|\s+(.+?)\s+\|$/) {
            my ($id, $value) = ($1, $2);
            if ($id eq 'id') {
                # Here we have an identified attribute name.
                $attributeName = $value;
                $stats->Add(attributes => 1);
                # Erase the attribute.
                $fig->erase_attribute_entirely($value);
                Trace("Attribute $value erased.") if T(2);
            } elsif (! $attributeName) {
                # Here we want to add an attribute, but don't yet have an attribute name.
                Trace("Line for $id skipped: no attribute defined.") if T(1);
                $stats->Add(error => 1);
            } else {
                # Here we can add an attribute value.
                $fig->add_attribute($id, $attributeName, $value);
                $stats->Add("key=$attributeName", 1);
            }
        } else {
            $stats->Add(skipped => 1);
        }
    }
    Trace("Results of run:\n" . $stats->Show()) if T(2);
    Trace("Processing complete.") if T(2);
};
if ($@) {
    Trace("Script failed with error: $@") if T(0);
    $rtype = "error";
} else {
    Trace("Script complete.") if T(2);
    $rtype = "no error";
}
if ($options->{phone}) {
    my $msgID = Tracer::SendSMS($options->{phone}, "Attribute Adder terminated with $rtype.");
    if ($msgID) {
        Trace("Phone message sent with ID $msgID.") if T(2);
    } else {
        Trace("Phone message not sent.") if T(2);
    }
}



1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3