ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/Scram/ScramProjectDB.pm
(Generate patch)

Comparing COMP/SCRAM/src/Scram/ScramProjectDB.pm (file contents):
Revision 1.2 by williamc, Mon Aug 28 08:35:15 2000 UTC vs.
Revision 1.3 by williamc, Wed Nov 15 10:08:27 2000 UTC

# Line 13 | Line 13
13   # file()                   : return the db file
14   # getarea(name,version) : return the object matching the name version
15   # addarea(ConfigArea)   : add a project - return 0 for success 1 for abort
16 < # list()                : list areas (retunns $name,$version pairs)
16 > # list()                : list local areas (retunns $name,$version pairs)
17 > # listall()             : list local and linked areas
18 > # listlinks()           : Show a list of links
19   # removearea(name,version) : remove the named project
20   # link(dblocation) : link with specified db
21   # unlink(dblocation) : remove link with a specified db
# Line 43 | Line 45 | sub getarea {
45          my $name=shift;
46          my $version=shift;
47  
48 <        my $area;
48 >        my $area=undef;
49          my $index=$self->_findlocal($name,$version);
50          if ( $index != -1 ) {  
51           my $location=$self->{projects}[$index][3];
# Line 64 | Line 66 | sub getarea {
66           }
67          }
68          else {
69 +           # -- search in linked databases
70 +           foreach $db ( @{$self->{linkeddbs}} ) {
71 +              $self->verbose("Searching in $db->file() for $name $version");
72 +              $area=$db->getarea($name,$version);
73 +              last if (defined $area);
74 +           }
75 +        }
76 +        if ( ! defined $area ) {
77             $self->verbose("Area $name $version not found");
78          }
79          return $area;
# Line 107 | Line 117 | sub addarea {
117          return 0;
118   }
119  
120 + sub listlinks {
121 +        my $self=shift;
122 +
123 +        my  @dbfile=();
124 +        foreach $db ( @{$self->{linkeddbs}} ) {
125 +          push @dbfile, $db->file();
126 +        }
127 +        return @dbfile;
128 + }
129 +
130   sub list {
131          my $self=shift;
132          return @{$self->{projects}};
133   }
134  
135 + sub listall {
136 +        my $self=shift;
137 +        my @list=$self->list();
138 +
139 +        foreach $db ( @{$self->{linkeddbs}} ) {
140 +          $self->verbose("Adding list from $db");
141 +          push @list, $db->listall();
142 +        }
143 +        return @list;
144 + }
145 +
146   sub removearea {
147          my $self=shift;
148          my $name=shift;
# Line 129 | Line 160 | sub link {
160          $self->_save();
161   }
162  
163 + sub unlink {
164 +        my $self=shift;
165 +        my $file=shift;
166 +
167 +        my $db;
168 +        for (my $i=0; $i<=$#{$self->{linkeddbs}}; $i++ ) {
169 +           $db=${$self->{linkeddbs}}[$i];
170 +           if  ( $db->file() eq $file ) {
171 +             $self->verbose("Removing link $file");
172 +             splice (@{$self->{linkeddbs}},$i,1);
173 +             $self->_save();
174 +           }
175 +        }
176 + }
177 +
178   # -- Support Routines
179  
180   #
# Line 175 | Line 221 | sub _readdbfile {
221          
222          use FileHandle;
223          my $fh=FileHandle->new();
224 +        $self->verbose("Initialising db from $file");
225          open ( $fh, "<$file" );
226  
227          my @vars;
228 +        my $newdb;
229          while ( $map=<$fh> ) {
230            chomp $map;
231            if ( $map=~/^\!DB (.*)/ ) { # Check for other DB files
232                  my $db=$1;
233                  if ( -f $db ) {
234 +                  $self->verbose("Getting Linked DB $db");
235                    $newdb=Scram::ScramProjectDB->new($db);
236                    push @{$self->{linkeddbs}},$newdb;
237                  }
238                  next;
239            }
240            @vars = split ":", $map;
241 +          $self->verbose("registering project $map");
242            push @{$self->{projects}}, [ @vars ];
243          }
244          undef $fh;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines