Sha256: 3326a3f27a43f3ebce6295895bce36e420b47381f8beb0233d616cf345c041cd

Contents?: true

Size: 1.88 KB

Versions: 7

Compression:

Stored size: 1.88 KB

Contents

require 'fileutils'
require 'yaml'
require 'jiji/util/fix_yaml_bug'
require 'jiji/util/file_lock'
require 'jiji/process'
require 'kconv'

module JIJI
  module Migration

    #===1.1.3 → 1.2.0
    class Migrator1_2_0
      def migrate( registry )
        logger = registry.server_logger

        #出力の保存先を置換
        Dir.glob("#{registry.process_dir}/*") {|d|
          
          logger.info "convert : #{d}"
          process_id = File.basename(d)
          process_info = {}
          begin
            file = "#{d}/#{JIJI::ProcessInfo::PROPERTY_FILE}"
            process_info = YAML.load_file(file) if  File.exist?(file)
          rescue Exception
            logger.error $!
          end
          
          begin
            # 出力データを列挙
            Dir.glob("#{d}/out/*").map.each {|out_dir|
              convert_out_dir( out_dir, process_info, logger )
            }
          rescue Exception
            logger.error $!
          end
        }
      end

      #各出力ディリクトリデータのリネーム
      def convert_out_dir( out_dir, info, logger )
        begin
          agent_id = JIJI::Util.decode( File.basename(out_dir))
          agent_name = resolve_name( info, agent_id )
          FileLock.new( "#{out_dir}/#{JIJI::Output::PROPERTIES_FILE_NAME}" ).writelock { |f|
            f.write( YAML.dump({:agent_name=>agent_name}) )
          }
          FileUtils.mv out_dir, "#{File.dirname(out_dir)}/#{agent_id}"
        rescue Exception
          logger.error $!
        end
      end
      #エージェント名を解決する
      def resolve_name( process_info, agent_id )
        if ( process_info["agents"]  )
          item = process_info["agents"].find {|i| i["id"] == agent_id }
          return item["name"] if item
        end
        return "不明"
      end

    end

  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
unageanu-jiji-1.2.1 lib/jiji/migration/migrator1_2_0.rb
unageanu-jiji-1.2.3 lib/jiji/migration/migrator1_2_0.rb
unageanu-jiji-1.2.4 lib/jiji/migration/migrator1_2_0.rb
jiji-1.2.8 lib/jiji/migration/migrator1_2_0.rb
jiji-1.2.7 lib/jiji/migration/migrator1_2_0.rb
jiji-1.2.6 lib/jiji/migration/migrator1_2_0.rb
jiji-1.2.5 lib/jiji/migration/migrator1_2_0.rb