datashift 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. data/.document +5 -5
  2. data/LICENSE.txt +26 -26
  3. data/README.markdown +305 -303
  4. data/README.rdoc +19 -19
  5. data/Rakefile +93 -93
  6. data/VERSION +1 -1
  7. data/datashift-0.1.0.gem +0 -0
  8. data/datashift.gemspec +152 -136
  9. data/lib/applications/jruby/jexcel_file.rb +408 -408
  10. data/lib/applications/jruby/word.rb +79 -79
  11. data/lib/datashift.rb +152 -152
  12. data/lib/datashift/exceptions.rb +11 -11
  13. data/lib/datashift/file_definitions.rb +353 -353
  14. data/lib/datashift/mapping_file_definitions.rb +87 -87
  15. data/lib/datashift/method_detail.rb +275 -275
  16. data/lib/datashift/method_dictionary.rb +209 -209
  17. data/lib/datashift/method_mapper.rb +90 -90
  18. data/lib/generators/csv_generator.rb +36 -36
  19. data/lib/generators/excel_generator.rb +122 -122
  20. data/lib/generators/generator_base.rb +13 -13
  21. data/lib/helpers/core_ext/to_b.rb +24 -24
  22. data/lib/helpers/spree_helper.rb +153 -155
  23. data/lib/java/poi-3.7/LICENSE +507 -507
  24. data/lib/java/poi-3.7/NOTICE +21 -21
  25. data/lib/java/poi-3.7/RELEASE_NOTES.txt +115 -115
  26. data/lib/loaders/csv_loader.rb +98 -98
  27. data/lib/loaders/excel_loader.rb +155 -155
  28. data/lib/loaders/loader_base.rb +420 -420
  29. data/lib/loaders/spreadsheet_loader.rb +136 -136
  30. data/lib/loaders/spree/image_loader.rb +63 -64
  31. data/lib/loaders/spree/product_loader.rb +248 -250
  32. data/public/spree/products/large/DEMO_001_ror_bag.jpeg +0 -0
  33. data/public/spree/products/large/DEMO_002_Powerstation.jpg +0 -0
  34. data/public/spree/products/large/DEMO_003_ror_mug.jpeg +0 -0
  35. data/public/spree/products/mini/DEMO_001_ror_bag.jpeg +0 -0
  36. data/public/spree/products/mini/DEMO_002_Powerstation.jpg +0 -0
  37. data/public/spree/products/mini/DEMO_003_ror_mug.jpeg +0 -0
  38. data/public/spree/products/original/DEMO_001_ror_bag.jpeg +0 -0
  39. data/public/spree/products/original/DEMO_002_Powerstation.jpg +0 -0
  40. data/public/spree/products/original/DEMO_003_ror_mug.jpeg +0 -0
  41. data/public/spree/products/product/DEMO_001_ror_bag.jpeg +0 -0
  42. data/public/spree/products/product/DEMO_002_Powerstation.jpg +0 -0
  43. data/public/spree/products/product/DEMO_003_ror_mug.jpeg +0 -0
  44. data/public/spree/products/small/DEMO_001_ror_bag.jpeg +0 -0
  45. data/public/spree/products/small/DEMO_002_Powerstation.jpg +0 -0
  46. data/public/spree/products/small/DEMO_003_ror_mug.jpeg +0 -0
  47. data/spec/csv_loader_spec.rb +30 -30
  48. data/spec/datashift_spec.rb +26 -26
  49. data/spec/db/migrate/20110803201325_create_test_bed.rb +85 -85
  50. data/spec/excel_exporter_spec.rb +78 -78
  51. data/spec/excel_generator_spec.rb +78 -78
  52. data/spec/excel_loader_spec.rb +223 -223
  53. data/spec/file_definitions.rb +141 -141
  54. data/spec/fixtures/ProjectsDefaults.yml +29 -29
  55. data/spec/fixtures/config/database.yml +27 -24
  56. data/spec/fixtures/datashift_Spree_db.sqlite +0 -0
  57. data/spec/fixtures/interact_models_db.sqlite +0 -0
  58. data/spec/fixtures/negative/SpreeProdMiss1Mandatory.csv +4 -4
  59. data/spec/fixtures/negative/SpreeProdMissManyMandatory.csv +4 -4
  60. data/spec/fixtures/spree/SpreeProducts.csv +4 -4
  61. data/spec/fixtures/spree/SpreeProductsMultiColumn.csv +4 -4
  62. data/spec/fixtures/spree/SpreeProductsSimple.csv +4 -4
  63. data/spec/fixtures/spree/SpreeProductsWithImages.csv +4 -0
  64. data/spec/fixtures/spree/SpreeZoneExample.csv +5 -5
  65. data/spec/fixtures/test_model_defs.rb +57 -57
  66. data/spec/loader_spec.rb +120 -120
  67. data/spec/method_dictionary_spec.rb +242 -242
  68. data/spec/method_mapper_spec.rb +41 -41
  69. data/spec/spec_helper.rb +116 -116
  70. data/spec/spree_generator_spec.rb +64 -64
  71. data/spec/spree_loader_spec.rb +324 -327
  72. data/spec/spree_method_mapping_spec.rb +214 -214
  73. data/tasks/config/seed_fu_product_template.erb +15 -15
  74. data/tasks/config/tidy_config.txt +12 -12
  75. data/tasks/db_tasks.rake +65 -65
  76. data/tasks/excel_generator.rake +78 -78
  77. data/tasks/file_tasks.rake +36 -36
  78. data/tasks/import/csv.rake +49 -49
  79. data/tasks/import/excel.rake +71 -71
  80. data/tasks/spree/image_load.rake +108 -108
  81. data/tasks/spree/product_loader.rake +43 -43
  82. data/tasks/word_to_seedfu.rake +166 -166
  83. data/test/helper.rb +18 -18
  84. data/test/test_interact.rb +7 -7
  85. metadata +22 -3
  86. data/spec/fixtures/interact_spree_db.sqlite +0 -0
