⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testdirectorconnection.pm

📁 codestriker is a develop useful tool to review code on web user interface.
💻 PM
字号:
################################################################################ Codestriker: Copyright (c) 2001, 2002 David Sitsky.  All rights reserved.# sits@users.sourceforge.net## This program is free software; you can redistribute it and modify it under# the terms of the GPL.# TestDirector connection class, for appending comments to a bug report.package Codestriker::BugDB::TestDirectorConnection;use strict;# Optional dependency for people who don't use this module.eval("use Win32::OLE;");# Static method for building a database connection.sub get_connection($) {    my ($type) = @_;    # Return a connection with Test Director via the TD Object.    my $self = {};    eval 'use Win32::OLE';    die "Unable to load Win32::OLE module: $@\n" if $@;    my $conn = Win32::OLE->new('TDapiole80.TDconnection');    if (!$conn) {        die "Cannot start TestDirector object";    }    # Connect to specified server.    $conn->InitConnectionEx($Codestriker::testdirector_url);    # Connect to specified project.    $conn->Login($Codestriker::testdirector_user_id,                 $Codestriker::testdirector_password);    $conn->Connect($Codestriker::testdirector_domain,                   $Codestriker::testdirector_project);    $self->{dbh} = $conn;    bless $self, $type;}# Method for releasing a Test Director connection.sub release_connection($) {    my ($self) = @_;    # Close the TD connection.    # Disconnect the project and release the server.    $self->{dbh}->Disconnect();    $self->{dbh}->Logout();    $self->{dbh}->ReleaseConnection();}# Retrieve the specified bug record.sub _retrieve_bug_record {    my ($self, $bugid) = @_;    if (! defined $self->{dbh}->bugfactory) {        die "Unable to retrieve bug factory object";    }    return $self->{dbh}->bugfactory->item($bugid);}# Return true if the specified bugid exists in the bug database,# false otherwise.sub bugid_exists($$) {    my ($self, $bugid) = @_;    my $bug = $self->_retrieve_bug_record($bugid);    return defined $bug;}# Method for updating the bug with information that a code review has been# created/closed/committed/deleted against this bug.sub update_bug($$$$$) {    my ($self, $bugid, $comment, $topic_url, $topic_state) = @_;    # Now get the bug out of Test Director.    my $bug = $self->_retrieve_bug_record($bugid);    # Test director stores comments as html so convert the comment to html.    my $parsed_comment = $comment;    $parsed_comment =~ s/\n/<BR>/g;    my $full_comment = "";    $full_comment .= "\n<HTML><BODY>\n";    $full_comment .= "<font color=\"\#000080\">";    $full_comment .= "<b>Code Review, &nbsp;";    $full_comment .= localtime;    $full_comment .= ":</b></font><BR>";    $full_comment .= $parsed_comment;    $full_comment .= "</BODY></HTML>\n";    if (defined $bug->Attachments) {        if ( $topic_state eq "Deleted" ) {            $self->_update_bug_delete( $bug->Attachments, $topic_url );        } else {            my $attach = $bug->Attachments->AddItem([$topic_url,                                                     "TDATT_INTERNET",                                                     $full_comment]);            $attach->post();        }    } else {        $$bug{"BG_DEV_COMMENTS"} .= $full_comment;        $bug->post();    }}# Method for updating the bug with information that a code review has been# deleted against this bug.sub _update_bug_delete($$$) {    my ($self, $attachments, $topic_url) = @_;    if ( $attachments ) {        my $attachment_list = $attachments->NewList("");        my $attach_counter = 1;        while ( $attach_counter <= $attachment_list->Count ) {            my $attachment = $attachment_list->Item($attach_counter);            if ( $attachment->Name eq $topic_url ) {                # Remove the attachment for the deleted topic                $attachments->RemoveItem($attachment->ID);            }            $attach_counter++;        }    }}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -