Class: Port
- Inherits:
-
Object
- Object
- Port
- Defined in:
- lib/jungle_path/app/ztools/zport_data.rb
Overview
notes: key_id lookup has been hardcoded to use @current_key. users will not be ported, but must be added as new users in new system.
Instance Method Summary collapse
- #create_db_and_schema ⇒ Object
- #create_log_table ⇒ Object
- #db_log(msg, type, db) ⇒ Object
- #initial_data ⇒ Object
-
#initialize(source_db, target_db, target_db_postgresql, logger = nil, source_database_type = :sql_server) ⇒ Port
constructor
A new instance of Port.
- #log(msg, db = nil) ⇒ Object
- #log_error(msg, db = nil) ⇒ Object
- #log_warn(msg, db = nil) ⇒ Object
- #reset_db ⇒ Object
- #set_log_id ⇒ Object
- #user ⇒ Object
Constructor Details
#initialize(source_db, target_db, target_db_postgresql, logger = nil, source_database_type = :sql_server) ⇒ Port
Returns a new instance of Port.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 26 def initialize(source_db, target_db, target_db_postgresql, logger=nil, source_database_type=:sql_server) @user_params = {id: 0, user_name: "root"} @current_user = Schema::User.new(@user_params) @current_key = @current_user @logger = logger log "initialize" if source_database_type == :sql_server # sql server: @sql_true = "1" @sql_allow_order_bys_in_sub_select = "top 1000000000" @left_bracket = "[" @right_bracket = "]" @convert_nvarchar_beg = "convert(nvarchar, " @convert_nvarchar_end = ")" else # postgresql: @sql_true = "true" @sql_allow_order_bys_in_sub_select = "" @left_bracket = "" @right_bracket = "" @convert_nvarchar_beg = "" @convert_nvarchar_end = "::text" end @source_db = source_db @target_db = target_db @target_db_postgresql = target_db_postgresql @lookup = Lookup.new(@target_db_postgresql) if @target_db.respond_to? :log_path Dir.mkdir @target_db.log_path unless Dir.exist? @target_db.log_path @error_log_file_name = "#{@target_db.log_path}/error_#{DateTime.now.strftime("%Y%m%d_%H%M%S")}.log" else Dir.mkdir "../logs" unless Dir.exist? "../logs" @error_log_file_name = "../logs/error_#{DateTime.now.strftime("%Y%m%d_%H%M%S")}.log" end end |
Instance Method Details
#create_db_and_schema ⇒ Object
81 82 83 84 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 81 def create_db_and_schema log 'create_db_and_schema' ZCreateDb.run @target_db.postgresql end |
#create_log_table ⇒ Object
69 70 71 72 73 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 69 def create_log_table drop_table Controller::Log create_table Controller::Log @log_id = -1 end |
#db_log(msg, type, db) ⇒ Object
162 163 164 165 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 162 def db_log(msg, type, db) @log_id += 1 Controller::Log.new(@current_user, @current_key, {id: @log_id, name: "zport_data", type: type, item: msg, timestamp: Time.now.utc}, db).insert if db end |
#initial_data ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 86 def initial_data log 'initial_data', @target_db_postgresql reset_table Controller::User reset_table Controller::Role reset_table Controller::UserRole ZBootstrap.root_data(@target_db.postgresql) end |
#log(msg, db = nil) ⇒ Object
156 157 158 159 160 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 156 def log(msg, db=nil) puts "log info: #{msg}" @logger.info(msg) db_log(msg, 'info', db) if db end |
#log_error(msg, db = nil) ⇒ Object
144 145 146 147 148 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 144 def log_error(msg, db=nil) puts "log error: #{msg}" @logger.error(msg) db_log(msg, 'error', db) if db end |
#log_warn(msg, db = nil) ⇒ Object
150 151 152 153 154 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 150 def log_warn(msg, db=nil) puts "log warn: #{msg}" @logger.warn(msg) db_log(msg, 'warn', db) if db end |
#reset_db ⇒ Object
64 65 66 67 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 64 def reset_db log 'reset_db' JunglePath::Gen::DB.reset!(@target_db.postgresql) end |
#set_log_id ⇒ Object
75 76 77 78 79 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 75 def set_log_id log_id = @target_db_postgresql.get_max_id_for_table(:log) log_id = -1 if log_id == nil @log_id = log_id end |
#user ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/jungle_path/app/ztools/zport_data.rb', line 94 def user log 'user', @target_db_postgresql drop_table Controller::Contact create_table Controller::Contact sql = JunglePath::SQL::Helpers.sql(" select a.ROW_ID as siebel_id, b.FST_NAME as first_name, b.LAST_NAME as last_name, lower(b.EMAIL_ADDR) as email, b.CELL_PH_NUM as phone, lower(a.LOGIN) as user_name, a.PASSWORD as password, a.CREATED as created_at, a.CREATED_BY as created_by_siebel_id, a.LAST_UPD as updated_at, a.LAST_UPD_BY as updated_by_siebel_id from dbo.S_USER a join dbo.S_CONTACT b on a.ROW_ID = b.ROW_ID order by a.ROW_ID ") ds = @source_db.base[sql] results = ds.all id = @target_db_postgresql.get_max_id_for_table(:user) results.each do |item| id += 1 item[:user_id] = id item[:contact_id] = id end count = 0 @target_db.transaction do results.each do |h| h = hash_values_nil_if_blank(h) count += 1 puts "user: #{count} of #{results.length}." h[:email] = nil unless h[:email] and h[:email].include?('@') h[:password] = JunglePath::Authentication::Helpers.generate_api_key('generated_password_') #generate a random password for ported users. They will not have their password unless it is changed, so they will not be able to log on directly. #also, defaulting portal users to active for now...: hash = {id: h[:user_id], siebel_id: h[:siebel_id], user_name: h[:user_name], email: h[:email], first_name: h[:first_name], last_name: h[:last_name], password: h[:password], active: true} user = Controller::User.new(@current_user, @current_key, hash, @target_db).insert h[:password] = nil Controller::SiebelUser.new(@current_user, @current_key, h, @target_db).insert Controller::Contact.new(@current_user, @current_key, h, @target_db).insert Controller::SiebelContact.new(@current_user, @current_key, h, @target_db).insert end end @target_db_postgresql.reset_sequence_for_table(:user) log "user: processed #{results.length} rows.", @target_db_postgresql end |