[Bio] / FigKernelPackages / Subsystem.pm Repository:
ViewVC logotype

Diff of /FigKernelPackages/Subsystem.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6, Tue Jun 1 20:30:14 2004 UTC revision 1.7, Fri Jun 4 16:21:10 2004 UTC
# Line 3  Line 3 
3    
4  use FIG;  use FIG;
5    
6    use DirHandle;
7  use Data::Dumper;  use Data::Dumper;
8  use File::Spec;  use File::Spec;
9    
# Line 175  Line 176 
176  }  }
177    
178  #  #
179    # Retrieve the diagrams associated with this subsystem.
180    #
181    # This is done via a lookup into FIG/Data/SubsystemDiagrams/<ssaname>/<diagram-name>.
182    #
183    # Returned is a list of names.
184    #
185    
186    sub get_diagrams
187    {
188        my($self) = @_;
189    
190        my $b = $self->{name};
191        $b =~ s/ /_/g;
192        my $dir = File::Spec->catfile($FIG_Config::data, 'SubsystemDiagrams', $b);
193    
194        my $dh = new DirHandle($dir);
195    
196        my @names = grep(/^[^.]/, $dh->read());
197    
198        return @names;
199    }
200    
201    #
202    # Return a Subsystem::Diagram object for this diagram.
203    #
204    sub get_diagram
205    {
206        my($self, $name) = @_;
207    
208        my $b = $self->{name};
209        $b =~ s/ /_/g;
210        my $dir = File::Spec->catfile($FIG_Config::data, 'SubsystemDiagrams', $b, $name);
211    
212        if (-d $dir)
213        {
214            return Subsystem::Diagram->new($self, $self->{fig}, $name, $dir);
215        }
216        else
217        {
218            return undef;
219        }
220    }
221    
222    #
223  # Synchronize the database index for this subsystem to the  # Synchronize the database index for this subsystem to the
224  # subsystem data.  # subsystem data.
225  #  #
226  # We assume the table already exists.  # We assume the table already exists.
227  #  #
 # W  
 #  
228    
229  sub db_sync  sub db_sync
230  {  {
# Line 634  Line 677 
677      return $dir;      return $dir;
678  }  }
679    
680    package Subsystem::Diagram;
681    
682    sub new
683    {
684        my($class, $sub, $fig, $name, $dir) = @_;
685    
686        if (!-d $dir)
687        {
688            return undef;
689        }
690    
691        my $self = {
692            fig => $fig,
693            subsystem => $sub,
694            name => $name,
695            dir =>$ dir,
696        };
697        bless $self, $class;
698    
699        $self->load();
700    
701        return $self;
702    }
703    
704    #
705    # Parse the diagram into internal data structure.
706    #
707    
708    sub load
709    {
710        my($self) = @_;
711    
712        $self->load_area();
713    }
714    
715    sub load_area
716    {
717        my($self) = @_;
718        my $fh;
719    
720        if (!open($fh, "<$self->{dir}/area.table"))
721        {
722            warn "Could not load $self->{dir}/area.table: $!\n";
723            return;
724        }
725    
726        $self->{areas} = [];
727    
728        my $area_list = $self->{areas};
729    
730        while (<$fh>)
731        {
732            chomp;
733            s/#.*$//;
734            s/^\s+//;
735            s/\s+$//;
736            next if $_ eq '';
737            my ($area, $tag, $value) = split(/\s+/, $_, 3);
738            # print "area=$area tag=$tag value=$value\n";
739    
740            push(@$area_list, [$area, $tag, $value]);
741    
742            #
743            # Do a little checking.
744            #
745    
746            if ($tag eq "role")
747            {
748                my $idx = $self->{subsystem}->get_role_index($value);
749                if (!defined($idx))
750                {
751                    warn "Role not found for \"$value\" in subsystem $self->{subsystem}->{name}\n";
752                }
753            }
754        }
755        close($fh);
756    }
757    
758    sub get_areas
759    {
760        my($self) = @_;
761    
762        return @{$self->{areas}};
763    }
764    
765  1;  1;
766    
767    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3