summaryrefslogtreecommitdiffstats
path: root/Bugzilla
diff options
context:
space:
mode:
authormkanat%kerio.com <>2005-02-25 11:38:30 +0100
committermkanat%kerio.com <>2005-02-25 11:38:30 +0100
commite55f50413748e341795cc9233f61ffc26f346df5 (patch)
tree52ef11f803f5cb37945dcf31733b8591ebc2adfb /Bugzilla
parent65f999de859324507eb40e934bc6b647f143511a (diff)
downloadbugzilla-e55f50413748e341795cc9233f61ffc26f346df5.tar.gz
bugzilla-e55f50413748e341795cc9233f61ffc26f346df5.tar.xz
Bug 281590: Stop using RelationSet
Patch By Max Kanat-Alexander <mkanat@kerio.com> a=myk
Diffstat (limited to 'Bugzilla')
-rw-r--r--Bugzilla/RelationSet.pm267
1 files changed, 0 insertions, 267 deletions
diff --git a/Bugzilla/RelationSet.pm b/Bugzilla/RelationSet.pm
deleted file mode 100644
index 628746352..000000000
--- a/Bugzilla/RelationSet.pm
+++ /dev/null
@@ -1,267 +0,0 @@
-#
-# The contents of this file are subject to the Mozilla Public
-# License Version 1.1 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS
-# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-# implied. See the License for the specific language governing
-# rights and limitations under the License.
-#
-# The Original Code is the Bugzilla Bug Tracking System.
-#
-# The Initial Developer of the Original Code is Netscape Communications
-# Corporation. Portions created by Netscape are
-# Copyright (C) 2000 Netscape Communications Corporation. All
-# Rights Reserved.
-#
-# Contributor(s): Dan Mosedale <dmose@mozilla.org>
-# Terry Weissman <terry@mozilla.org>
-# Dave Miller <justdave@syndicomm.com>
-
-# This object models a set of relations between one item and a group
-# of other items. An example is the set of relations between one bug
-# and the users CCed on that bug. Currently, the relation objects are
-# expected to be bugzilla userids. However, this could and perhaps
-# should be generalized to work with non userid objects, such as
-# keywords associated with a bug. That shouldn't be hard to do; it
-# might involve turning this into a virtual base class, and having
-# UserSet and KeywordSet types that inherit from it.
-
-use strict;
-
-# XXX - mod_perl
-# Everything that uses Bugzilla::RelationSet should already have globals.pl
-# loaded so we don't want to load it here. Doing so causes a loop in Perl
-# because globals.pl turns around and does a 'use Bugzilla::RelationSet'
-# See http://bugzilla.mozilla.org/show_bug.cgi?id=72862
-#require "../globals.pl";
-
-package Bugzilla::RelationSet;
-
-# create a new empty Bugzilla::RelationSet
-#
-sub new {
- my $type = shift();
-
- # create a ref to an empty hash and bless it
- #
- my $self = {};
- bless $self, $type;
-
- # construct from a comma-delimited string
- #
- if ($#_ == 0) {
- $self->mergeFromString($_[0]);
- }
- # unless this was a constructor for an empty list, somebody screwed up.
- #
- elsif ( $#_ != -1 ) {
- confess("invalid number of arguments");
- }
-
- # bless as a Bugzilla::RelationSet
- #
- return $self;
-}
-
-# Assumes that the set of relations "FROM $table WHERE $constantSql and
-# $column = $value" is currently represented by $self, and this set should
-# be updated to look like $other.
-#
-# Returns an array of two strings, one INSERT and one DELETE, which will
-# make this change. Either or both strings may be the empty string,
-# meaning that no INSERT or DELETE or both (respectively) need to be done.
-#
-# THE CALLER IS RESPONSIBLE FOR ANY DESIRED LOCKING AND/OR CONSISTENCY
-# CHECKS (not to mention doing the SendSQL() calls).
-#
-sub generateSqlDeltas {
- ($#_ == 5) || confess("invalid number of arguments");
- my ( $self, # instance ptr to set representing the existing state
- $endState, # instance ptr to set representing the desired state
- $table, # table where these relations are kept
- $invariantName, # column held const for a Bugzilla::RelationSet (often "bug_id")
- $invariantValue, # what to hold the above column constant at
- $columnName # the column which varies (often a userid)
- ) = @_;
-
- # construct the insert list by finding relations which exist in the
- # end state but not the current state.
- #
- my @endStateRelations = keys(%$endState);
- my @insertList = ();
- foreach ( @endStateRelations ) {
- push ( @insertList, $_ ) if ( ! exists $$self{"$_"} );
- }
-
- # we've built the list. If it's non-null, add required sql chrome.
- #
- my $sqlInsert="";
- if ( $#insertList > -1 ) {
- $sqlInsert = "INSERT INTO $table ($invariantName, $columnName) VALUES " .
- join (",",
- map ( "($invariantValue, $_)" , @insertList )
- );
- }
-
- # construct the delete list by seeing which relations exist in the
- # current state but not the end state
- #
- my @selfRelations = keys(%$self);
- my @deleteList = ();
- foreach ( @selfRelations ) {
- push (@deleteList, $_) if ( ! exists $$endState{"$_"} );
- }
-
- # we've built the list. if it's non-empty, add required sql chrome.
- #
- my $sqlDelete = "";
- if ( $#deleteList > -1 ) {
- $sqlDelete = "DELETE FROM $table WHERE $invariantName = $invariantValue " .
- "AND $columnName IN ( " . join (",", @deleteList) . " )";
- }
-
- return ($sqlInsert, $sqlDelete);
-}
-
-# compare the current object with another.
-#
-sub isEqual {
- ($#_ == 1) || confess("invalid number of arguments");
- my $self = shift();
- my $other = shift();
-
- # get arrays of the keys for faster processing
- #
- my @selfRelations = keys(%$self);
- my @otherRelations = keys(%$other);
-
- # make sure the arrays are the same size
- #
- return 0 if ( $#selfRelations != $#otherRelations );
-
- # bail out if any of the elements are different
- #
- foreach my $relation ( @selfRelations ) {
- return 0 if ( !exists $$other{$relation})
- }
-
- # we made it!
- #
- return 1;
-
-}
-
-# merge the results of a SQL command into this set
-#
-sub mergeFromDB {
- ( $#_ == 1 ) || confess("invalid number of arguments");
- my $self = shift();
-
- &::SendSQL(shift());
- while (my @row = &::FetchSQLData()) {
- $$self{$row[0]} = 1;
- }
-
- return;
-}
-
-# merge a set in string form into this set
-#
-sub mergeFromString {
- ($#_ == 1) || confess("invalid number of arguments");
- my $self = shift();
-
- # do the merge
- #
- foreach my $person (split(/[ ,]/, shift())) {
- if ($person ne "") {
- $$self{&::DBNameToIdAndCheck($person)} = 1;
- }
- }
-}
-
-# remove a set in string form from this set
-#
-sub removeItemsInString {
- ($#_ == 1) || confess("invalid number of arguments");
- my $self = shift();
-
- # do the merge
- #
- foreach my $person (split(/[ ,]/, shift())) {
- if ($person ne "") {
- my $dbid = &::DBNameToIdAndCheck($person);
- if (exists $$self{$dbid}) {
- delete $$self{$dbid};
- }
- }
- }
-}
-
-# remove a set in array form from this set
-#
-sub removeItemsInArray {
- ($#_ > 0) || confess("invalid number of arguments");
- my $self = shift();
-
- # do the merge
- #
- while (my $person = shift()) {
- if ($person ne "") {
- my $dbid = &::DBNameToIdAndCheck($person);
- if (exists $$self{$dbid}) {
- delete $$self{$dbid};
- }
- }
- }
-}
-
-# return the number of elements in this set
-#
-sub size {
- my $self = shift();
-
- my @k = keys(%$self);
- return $#k++;
-}
-
-# return this set in array form
-#
-sub toArray {
- my $self= shift();
-
- return keys(%$self);
-}
-
-# return this set as an array of strings
-#
-sub toArrayOfStrings {
- ($#_ == 0) || confess("invalid number of arguments");
- my $self = shift();
-
- my @result = ();
- foreach my $i ( keys %$self ) {
- push @result, &::DBID_to_name($i);
- }
-
- return sort { lc($a) cmp lc($b) } @result;
-}
-
-# return this set in string form (comma-separated and sorted)
-#
-sub toString {
- ($#_ == 0) || confess("invalid number of arguments");
- my $self = shift();
-
- my @result = ();
- foreach my $i ( keys %$self ) {
- push @result, &::DBID_to_name($i);
- }
-
- return join(',', sort(@result));
-}
-
-1;