@@ -1,31 +1,31 @@
1
- # Copyright:: (c) Autotelik Media Ltd 2011
2
- # Author :: Tom Statter
3
- # Date :: Aug 2011
4
- # License:: MIT
5
- #
6
- # Details:: Specs for Excel aspect of Active Record Loader
7
- #
8
- require File.dirname(__FILE__) + '/spec_helper'
9
-
10
- require 'erb'
11
- require 'excel_loader'
12
-
13
- describe 'CSV Loader' do
14
-
15
- before(:all) do
16
-
17
- # load our test model definitions - Project etc
18
- require File.join($DataShiftFixturePath, 'test_model_defs')
19
-
20
- db_connect( 'test_file' ) # , test_memory, test_mysql
21
- migrate_up
22
- @klazz = Project
23
- end
24
-
25
- before(:each) do
26
- MethodDictionary.clear
27
- MethodDictionary.find_operators( @klazz )
28
- MethodDictionary.find_operators( @assoc_klazz )
29
- end
30
-
1
+ # Copyright:: (c) Autotelik Media Ltd 2011
2
+ # Author :: Tom Statter
3
+ # Date :: Aug 2011
4
+ # License:: MIT
5
+ #
6
+ # Details:: Specs for Excel aspect of Active Record Loader
7
+ #
8
+ require File.dirname(__FILE__) + '/spec_helper'
9
+
10
+ require 'erb'
11
+ require 'excel_loader'
12
+
13
+ describe 'CSV Loader' do
14
+
15
+ before(:all) do
16
+
17
+ # load our test model definitions - Project etc
18
+ require File.join($DataShiftFixturePath, 'test_model_defs')
19
+
20
+ db_connect( 'test_file' ) # , test_memory, test_mysql
21
+ migrate_up
22
+ @klazz = Project
23
+ end
24
+
25
+ before(:each) do
26
+ MethodDictionary.clear
27
+ MethodDictionary.find_operators( @klazz )
28
+ MethodDictionary.find_operators( @assoc_klazz )
29
+ end
30
+
31
31
  end
@@ -1,27 +1,27 @@
1
- # Copyright:: (c) Autotelik Media Ltd 2011
2
- # Author :: Tom Statter
3
- # Date :: Oct 2011
4
- # License:: MIT
5
- #
6
- # Details:: Specs for high level apsects of DataShift library
7
- #
8
- require File.dirname(__FILE__) + '/spec_helper'
9
-
10
- describe 'DataShift' do
11
-
12
- before(:each) do
13
- end
14
-
15
- it "should provide gem version" do
16
- DataShift::gem_version
17
- end
18
-
19
- it "should provide gem name" do
20
- DataShift::gem_name.should == 'datashift'
21
- end
22
-
23
- it "should provide root_path" do
24
- DataShift.root_path.should_not be_empty
25
- end
26
-
1
+ # Copyright:: (c) Autotelik Media Ltd 2011
2
+ # Author :: Tom Statter
3
+ # Date :: Oct 2011
4
+ # License:: MIT
5
+ #
6
+ # Details:: Specs for high level apsects of DataShift library
7
+ #
8
+ require File.dirname(__FILE__) + '/spec_helper'
9
+
10
+ describe 'DataShift' do
11
+
12
+ before(:each) do
13
+ end
14
+
15
+ it "should provide gem version" do
16
+ DataShift::gem_version
17
+ end
18
+
19
+ it "should provide gem name" do
20
+ DataShift::gem_name.should == 'datashift'
21
+ end
22
+
23
+ it "should provide root_path" do
24
+ DataShift.root_path.should_not be_empty
25
+ end
26
+
27
27
  end
