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.6 by sashby, Mon Jun 18 15:19:51 2001 UTC vs.
Revision 1.8 by sashby, Fri Dec 10 13:41:42 2004 UTC

# Line 40 | Line 40 | sub file {
40          return $self->{dbfile};
41   }
42  
43 < sub getarea {
44 <        require Configuration::ConfigArea;
45 <        my $self=shift;
46 <        my $name=shift;
47 <        my $version=shift;
48 <
49 <        my $area=undef;
50 <        my $index=$self->_findlocal($name,$version);
51 <        if ( $index != -1 ) {  
52 <         my $location=$self->{projects}[$index][3];
53 <         if ( defined $self->{projectobjects}{$location} ) {
54 <           $area=$self->{projectobjects}{$location};
43 > sub getarea
44 >   {
45 >   require Configuration::ConfigArea;
46 >   my $self=shift;
47 >   my $name=shift;
48 >   my $version=shift;
49 >   my $area=undef;
50 >   my $index=$self->_findlocal($name,$version);
51 >  
52 >   if ( $index != -1 )
53 >      {
54 >      my $location=$self->{projects}[$index][3];
55 >      if ( defined $self->{projectobjects}{$location} )
56 >         {
57 >         $area=$self->{projectobjects}{$location};
58           }
59 <         else {
59 >      else
60 >         {
61           $area=Configuration::ConfigArea->new();
62           $self->verbose("Attempt to ressurect $name $version from $location");
63 <         if ( $area->bootstrapfromlocation($location) == 1 ) {
64 <           undef $area;
65 <           $self->verbose("attempt unsuccessful");
66 <         }
67 <         else {
68 <           $self->verbose("area found");
69 <           $self->{projectobjects}{$location}=$area;
63 >         if ( $area->bootstrapfromlocation($location) == 1 )
64 >            {
65 >            undef $area;
66 >                 $self->verbose("attempt unsuccessful");
67 >            }
68 >         else
69 >            {
70 >            $self->verbose("area found");
71 >            $self->{projectobjects}{$location}=$area;
72 >            }
73           }
74 +      }
75 +   else
76 +      {
77 +      # -- search in linked databases
78 +      foreach $db ( @{$self->{linkeddbs}} )
79 +         {
80 +         $self->verbose("Searching in $db->file() for $name $version");
81 +         $area=$db->getarea($name,$version);
82 +         last if (defined $area);
83           }
84 <        }
85 <        else {
86 <           # -- search in linked databases
87 <           foreach $db ( @{$self->{linkeddbs}} ) {
88 <              $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;
81 < }
84 >      }
85 >   if ( ! defined $area )
86 >      {
87 >      $self->verbose("Area $name $version not found");
88 >      }
89  
90 < sub addarea {
91 <        my $self=shift;
92 <        my $name=shift;
93 <        my $version=shift;
94 <        my $area=shift;
95 <
96 <        my $rv=1;
97 <        my $type="file";
98 <        my $url=$area->location()."/.SCRAM/InstallFile";
99 <        # -- check for duplicates
100 <        for ( my $index=0; $index<=$#{$self->{projects}}; $index++ ) {
101 <         if  ( $self->{projects}[$index][0] eq $name ) {
102 <          if ( $self->{projects}[$index][1] eq $version ) {
103 <            print "$name $version already exists. Overwrite? (y/n) :";
104 <            if ( ! (<STDIN>=~/y/i ) ) {
105 <                        print "Aborting install ...\n";
106 <                        return 1;
107 <            }
108 <            else {
90 >   return $area;
91 >   }
92 >
93 >
94 > sub addarea
95 >   {
96 >   my $self=shift;
97 >   my $flag=shift;
98 >   my $name=shift;
99 >   my $version=shift;
100 >   my $area=shift;
101 >
102 >   my $rv=1;
103 >   my $type="file";
104 >   my $url=$area->location();
105 >
106 >   # -- check for duplicates
107 >   for ( my $index=0; $index<=$#{$self->{projects}}; $index++ )
108 >      {
109 >      if  ( $self->{projects}[$index][0] eq $name )
110 >         {
111 >         if ( $self->{projects}[$index][1] eq $version )
112 >            {
113 >            if ($flag == 1)
114 >               {
115                 $rv=0;
116                 $self->{projects}[$index]=[ ($name,$version,$type,$url) ];
117 +               }
118 +            else
119 +               {
120 +               print "$name $version already exists. Overwrite? (y/n) : ";
121 +               if ( ! (<STDIN>=~/y/i ) )
122 +                  {
123 +                  print "Aborting install ...\n";
124 +                  return 1;
125 +                  }
126 +               else
127 +                  {
128 +                  $rv=0;
129 +                  $self->{projects}[$index]=[ ($name,$version,$type,$url) ];
130 +                  }
131 +               }
132              }
133 <          }
134 <          else {
133 >         else
134 >            {
135              print "Related Project : $name ".$self->{projects}[$index][1]."\n";
136 <          }
136 >            }
137           }
138 <        }
139 <        if ( $rv ) {
140 <           # -- add to our list and save
141 <           push @{$self->{projects}}, [ ($name,$version,$type,$url) ];
142 <        }
143 <        $self->_save();
144 <        return 0;
145 < }
138 >      }
139 >  
140 >   if ( $rv )
141 >      {
142 >      # -- add to our list and save
143 >      push @{$self->{projects}}, [ ($name,$version,$type,$url) ];
144 >      }
145 >  
146 >   $self->_save();
147 >   return 0;
148 >   }
149  
150   sub listlinks {
151          my $self=shift;
# Line 134 | Line 165 | sub list {
165   sub listall {
166          my $self=shift;
167          my @list=$self->list();
168 <
168 >        
169          foreach $db ( @{$self->{linkeddbs}} ) {
170            $self->verbose("Adding list from $db");
171            push @list, $db->listall();
172          }
173 +
174          return @list;
175   }
176  
# Line 157 | Line 189 | sub removearea
189     #          :                                                  #
190     ###############################################################
191     my $self=shift;
192 +   my $flag=shift;
193     my $name=shift;
194     my $version=shift;
195     my $vfound=0;
# Line 176 | Line 209 | sub removearea
209              {
210              # We have a match for project name and version:
211              $vfound=1;
212 <            print "Project $name Version $version exists. Remove it? (y/n): ";
180 <            if ( ! (<STDIN>=~/y/i ) )
181 <               {
182 <               print "\n","Aborting project removal...bye.\n\n";
183 <               return 1;
184 <               }
185 <            else
212 >            if ($flag == 1)
213                 {
214                 # Remove the project:
215                 print "\n";
216                 print "Removing project:\t$name\t$version","\n\n";
217                 splice(@{$self->{projects}},$index,1);
218                 }
219 +            else
220 +               {
221 +               print "Project $name Version $version exists. Remove it? (y/n): ";
222 +               if ( ! (<STDIN>=~/y/i ) )
223 +                  {
224 +                  print "\n","Aborting project removal...bye.\n\n";
225 +                  return 1;
226 +                  }
227 +               else
228 +                  {
229 +                  # Remove the project:
230 +                  print "\n";
231 +                  print "Removing project:\t$name\t$version","\n\n";
232 +                  splice(@{$self->{projects}},$index,1);
233 +                  }
234 +               }
235              }
236           }
237        }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines