class Bezebe::CVS::CVSClient

Attributes

connection[RW]
last_error[RW]

Public Class Methods

new() click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 15
def initialize
    ::Bezebe::CVS.loadJar
end

Public Instance Methods

checkout(path, filenames = nil) click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 88
def checkout (path, filenames = nil)
    if @connection.nil?
        puts "a connection is needed first"
        return false
    end
    
    begin
        client = get_cvs_client
        client.setLocalPath path
    
        checkoutcommand_class = Rjb::import('org.netbeans.lib.cvsclient.command.checkout.CheckoutCommand')
        checkoutcommand = checkoutcommand_class.new
    
        checkoutcommand.setModule "#{filenames}" unless filenames.nil? or filenames.is_a? Array
        filenames.each { |m| checkoutcommand.setModule "#{m}" } unless filenames.nil? or !filenames.is_a? Array
    
        a_class = Rjb::import('org.netbeans.lib.cvsclient.command.GlobalOptions')
        a = a_class.new
    
        event_manager = client.getEventManager
        cvslistener = ::Bezebe::CVS::CvsListener.new
        cvslistener = Rjb::bind(cvslistener, 'org.netbeans.lib.cvsclient.event.CVSListener')
        cvslistener.client = client
        event_manager.addCVSListener cvslistener
    
        client.executeCommand(checkoutcommand, a)
    rescue => e
        p e
    rescue CommandAbortedException => e
        p e.printStackTrace
    rescue CommandException => e
        p e.printStackTrace
    rescue AuthenticationException => e
        p e.getMessage
        p e.printStackTrace
    end
end
connect(*connection_details) click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 19
def connect(*connection_details)
    @connection = Rjb::import('org.netbeans.lib.cvsclient.connection.PServerConnection').new
    scrambler = Rjb::import('org.netbeans.lib.cvsclient.connection.StandardScrambler').getInstance

    if connection_details.size == 1 then
        connection_details = connection_details[0]

        @connection.setUserName connection_details[:username]
        @connection.setEncodedPassword(scrambler.scramble(connection_details[:password]))
        @connection.setHostName connection_details[:host]
        @connection.setRepository connection_details[:repository] unless connection_details[:repository].nil?
        @connection.setPort connection_details[:port] unless connection_details[:port].nil?
    elsif connection_details.size >= 4 then
        @connection.setUserName connection_details[0]        
        @connection.setEncodedPassword(scrambler.scramble(connection_details[1]))
        @connection.setHostName connection_details[2]
        @connection.setRepository connection_details[3] unless connection_details[3].nil?   
        @connection.setPort connection_details[4] unless connection_details[4].nil?
    end
        

    begin
        @connection.open
        return true
    rescue AuthenticationException => e
        #p e
        #p e.getMessage
        #p e.printStackTrace
        case e.getMessage
            when "AuthenticationFailed"
                @last_error = "AUTHENTICATION ERROR"
            when "IOException"
                @last_error = "CONFIGURATION ERROR"
        end
        return false
    end
end
get_cvs_client() click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 61
def get_cvs_client
    standardadminhandler_class = Rjb::import('org.netbeans.lib.cvsclient.admin.StandardAdminHandler')
    client_class = Rjb::import('org.netbeans.lib.cvsclient.Client')
    client = client_class.new(@connection, standardadminhandler_class.new)
    
    return client
end
is_open?() click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 57
def is_open?
    return @connection.isOpen
end
log(path, filenames = nil) click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 166
def log (path, filenames = nil)
    if @connection.nil?
        puts "a connection is needed first"
        return false
    end
    
    begin
        client = get_cvs_client
        client.setLocalPath path
    
        logcommand_class = Rjb::import('org.netbeans.lib.cvsclient.command.log.LogCommand')
        logcommand = logcommand_class.new

        file_class = Rjb::import('java.io.File')
        files = []
        files << ( file_class.new  filenames ) unless filenames.nil? or filenames.is_a? Array
        filenames.each { |m| files << ( file_class.new m) } unless filenames.nil? or !filenames.is_a? Array
        logcommand.setFiles files
    
        a_class = Rjb::import('org.netbeans.lib.cvsclient.command.GlobalOptions')
        a = a_class.new
    
        event_manager = client.getEventManager
        cvslistener = ::Bezebe::CVS::CvsListener.new
        cvslistener = Rjb::bind(cvslistener, 'org.netbeans.lib.cvsclient.event.CVSListener')
        event_manager.addCVSListener cvslistener
    
        client.executeCommand(logcommand, a)
        return cvslistener
    rescue Exception => e
        p e
    rescue CommandException => e
        p e.printStackTrace
    rescue AuthenticationException => e
        p e.getMessage
        p e.printStackTrace
    end
end
rlog(filenames = nil) click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 205
def rlog (filenames = nil)
    if @connection.nil?
        puts "a connection is needed first"
        return false
    end
    
    begin
        client = get_cvs_client
    
        logcommand_class = Rjb::import('org.netbeans.lib.cvsclient.command.log.RlogCommand')
        logcommand = logcommand_class.new
    
        logcommand.setModule "#{filenames}" unless filenames.nil? or filenames.is_a? Array
        filenames.each { |m| logcommand.setModule "#{m}" } unless filenames.nil? or !filenames.is_a? Array
    
        a_class = Rjb::import('org.netbeans.lib.cvsclient.command.GlobalOptions')
    
        event_manager = client.getEventManager
        cvslistener = ::Bezebe::CVS::CvsListener.new
        cvslistener = Rjb::bind(cvslistener, 'org.netbeans.lib.cvsclient.event.CVSListener')
        event_manager.addCVSListener cvslistener
    
        client.executeCommand(logcommand, a_class.new)
        return cvslistener
    rescue Exception => e
        p e
    rescue AuthenticationException => e
        p e.getMessage
        p e.printStackTrace
    end
end
status(path, filenames = nil) click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 126
def status (path, filenames = nil)
    if @connection.nil?
        puts "a connection is needed first"
        return false
    end
    
    begin
        client = get_cvs_client
        client.setLocalPath path
    
        statuscommand_class = Rjb::import('org.netbeans.lib.cvsclient.command.status.StatusCommand')
        statuscommand = statuscommand_class.new

        file_class = Rjb::import('java.io.File')
        files = []
        files << ( file_class.new  filenames ) unless filenames.nil? or filenames.is_a? Array
        filenames.each { |m| files << ( file_class.new m) } unless filenames.nil? or !filenames.is_a? Array
        statuscommand.setFiles files
    
        a_class = Rjb::import('org.netbeans.lib.cvsclient.command.GlobalOptions')
        a = a_class.new
        #a.setTraceExecution true
    
        event_manager = client.getEventManager
        cvslistener = ::Bezebe::CVS::CvsListener.new
        cvslistener = Rjb::bind(cvslistener, 'org.netbeans.lib.cvsclient.event.CVSListener')
        event_manager.addCVSListener cvslistener
    
        client.executeCommand(statuscommand, a)
        return cvslistener
    rescue Exception => e
        p e
    rescue CommandException => e
        p e.printStackTrace
    rescue AuthenticationException => e
        p e.getMessage
        p e.printStackTrace
    end
end
update() click to toggle source
# File lib/bezebe-cvs/cvs_client.rb, line 69
def update
    if @connection.nil?
        puts "a connection is needed first"
        return false
    end
    
    begin
        client = get_cvs_client
        client.setLocalPath "/tmp/w3c/test/"
    rescue Exception => e
        p e
    rescue CommandException => e
        p e.printStackTrace
    rescue AuthenticationException => e
        p e.getMessage
        p e.printStackTrace
    end
end