@@ -1,85 +1,85 @@
1
- # Author :: Tom Statter
2
- # Date :: Aug 2011
3
- # License:: MIT
4
- #
5
- # Details:: Migration to create a test database that exercises all aspects of Active Record models
6
- #
7
-
8
- class CreateTestBed < ActiveRecord::Migration
9
-
10
- def self.up
11
-
12
- # has many :milestones
13
- create_table :projects do |t|
14
- t.string :title
15
- t.string :value_as_string
16
- t.text :value_as_text
17
- t.boolean :value_as_boolean, :default => false
18
- t.datetime :value_as_datetime, :default => nil
19
- t.integer :value_as_integer, :default => 0
20
- t.decimal :value_as_double, :precision => 8, :scale => 2, :default => 0.0
21
- t.timestamps
22
- end
23
-
24
- # belongs_to :project, project => has_many
25
- create_table :milestones do |t|
26
- t.string :name
27
- t.datetime :datetime, :default => nil
28
- t.decimal :cost, :precision => 8, :scale => 2, :default => 0.0
29
- t.references :project
30
- t.timestamps
31
- end
32
-
33
- # belongs_to :project, project => has_one
34
- create_table :owners do |t|
35
- t.string :name
36
- t.references :project
37
- t.timestamps
38
- end
39
-
40
- # has_belongs_to_many :project
41
- create_table :categories do |t|
42
- t.string :reference
43
- t.timestamps
44
- end
45
-
46
- # testing has_belongs_to_many (hence no id)
47
- create_table :categories_projects, :id => false do |t|
48
- t.references :category
49
- t.references :project
50
- end
51
-
52
- create_table :versions do |t|
53
- t.string :name
54
- t.timestamps
55
- end
56
-
57
- # testing project has_many release + versions :through
58
- create_table :loader_releases do |t|
59
- t.string :name
60
- t.references :project
61
- t.references :version
62
- t.timestamps
63
- end
64
-
65
-
66
- create_table :long_and_complex_table_linked_to_versions do |t|
67
- t.references :version
68
- end
69
-
70
- create_table :empties do |t|
71
- end
72
-
73
- end
74
-
75
- def self.down
76
- drop_table :projects
77
- drop_table :categories
78
- drop_table :loader_releases
79
- drop_table :versions
80
- drop_table :categories_projectss
81
- drop_table :milestones
82
- drop_table :long_and_complex_table_linked_to_versions
83
- drop_table :empties
84
- end
85
- end
1
+ # Author :: Tom Statter
2
+ # Date :: Aug 2011
3
+ # License:: MIT
4
+ #
5
+ # Details:: Migration to create a test database that exercises all aspects of Active Record models
6
+ #
7
+
8
+ class CreateTestBed < ActiveRecord::Migration
9
+
10
+ def self.up
11
+
12
+ # has many :milestones
13
+ create_table :projects do |t|
14
+ t.string :title
15
+ t.string :value_as_string
16
+ t.text :value_as_text
17
+ t.boolean :value_as_boolean, :default => false
18
+ t.datetime :value_as_datetime, :default => nil
19
+ t.integer :value_as_integer, :default => 0
20
+ t.decimal :value_as_double, :precision => 8, :scale => 2, :default => 0.0
21
+ t.timestamps
22
+ end
23
+
24
+ # belongs_to :project, project => has_many
25
+ create_table :milestones do |t|
26
+ t.string :name
27
+ t.datetime :datetime, :default => nil
28
+ t.decimal :cost, :precision => 8, :scale => 2, :default => 0.0
29
+ t.references :project
30
+ t.timestamps
31
+ end
32
+
33
+ # belongs_to :project, project => has_one
34
+ create_table :owners do |t|
35
+ t.string :name
36
+ t.references :project
37
+ t.timestamps
38
+ end
39
+
40
+ # has_belongs_to_many :project
41
+ create_table :categories do |t|
42
+ t.string :reference
43
+ t.timestamps
44
+ end
45
+
46
+ # testing has_belongs_to_many (hence no id)
47
+ create_table :categories_projects, :id => false do |t|
48
+ t.references :category
49
+ t.references :project
50
+ end
51
+
52
+ create_table :versions do |t|
53
+ t.string :name
54
+ t.timestamps
55
+ end
56
+
57
+ # testing project has_many release + versions :through
58
+ create_table :loader_releases do |t|
59
+ t.string :name
60
+ t.references :project
61
+ t.references :version
62
+ t.timestamps
63
+ end
64
+
65
+
66
+ create_table :long_and_complex_table_linked_to_versions do |t|
67
+ t.references :version
68
+ end
69
+
70
+ create_table :empties do |t|
71
+ end
72
+
73
+ end
74
+
75
+ def self.down
76
+ drop_table :projects
77
+ drop_table :categories
78
+ drop_table :loader_releases
79
+ drop_table :versions
80
+ drop_table :categories_projectss
81
+ drop_table :milestones
82
+ drop_table :long_and_complex_table_linked_to_versions
83
+ drop_table :empties
84
+ end
85
+ end
@@ -1,79 +1,79 @@
1
- # Copyright:: (c) Autotelik Media Ltd 2011
2
- # Author :: Tom Statter
3
- # Date :: Aug 2011
4
- # License:: MIT
5
- #
6
- # Details:: Specs for Excel aspect of Active Record Loader
7
- #
8
- require File.dirname(__FILE__) + '/spec_helper'
9
-
10
- if(Guards::jruby?)
11
- require 'erb'
12
- require 'excel_generator'
13
-
14
- include DataShift
15
-
16
- describe 'Excel Generator' do
17
-
18
- before(:all) do
19
- db_connect( 'test_file' ) # , test_memory, test_mysql
20
-
21
- # load our test model definitions - Project etc
22
- require File.join($DataShiftFixturePath, 'test_model_defs')
23
-
24
- # handle migration changes or reset of test DB
25
- migrate_up
26
-
27
- db_clear() # todo read up about proper transactional fixtures
28
- results_clear()
29
-
30
- @klazz = Project
31
- @assoc_klazz = Category
32
- end
33
-
34
- before(:each) do
35
- MethodDictionary.clear
36
- MethodDictionary.find_operators( @klazz )
37
- MethodDictionary.find_operators( @assoc_klazz )
38
- end
39
-
40
- it "should be able to create a new excel generator" do
41
- generator = ExcelGenerator.new( 'dummy.xls' )
42
-
43
- generator.should_not be_nil
44
- end
45
-
46
- it "should generate template .xls file from model" do
47
-
48
- expect = result_file('project_template_spec.xls')
49
-
50
- gen = ExcelGenerator.new( expect )
51
-
52
- gen.generate(Project)
53
-
54
- File.exists?(expect).should be_true
55
-
56
- puts "Can manually check file @ #{expect}"
57
- end
58
-
59
- it "should export a simple model to .xls spreedsheet" do
60
-
61
- Project.create( :value_as_string => 'Value as Text', :value_as_boolean => true, :value_as_double => 75.672)
62
- #001 Demo string blah blah 2011-02-14 1.00 320.00
63
-
64
- expect= result_file('simple_export_spec.xls')
65
-
66
- gen = ExcelGenerator.new(expect)
67
-
68
- items = Project.all
69
-
70
- gen.export(items)
71
-
72
- File.exists?(expect).should be_true
73
-
74
- end
75
-
76
- end
77
- else
78
- puts "WARNING: skipped excel_generator_spec : Requires JRUBY - JExcelFile requires JAVA"
1
+ # Copyright:: (c) Autotelik Media Ltd 2011
2
+ # Author :: Tom Statter
3
+ # Date :: Aug 2011
4
+ # License:: MIT
5
+ #
6
+ # Details:: Specs for Excel aspect of Active Record Loader
7
+ #
8
+ require File.dirname(__FILE__) + '/spec_helper'
9
+
10
+ if(Guards::jruby?)
11
+ require 'erb'
12
+ require 'excel_generator'
13
+
14
+ include DataShift
15
+
16
+ describe 'Excel Generator' do
17
+
18
+ before(:all) do
19
+ db_connect( 'test_file' ) # , test_memory, test_mysql
20
+
21
+ # load our test model definitions - Project etc
22
+ require File.join($DataShiftFixturePath, 'test_model_defs')
23
+
24
+ # handle migration changes or reset of test DB
25
+ migrate_up
26
+
27
+ db_clear() # todo read up about proper transactional fixtures
28
+ results_clear()
29
+
30
+ @klazz = Project
31
+ @assoc_klazz = Category
32
+ end
33
+
34
+ before(:each) do
35
+ MethodDictionary.clear
36
+ MethodDictionary.find_operators( @klazz )
37
+ MethodDictionary.find_operators( @assoc_klazz )
38
+ end
39
+
40
+ it "should be able to create a new excel generator" do
41
+ generator = ExcelGenerator.new( 'dummy.xls' )
42
+
43
+ generator.should_not be_nil
44
+ end
45
+
46
+ it "should generate template .xls file from model" do
47
+
48
+ expect = result_file('project_template_spec.xls')
49
+
50
+ gen = ExcelGenerator.new( expect )
51
+
52
+ gen.generate(Project)
53
+
54
+ File.exists?(expect).should be_true
55
+
56
+ puts "Can manually check file @ #{expect}"
57
+ end
58
+
59
+ it "should export a simple model to .xls spreedsheet" do
60
+
61
+ Project.create( :value_as_string => 'Value as Text', :value_as_boolean => true, :value_as_double => 75.672)
62
+ #001 Demo string blah blah 2011-02-14 1.00 320.00
63
+
64
+ expect= result_file('simple_export_spec.xls')
65
+
66
+ gen = ExcelGenerator.new(expect)
67
+
68
+ items = Project.all
69
+
70
+ gen.export(items)
71
+
72
+ File.exists?(expect).should be_true
73
+
74
+ end
75
+
76
+ end
77
+ else
78
+ puts "WARNING: skipped excel_generator_spec : Requires JRUBY - JExcelFile requires JAVA"
79
79
  end # jruby