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.4 by sashby, Mon May 28 09:06:44 2001 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 39 | Line 41 | sub file {
41   }
42  
43   sub getarea {
44 <        my $self=shift;
44 >        require Configuration::ConfigArea;
45 >        my $self=shift;
46          my $name=shift;
47          my $version=shift;
48  
49 <        my $area;
49 >        my $area=undef;
50          my $index=$self->_findlocal($name,$version);
51          if ( $index != -1 ) {  
52           my $location=$self->{projects}[$index][3];
# Line 64 | Line 67 | sub getarea {
67           }
68          }
69          else {
70 +           # -- search in linked databases
71 +           foreach $db ( @{$self->{linkeddbs}} ) {
72 +              $self->verbose("Searching in $db->file() for $name $version");
73 +              $area=$db->getarea($name,$version);
74 +              last if (defined $area);
75 +           }
76 +        }
77 +        if ( ! defined $area ) {
78             $self->verbose("Area $name $version not found");
79          }
80          return $area;
# Line 76 | Line 87 | sub addarea {
87          my $area=shift;
88  
89          my $rv=1;
79
80        #my $type="_location"; not ready for this yet
90          my $type="file";
91          my $url=$area->location()."/.SCRAM/InstallFile";
92          # -- check for duplicates
93          for ( my $index=0; $index<=$#{$self->{projects}}; $index++ ) {
94           if  ( $self->{projects}[$index][0] eq $name ) {
95            if ( $self->{projects}[$index][1] eq $version ) {
96 <            print "$name $version alreay exists. Overwrite (y/n)\n";
96 >            print "$name $version already exists. Overwrite? (y/n) :";
97              if ( ! (<STDIN>=~/y/i ) ) {
98                          print "Aborting install ...\n";
99                          return 1;
# Line 107 | Line 116 | sub addarea {
116          return 0;
117   }
118  
119 + sub listlinks {
120 +        my $self=shift;
121 +
122 +        my  @dbfile=();
123 +        foreach $db ( @{$self->{linkeddbs}} ) {
124 +          push @dbfile, $db->file();
125 +        }
126 +        return @dbfile;
127 + }
128 +
129   sub list {
130          my $self=shift;
131          return @{$self->{projects}};
132   }
133  
134 + sub listall {
135 +        my $self=shift;
136 +        my @list=$self->list();
137 +
138 +        foreach $db ( @{$self->{linkeddbs}} ) {
139 +          $self->verbose("Adding list from $db");
140 +          push @list, $db->listall();
141 +        }
142 +        return @list;
143 + }
144 +
145   sub removearea {
146          my $self=shift;
147          my $name=shift;
# Line 129 | Line 159 | sub link {
159          $self->_save();
160   }
161  
162 + sub unlink {
163 +        my $self=shift;
164 +        my $file=shift;
165 +
166 +        my $db;
167 +        for (my $i=0; $i<=$#{$self->{linkeddbs}}; $i++ ) {
168 +           $db=${$self->{linkeddbs}}[$i];
169 +           if  ( $db->file() eq $file ) {
170 +             $self->verbose("Removing link $file");
171 +             splice (@{$self->{linkeddbs}},$i,1);
172 +             $self->_save();
173 +           }
174 +        }
175 + }
176 +
177   # -- Support Routines
178  
179   #
# Line 175 | Line 220 | sub _readdbfile {
220          
221          use FileHandle;
222          my $fh=FileHandle->new();
223 +        $self->verbose("Initialising db from $file");
224          open ( $fh, "<$file" );
225  
226          my @vars;
227 +        my $newdb;
228          while ( $map=<$fh> ) {
229            chomp $map;
230            if ( $map=~/^\!DB (.*)/ ) { # Check for other DB files
231                  my $db=$1;
232                  if ( -f $db ) {
233 +                  $self->verbose("Getting Linked DB $db");
234                    $newdb=Scram::ScramProjectDB->new($db);
235                    push @{$self->{linkeddbs}},$newdb;
236                  }
237                  next;
238            }
239            @vars = split ":", $map;
240 +          $self->verbose("registering project $map");
241            push @{$self->{projects}}, [ @vars ];
242          }
243          undef $fh;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines