ptc_datamapper 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/bin/ptc_datamapper +3 -0
  2. data/lib/ptc_datamapper.rb +100 -0
  3. metadata +81 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'ptc_datamapper'
@@ -0,0 +1,100 @@
1
+ require 'rubygems'
2
+ require 'csv-mapper'
3
+ require 'active_record'
4
+ require 'sqlite3'
5
+ include CsvMapper
6
+
7
+ ActiveRecord::Base.establish_connection(
8
+ :adapter => "sqlite3",
9
+ :database => "ptc_datamapper.sqlite3"
10
+ )
11
+
12
+ ActiveRecord::Schema.define do
13
+ create_table :people do |t|
14
+ t.column :input_id, :string
15
+ t.column :first_name, :string
16
+ t.column :last_name, :string
17
+ t.column :address, :string
18
+ t.column :city, :string
19
+ t.column :state, :string
20
+ t.column :zip, :string
21
+ t.column :email, :string
22
+ t.column :birth_month, :string
23
+ t.column :birth_day, :string
24
+ t.column :birth_year, :string
25
+ t.column :ptc, :string
26
+ t.column :date_created, :string
27
+ end
28
+ end
29
+
30
+ class Mapper
31
+ def import_data(importfile)
32
+ @importfile = importfile
33
+ @persons = import_from_file
34
+ end
35
+
36
+ def export_data(exportfile)
37
+ @exportfile = exportfile
38
+ export_to_file
39
+ end
40
+
41
+ def import_from_file
42
+ results = import(@importfile) do
43
+ map_to Person
44
+ # after_row lambda{|row, person| person.save}
45
+
46
+ start_at_row 1
47
+ [input_id, first_name, last_name, address, city, state, zip, email, birth_month, birth_day, birth_year, ptc, date_created]
48
+ end
49
+ results
50
+ end
51
+
52
+ def get_cr_row
53
+ 'CR|6|9999000024542||9289560|CLEARBNS|||7020||||||||1325|||||||||'
54
+ end
55
+
56
+ def format_row(data)
57
+ row = ''
58
+ data.each {|r| row = row.to_s + "#{r}|"}
59
+ row
60
+ end
61
+
62
+ def print_result
63
+ @persons.each do |p|
64
+ puts format_row(p.ptc_data)
65
+ end
66
+ end
67
+
68
+
69
+
70
+ def export_to_file
71
+ File.open(@exportfile,'w') do |export|
72
+ export.puts get_cr_row
73
+ @persons.each do |p|
74
+ export.puts format_row(p.na_data)
75
+ export.puts format_row(p.ptc_data) if p.ptc
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+
82
+ class Person < ActiveRecord::Base
83
+ def ptc_data
84
+ value_array = ['PTC', 6, self.input_id, '', '', '', 'Y','', '', self.date_created]
85
+ end
86
+
87
+ def na_data
88
+ value_array = ['NA', 6, self.input_id, '', '', '', '', '', self.first_name, '', self.last_name, '', self.address, '', '', self.city, self.state, self.zip, '', '', '', '', '', '', '', '', self.email, '', "#{self.birth_month} #{self.birth_day} #{self.birth_year}", '', '', self.date_created.gsub!(' ','|') ]
89
+ end
90
+ end
91
+
92
+ importfile = ARGV[0]
93
+ exportfile = ARGV[1]
94
+ start_time = Time.now.to_f * 1000
95
+ mapper = Mapper.new
96
+ mapper.import_data(importfile)
97
+ mapper.export_data(exportfile)
98
+ end_time = Time.now.to_f * 1000
99
+ puts 'File save successfully!'
100
+ puts 'Time used:' << (end_time - start_time).to_s << 'ms'
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ptc_datamapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Bryant
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-20 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sqlite3
16
+ requirement: &70255834964120 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70255834964120
25
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ requirement: &70255834963220 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70255834963220
36
+ - !ruby/object:Gem::Dependency
37
+ name: csv-mapper
38
+ requirement: &70255834962440 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70255834962440
47
+ description: This gem is to help you to map your csv file to a .txt file with specific
48
+ format
49
+ email: bryant@promojam.com
50
+ executables:
51
+ - ptc_datamapper
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - lib/ptc_datamapper.rb
56
+ - bin/ptc_datamapper
57
+ homepage: http://rubygems.org/gems/ptc_datamapper
58
+ licenses: []
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 1.8.10
78
+ signing_key:
79
+ specification_version: 3
80
+ summary: a simple gem
81
+ test_files: []