#!/usr/bin/ruby $:.unshift File.join( File.dirname( $0 ), "p4ruby", RUBY_PLATFORM ) $:.unshift "/Library/Ruby/Gems/1.8/gems/json-1.1.3/lib/" require 'P4' require 'json' require 'cgi' load File.join( File.dirname( $0 ), "treemapCoreData.rb" ) def pruneTree( json, depth ) if( depth == 0 ) if( json["children"] != nil ) json["children"].clear() end return end if( json["children"] != nil ) json["children"].each do |c| pruneTree( c, depth.to_i()-1 ) end end end def getSubtree( json, id ) names = id.split( '/' ) st = json names.each do |n| st["children"].each do |c| if( c["name"] == n ) st = c; break; end end end return st end log = File.new( 'serverData.log', 'a+' ) log.puts "Beginning new run..." server = "perforce:1666" areaType = "filesize" shadingType = "filecount" id = server cgi = CGI.new # give server info on empty request if( !cgi.has_key?( 'server' ) ) data = {} data["areaTypes"] = getAreaTypes() data["shadingTypes"] = getShadingTypes() data["prettyAreaTypes"] = getPrettyAreaTypes() data["prettyShadingTypes"] = getPrettyShadingTypes() data["servers"] = getServers() data["prettyServers"] = getPrettyServers() cgi.out( "type" => "application/json", "status" => "OK" ) { JSON.pretty_generate( data ) } log.puts "\tdelivered server data" log.puts "...and done." Process.exit() end if( cgi.has_key?( 'server' ) ) server = id = cgi['server'] log.puts "\tserver set to " + cgi['server'] end if( cgi.has_key?( 'id' ) ) id = cgi['id'] log.puts "\tid set to " + cgi['id'] end if( cgi.has_key?( 'areaType' ) ) areaType = cgi['areaType'] log.puts "\tareaType set to " + cgi['areaType'] end if( cgi.has_key?( 'shadingType' ) ) shadingType = cgi['shadingType'] log.puts "\tshadingType set to " + cgi['shadingType'] end datafile = "" if( cgi.has_key?( 'data' ) ) datafile = server.delete( ':' ) + "-" + areaType + "-" + shadingType + '.dat' log.puts "\tserving up query data for " + datafile else datafile = server.delete( ':' ) + "-" + areaType + "-" + shadingType + '.json' log.puts "\tserving up json for " + datafile end Dir.chdir( "sdata" ) if( File.file?( datafile ) ) json = IO.read( datafile ) rj = JSON.parse( json ); if( !cgi.has_key?( 'data' ) ) if( rj["name"] != id ) log.puts "\tGetting subtree for #{id}" rj = getSubtree( rj, id ) end pruneTree( rj, "1" ); end cgi.out( "type" => "application/json", "status" => "OK" ) { JSON.pretty_generate( rj ) } end log.puts "...and done."