hutch-xamplr 1.3.3 → 1.3.8

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 (32) hide show
  1. data/.document +5 -0
  2. data/.gitignore +12 -0
  3. data/CHANGES.txt +9 -2
  4. data/COPYING +661 -0
  5. data/Makefile +10 -0
  6. data/VERSION.yml +1 -1
  7. data/examples/employees/final-xampl/xampl-gen.rb +38 -0
  8. data/examples/employees/final-xampl/xml/ddd-final-xampl.xml +86 -0
  9. data/examples/employees/yuml-diagrams/DDD-final-approach.graphml +393 -0
  10. data/examples/employees/yuml-diagrams/DDD-final-xampl-approach.graphml +265 -0
  11. data/examples/employees/yuml-diagrams/DDD-ideal-final-approach.graphml +357 -0
  12. data/examples/random-people-shared-addresses/.gitignore +2 -0
  13. data/examples/random-people-shared-addresses/Makefile +8 -9
  14. data/examples/random-people-shared-addresses/batch-load-users-profiled.rb +91 -0
  15. data/examples/random-people-shared-addresses/batch-load-users-safe.rb +81 -0
  16. data/examples/random-people-shared-addresses/batch-load-users.rb +59 -63
  17. data/examples/random-people/.gitignore +2 -0
  18. data/examples/random-people/Makefile +5 -1
  19. data/examples/random-people/xampl-gen.rb +3 -2
  20. data/examples/read-testing/.gitignore +2 -0
  21. data/examples/tokyo-cabinet-experimental/.gitignore +2 -0
  22. data/lib/xamplr/.cvsignore +1 -0
  23. data/lib/xamplr/templates/.cvsignore +3 -0
  24. data/regression/tightly-nested-mutual-mentions/Makefile +14 -0
  25. data/regression/tightly-nested-mutual-mentions/build.rb +31 -0
  26. data/regression/tightly-nested-mutual-mentions/load.rb +21 -0
  27. data/regression/tightly-nested-mutual-mentions/repo-keep.tgz +0 -0
  28. data/regression/tightly-nested-mutual-mentions/setup.rb +8 -0
  29. data/regression/tightly-nested-mutual-mentions/xampl-gen.rb +36 -0
  30. data/regression/tightly-nested-mutual-mentions/xml/stuff.xml +7 -0
  31. data/xamplr.gemspec +276 -0
  32. metadata +30 -2
@@ -0,0 +1,2 @@
1
+ xampl_generated_code
2
+ repo
@@ -1,16 +1,15 @@
1
1
 
2
2
  nope:
3
3
 
4
- raw:
5
- rm -rf repo
6
- time ruby rawtc.rb
7
- #time ruby rawtc.rb
8
- #time ruby rawtc.rb
9
- #time ruby rawtc.rb
10
- #time ruby rawtc.rb
11
- #time ruby rawtc.rb
12
-
13
4
  batch:
14
5
  rm -rf repo
15
6
  time ruby batch-load-users.rb
16
7
 
8
+ safe:
9
+ rm -rf repo
10
+ time ruby batch-load-users-safe.rb
11
+
12
+ profile:
13
+ rm -rf repo
14
+ time ruby batch-load-users-profiled.rb
15
+
@@ -0,0 +1,91 @@
1
+ require 'fastercsv'
2
+ require 'xampl_generated_code/RandomPeople'
3
+ require 'people'
4
+ require 'settings'
5
+
6
+ require 'ruby-prof'
7
+
8
+ module RandomPeople
9
+
10
+ class BatchLoadUsersProfiled
11
+
12
+ attr_accessor :random_names, :created_addresses, :shared_addresses
13
+
14
+ def load_names(iter)
15
+ inner_start = Time.now
16
+ commit_start = 0
17
+ base = (1 + iter) * self.random_names.size
18
+
19
+ Xampl.transaction("random-people") do
20
+
21
+ random_names.each_with_index do | row, i |
22
+ person_pid = "person-#{ base + i }"
23
+ person = Person.new(person_pid)
24
+
25
+ person.given_name = row[0]
26
+ person.surname = row[1]
27
+ person.email = row[6]
28
+ person.phone = row[7]
29
+
30
+ addresses = Address.find_by_query do | q |
31
+ q.add_condition('street-address', :equals, row[2])
32
+ q.add_condition('postal-code', :equals, row[5])
33
+ end
34
+
35
+ address = addresses.first
36
+ if address then
37
+ person << address
38
+ self.shared_addresses += 1
39
+ else
40
+ address = person.new_address("address-#{ person_pid }")
41
+ address.street_address = row[2]
42
+ address.city = row[3]
43
+ address.state = row[4]
44
+ address.postal_code = row[5]
45
+ self.created_addresses += 1
46
+ end
47
+
48
+ end
49
+ puts "transaction ending..."
50
+ commit_start = Time.now
51
+ end
52
+ done_at = Time.now
53
+ puts "iter: #{ iter } in total: #{ done_at - inner_start }, insert: #{ commit_start - inner_start}, commit: #{done_at - commit_start}"
54
+ end
55
+
56
+ def run
57
+ start_at = Time.now
58
+
59
+ self.random_names = FasterCSV.read("random-names.csv")
60
+
61
+ parsed_at = Time.now
62
+
63
+ base = 0
64
+ self.created_addresses = 0
65
+ self.shared_addresses = 0
66
+
67
+ 2.times do | iter |
68
+ if 1 == iter then
69
+ RubyProf.start
70
+
71
+ load_names(iter)
72
+
73
+ result = RubyProf.stop
74
+ printer = RubyProf::FlatPrinter.new(result)
75
+ printer.print(STDOUT, 0)
76
+ else
77
+ load_names(iter)
78
+ end
79
+ end
80
+
81
+ processed_at = Time.now
82
+
83
+ puts "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
84
+ puts " created addresses: #{ created_addresses }, shared: #{ shared_addresses }"
85
+ end
86
+
87
+ end
88
+
89
+ BatchLoadUsersProfiled.new.run
90
+
91
+ end
@@ -0,0 +1,81 @@
1
+ require 'fastercsv'
2
+ require 'xampl_generated_code/RandomPeople'
3
+ require 'people'
4
+ require 'settings'
5
+
6
+ module RandomPeople
7
+
8
+ class BatchLoadUsers
9
+
10
+ attr_accessor :random_names, :created_addresses, :shared_addresses
11
+
12
+ def load_names(iter)
13
+ inner_start = Time.now
14
+ commit_total = 0
15
+ commit_start = 0
16
+ base = (1 + iter) * self.random_names.size
17
+
18
+ random_names.each_with_index do | row, i |
19
+ Xampl.transaction("random-people") do
20
+ person_pid = "person-#{ base + i }"
21
+ person = Person.new(person_pid)
22
+
23
+ person.given_name = row[0]
24
+ person.surname = row[1]
25
+ person.email = row[6]
26
+ person.phone = row[7]
27
+
28
+ addresses = Address.find_by_query do | q |
29
+ q.add_condition('street-address', :equals, row[2])
30
+ q.add_condition('postal-code', :equals, row[5])
31
+ end
32
+
33
+ address = addresses.first
34
+ if address then
35
+ person << address
36
+ self.shared_addresses += 1
37
+ else
38
+ address = person.new_address("address-#{ person_pid }")
39
+ address.street_address = row[2]
40
+ address.city = row[3]
41
+ address.state = row[4]
42
+ address.postal_code = row[5]
43
+ self.created_addresses += 1
44
+ end
45
+
46
+ commit_start = Time.now
47
+ end
48
+ commit_total += (Time.now - commit_start)
49
+ puts "total: #{ commit_total }, iter: #{ i } --> #{ i / commit_total }/s" if 0 == (i % 1000)
50
+ end
51
+ done_at = Time.now
52
+ total_time = done_at - inner_start
53
+ puts "iter: #{ iter } in total: #{ total_time }, insert: #{ total_time - commit_total }, commit: #{ commit_total }"
54
+ end
55
+
56
+ def run
57
+ start_at = Time.now
58
+
59
+ self.random_names = FasterCSV.read("random-names.csv")
60
+
61
+ parsed_at = Time.now
62
+
63
+ base = 0
64
+ self.created_addresses = 0
65
+ self.shared_addresses = 0
66
+
67
+ 10.times do | iter |
68
+ load_names(iter)
69
+ end
70
+
71
+ processed_at = Time.now
72
+
73
+ puts "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
74
+ puts " created addresses: #{ created_addresses }, shared: #{ shared_addresses }"
75
+ end
76
+
77
+ end
78
+
79
+ BatchLoadUsers.new.run
80
+
81
+ end
@@ -5,79 +5,75 @@ require 'settings'
5
5
 
6
6
  module RandomPeople
7
7
 
8
- start_at = Time.now
8
+ class BatchLoadUsers
9
+
10
+ attr_accessor :random_names, :created_addresses, :shared_addresses
11
+
12
+ def load_names(iter)
13
+ inner_start = Time.now
14
+ commit_start = 0
15
+ base = (1 + iter) * self.random_names.size
16
+
17
+ Xampl.transaction("random-people") do
18
+
19
+ random_names.each_with_index do | row, i |
20
+ person_pid = "person-#{ base + i }"
21
+ person = Person.new(person_pid)
22
+
23
+ person.given_name = row[0]
24
+ person.surname = row[1]
25
+ person.email = row[6]
26
+ person.phone = row[7]
27
+
28
+ addresses = Address.find_by_query do | q |
29
+ q.add_condition('street-address', :equals, row[2])
30
+ q.add_condition('postal-code', :equals, row[5])
31
+ end
32
+
33
+ address = addresses.first
34
+ if address then
35
+ person << address
36
+ self.shared_addresses += 1
37
+ else
38
+ address = person.new_address("address-#{ person_pid }")
39
+ address.street_address = row[2]
40
+ address.city = row[3]
41
+ address.state = row[4]
42
+ address.postal_code = row[5]
43
+ self.created_addresses += 1
44
+ end
9
45
 
10
- arr_of_arrs = FasterCSV.read("random-names.csv")
11
-
12
- parsed_at = Time.now
13
-
14
- #GivenName,Surname,StreetAddress,City,State,ZipCode,EmailAddress,TelephoneNumber
15
-
16
- #<people pid=''
17
- # xmlns="http://xampl.com/people">
18
- # <person pid=''
19
- # given-name=''
20
- # surname=''
21
- # email=''
22
- # phone=''>
23
- # <address pid=''
24
- # street-address=''
25
- # city=''
26
- # state=''
27
- # postal-code=''/>
28
- # </person>
29
- #</people>
30
-
31
- base = 0
32
-
33
- created_addresses = 0
34
- shared_addresses = 0
35
-
36
- 10.times do | iter |
37
- inner_start = Time.now
38
-
39
- Xampl.transaction("random-people") do
46
+ end
47
+ puts "transaction ending..."
48
+ commit_start = Time.now
49
+ end
50
+ done_at = Time.now
51
+ puts "iter: #{ iter } in total: #{ done_at - inner_start }, insert: #{ commit_start - inner_start}, commit: #{done_at - commit_start}"
52
+ end
40
53
 
41
- base += arr_of_arrs.size
54
+ def run
55
+ start_at = Time.now
42
56
 
43
- arr_of_arrs.each_with_index do | row, i |
44
- person_pid = "person-#{ base + i }"
45
- person = Person.new(person_pid)
57
+ self.random_names = FasterCSV.read("random-names.csv")
46
58
 
47
- person.given_name = row[0]
48
- person.surname = row[1]
49
- person.email = row[6]
50
- person.phone = row[7]
59
+ parsed_at = Time.now
51
60
 
52
- addresses = Xampl.find_xampl do | q |
53
- q.add_condition('class', :equals, Address.name)
61
+ base = 0
62
+ self.created_addresses = 0
63
+ self.shared_addresses = 0
54
64
 
55
- q.add_condition('street-address', :equals, row[2])
56
- q.add_condition('postal-code', :equals, row[5])
57
- end
65
+ 10.times do | iter |
66
+ load_names(iter)
67
+ end
58
68
 
59
- address = addresses.first
60
- if address then
61
- person << address
62
- shared_addresses += 1
63
- else
64
- address = person.new_address("address-#{ person_pid }")
65
- address.street_address = row[2]
66
- address.city = row[3]
67
- address.state = row[4]
68
- address.postal_code = row[5]
69
- created_addresses += 1
70
- end
69
+ processed_at = Time.now
71
70
 
72
- end
73
- puts "transaction ending..."
71
+ puts "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
72
+ puts " created addresses: #{ created_addresses }, shared: #{ shared_addresses }"
74
73
  end
75
- puts "iter: #{ iter } in #{ Time.now - inner_start }"
76
- end
77
74
 
78
- processed_at = Time.now
75
+ end
79
76
 
80
- p "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
81
- puts " created addresses: #{ created_addresses }, shared: #{ shared_addresses }"
77
+ BatchLoadUsers.new.run
82
78
 
83
79
  end
@@ -0,0 +1,2 @@
1
+ xampl_generated_code
2
+ repo
@@ -12,5 +12,9 @@ raw:
12
12
 
13
13
  batch:
14
14
  rm -rf repo/random-people
15
- time ruby batch-load-users.rb
15
+ time ruby1.9 batch-load-users.rb
16
+
17
+ gen:
18
+ ruby xampl-gen.rb
19
+ ruby1.9 xampl-gen-191.rb
16
20
 
@@ -27,12 +27,13 @@ if $0 == __FILE__ then
27
27
 
28
28
  filenames = Dir.glob("./xml/**/*.xml")
29
29
 
30
- generator = Generator.new
30
+ #generator = Generator.new
31
+ generator = Generator.new('generator')
31
32
  generator.go(:options => options,
32
33
  :filenames => filenames,
33
34
  :directory => directory)
34
35
 
35
36
  #puts generator.print_elements("./generated-elements.xml")
36
- exit!
37
+ #exit!
37
38
  end
38
39
  end
@@ -0,0 +1,2 @@
1
+ xampl_generated_code
2
+ repo
@@ -0,0 +1,2 @@
1
+ repo
2
+ xampl_generated_code
@@ -0,0 +1 @@
1
+ .cvs.log
@@ -0,0 +1,3 @@
1
+ nice-try
2
+ old
3
+ .cvs.log
@@ -0,0 +1,14 @@
1
+
2
+ nope:
3
+
4
+ build:
5
+ rm -rf repo
6
+ ruby build.rb
7
+
8
+ snap:
9
+ tar czf repo.tgz repo
10
+
11
+ load:
12
+ tar zxf repo.tgz
13
+ time ruby load.rb
14
+
@@ -0,0 +1,31 @@
1
+
2
+ require 'setup'
3
+
4
+ module TestingStuff
5
+
6
+ # <stuff pid='' xmlns="http://xampl.com/stuff">
7
+ # <parent pid=''>
8
+ # <child pid=''>
9
+ # <parent pid=''/>
10
+ # </child>
11
+ # </parent>
12
+ # </stuff>
13
+
14
+ Xampl.transaction("stuff") do
15
+
16
+
17
+ parent = Parent.new('parent1')
18
+ parent.info = "one"
19
+ child = Child.new('child1')
20
+ child.info = "two"
21
+
22
+ parent << child
23
+ child << parent
24
+
25
+ puts "parent ---------------------------------------"
26
+ puts parent.pp_xml
27
+ puts "child ----------------------------------------"
28
+ puts child.pp_xml
29
+ end
30
+
31
+ end
@@ -0,0 +1,21 @@
1
+
2
+ require 'setup'
3
+
4
+ module TestingStuff
5
+
6
+ # <stuff pid='' xmlns="http://xampl.com/stuff">
7
+ # <parent pid=''>
8
+ # <child pid=''>
9
+ # <parent pid=''/>
10
+ # </child>
11
+ # </parent>
12
+ # </stuff>
13
+
14
+ Xampl.transaction("stuff") do
15
+ parent = Parent['parent1']
16
+ puts "parent has info: #{ parent.info }"
17
+ child = parent.child.first
18
+ puts "child has info: #{ child.info }"
19
+ end
20
+
21
+ end