tripper 0.0.3d

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 (210) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +1 -0
  7. data/TODO +26 -0
  8. data/lib/generators/USAGE +8 -0
  9. data/lib/generators/tripper.rb +51 -0
  10. data/lib/generators/tripper/commonalities/commonalities.rb +226 -0
  11. data/lib/generators/tripper/detect_changes/detect_changes_generator.rb +173 -0
  12. data/lib/generators/tripper/detect_changes/model.rb +226 -0
  13. data/lib/generators/tripper/detect_changes/templates/migration.rb +7 -0
  14. data/lib/generators/tripper/detect_changes/templates/model/belongs_to.rb +1 -0
  15. data/lib/generators/tripper/detect_changes/templates/model/has_one.rb +1 -0
  16. data/lib/generators/tripper/detect_changes/templates/model/validates.rb +2 -0
  17. data/lib/generators/tripper/from_community/from_community_generator.rb +95 -0
  18. data/lib/generators/tripper/from_community/templates/actions/create.rb +8 -0
  19. data/lib/generators/tripper/from_community/templates/actions/destroy.rb +5 -0
  20. data/lib/generators/tripper/from_community/templates/actions/edit.rb +3 -0
  21. data/lib/generators/tripper/from_community/templates/actions/index.rb +3 -0
  22. data/lib/generators/tripper/from_community/templates/actions/new.rb +3 -0
  23. data/lib/generators/tripper/from_community/templates/actions/show.rb +3 -0
  24. data/lib/generators/tripper/from_community/templates/actions/update.rb +8 -0
  25. data/lib/generators/tripper/from_community/templates/controller.rb +3 -0
  26. data/lib/generators/tripper/from_community/templates/fixtures.yml +9 -0
  27. data/lib/generators/tripper/from_community/templates/helper.rb +2 -0
  28. data/lib/generators/tripper/from_community/templates/migration.rb +30 -0
  29. data/lib/generators/tripper/from_community/templates/model.rb +54 -0
  30. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/create.rb +11 -0
  31. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/destroy.rb +6 -0
  32. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/edit.rb +4 -0
  33. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/index.rb +4 -0
  34. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/new.rb +4 -0
  35. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/show.rb +4 -0
  36. data/lib/generators/tripper/from_community/templates/tests/rspec/actions/update.rb +11 -0
  37. data/lib/generators/tripper/from_community/templates/tests/rspec/controller.rb +8 -0
  38. data/lib/generators/tripper/from_community/templates/tests/rspec/model.rb +7 -0
  39. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/create.rb +13 -0
  40. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/destroy.rb +8 -0
  41. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/edit.rb +6 -0
  42. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/index.rb +6 -0
  43. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/new.rb +6 -0
  44. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/show.rb +6 -0
  45. data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/update.rb +13 -0
  46. data/lib/generators/tripper/from_community/templates/tests/shoulda/controller.rb +5 -0
  47. data/lib/generators/tripper/from_community/templates/tests/shoulda/model.rb +7 -0
  48. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/create.rb +11 -0
  49. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/destroy.rb +6 -0
  50. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/edit.rb +4 -0
  51. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/index.rb +4 -0
  52. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/new.rb +4 -0
  53. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/show.rb +4 -0
  54. data/lib/generators/tripper/from_community/templates/tests/testunit/actions/update.rb +11 -0
  55. data/lib/generators/tripper/from_community/templates/tests/testunit/controller.rb +5 -0
  56. data/lib/generators/tripper/from_community/templates/tests/testunit/model.rb +7 -0
  57. data/lib/generators/tripper/from_community/templates/views/erb/_form.html.erb +16 -0
  58. data/lib/generators/tripper/from_community/templates/views/erb/edit.html.erb +14 -0
  59. data/lib/generators/tripper/from_community/templates/views/erb/index.html.erb +29 -0
  60. data/lib/generators/tripper/from_community/templates/views/erb/new.html.erb +7 -0
  61. data/lib/generators/tripper/from_community/templates/views/erb/show.html.erb +25 -0
  62. data/lib/generators/tripper/from_community/templates/views/haml/_form.html.haml +9 -0
  63. data/lib/generators/tripper/from_community/templates/views/haml/edit.html.haml +14 -0
  64. data/lib/generators/tripper/from_community/templates/views/haml/index.html.haml +25 -0
  65. data/lib/generators/tripper/from_community/templates/views/haml/new.html.haml +7 -0
  66. data/lib/generators/tripper/from_community/templates/views/haml/show.html.haml +20 -0
  67. data/lib/generators/tripper/layout/USAGE +18 -0
  68. data/lib/generators/tripper/layout/layout_generator.rb +29 -0
  69. data/lib/generators/tripper/layout/templates/error_messages_helper.rb +23 -0
  70. data/lib/generators/tripper/layout/templates/layout.html.erb +19 -0
  71. data/lib/generators/tripper/layout/templates/layout.html.haml +21 -0
  72. data/lib/generators/tripper/layout/templates/layout_helper.rb +22 -0
  73. data/lib/generators/tripper/layout/templates/stylesheet.css +83 -0
  74. data/lib/generators/tripper/layout/templates/stylesheet.sass +73 -0
  75. data/lib/generators/tripper/obj_constraint.rb +23 -0
  76. data/lib/generators/tripper/predicate.rb +12 -0
  77. data/lib/generators/tripper/sync_with_community/model.rb +260 -0
  78. data/lib/generators/tripper/sync_with_community/sync_with_community_generator.rb +310 -0
  79. data/lib/generators/tripper/sync_with_community/templates/migration.rb +7 -0
  80. data/lib/generators/tripper/sync_with_community/templates/model/belongs_to.rb +1 -0
  81. data/lib/generators/tripper/sync_with_community/templates/model/has_one.rb +1 -0
  82. data/lib/generators/tripper/sync_with_community/templates/model/validates.rb +2 -0
  83. data/lib/generators/tripper/templates/actions/create.rb +8 -0
  84. data/lib/generators/tripper/templates/actions/destroy.rb +5 -0
  85. data/lib/generators/tripper/templates/actions/edit.rb +3 -0
  86. data/lib/generators/tripper/templates/actions/index.rb +3 -0
  87. data/lib/generators/tripper/templates/actions/new.rb +3 -0
  88. data/lib/generators/tripper/templates/actions/show.rb +3 -0
  89. data/lib/generators/tripper/templates/actions/update.rb +8 -0
  90. data/lib/generators/tripper/templates/controller.rb +3 -0
  91. data/lib/generators/tripper/templates/fixtures.yml +9 -0
  92. data/lib/generators/tripper/templates/helper.rb +2 -0
  93. data/lib/generators/tripper/templates/migration.rb +30 -0
  94. data/lib/generators/tripper/templates/model.rb +54 -0
  95. data/lib/generators/tripper/templates/tests/rspec/actions/create.rb +11 -0
  96. data/lib/generators/tripper/templates/tests/rspec/actions/destroy.rb +6 -0
  97. data/lib/generators/tripper/templates/tests/rspec/actions/edit.rb +4 -0
  98. data/lib/generators/tripper/templates/tests/rspec/actions/index.rb +4 -0
  99. data/lib/generators/tripper/templates/tests/rspec/actions/new.rb +4 -0
  100. data/lib/generators/tripper/templates/tests/rspec/actions/show.rb +4 -0
  101. data/lib/generators/tripper/templates/tests/rspec/actions/update.rb +11 -0
  102. data/lib/generators/tripper/templates/tests/rspec/controller.rb +8 -0
  103. data/lib/generators/tripper/templates/tests/rspec/model.rb +7 -0
  104. data/lib/generators/tripper/templates/tests/shoulda/actions/create.rb +13 -0
  105. data/lib/generators/tripper/templates/tests/shoulda/actions/destroy.rb +8 -0
  106. data/lib/generators/tripper/templates/tests/shoulda/actions/edit.rb +6 -0
  107. data/lib/generators/tripper/templates/tests/shoulda/actions/index.rb +6 -0
  108. data/lib/generators/tripper/templates/tests/shoulda/actions/new.rb +6 -0
  109. data/lib/generators/tripper/templates/tests/shoulda/actions/show.rb +6 -0
  110. data/lib/generators/tripper/templates/tests/shoulda/actions/update.rb +13 -0
  111. data/lib/generators/tripper/templates/tests/shoulda/controller.rb +5 -0
  112. data/lib/generators/tripper/templates/tests/shoulda/model.rb +7 -0
  113. data/lib/generators/tripper/templates/tests/testunit/actions/create.rb +11 -0
  114. data/lib/generators/tripper/templates/tests/testunit/actions/destroy.rb +6 -0
  115. data/lib/generators/tripper/templates/tests/testunit/actions/edit.rb +4 -0
  116. data/lib/generators/tripper/templates/tests/testunit/actions/index.rb +4 -0
  117. data/lib/generators/tripper/templates/tests/testunit/actions/new.rb +4 -0
  118. data/lib/generators/tripper/templates/tests/testunit/actions/show.rb +4 -0
  119. data/lib/generators/tripper/templates/tests/testunit/actions/update.rb +11 -0
  120. data/lib/generators/tripper/templates/tests/testunit/controller.rb +5 -0
  121. data/lib/generators/tripper/templates/tests/testunit/model.rb +7 -0
  122. data/lib/generators/tripper/templates/views/erb/_form.html.erb +16 -0
  123. data/lib/generators/tripper/templates/views/erb/edit.html.erb +14 -0
  124. data/lib/generators/tripper/templates/views/erb/index.html.erb +29 -0
  125. data/lib/generators/tripper/templates/views/erb/new.html.erb +7 -0
  126. data/lib/generators/tripper/templates/views/erb/show.html.erb +25 -0
  127. data/lib/generators/tripper/templates/views/haml/_form.html.haml +9 -0
  128. data/lib/generators/tripper/templates/views/haml/edit.html.haml +14 -0
  129. data/lib/generators/tripper/templates/views/haml/index.html.haml +25 -0
  130. data/lib/generators/tripper/templates/views/haml/new.html.haml +7 -0
  131. data/lib/generators/tripper/templates/views/haml/show.html.haml +20 -0
  132. data/lib/tripper.rb +1 -0
  133. data/lib/tripper/GOSPLDB/config/database.yml +6 -0
  134. data/lib/tripper/GOSPLDB/config_db.rb +9 -0
  135. data/lib/tripper/GOSPLDB/console +2 -0
  136. data/lib/tripper/GOSPLDB/gospl_db_classes.rb +343 -0
  137. data/lib/tripper/GOSPLDB/play_around.rb +4 -0
  138. data/lib/tripper/GOSPLDB/rakefile.rb +88 -0
  139. data/lib/tripper/GOSPLDBToORMDB/gospl_db_to_orm_db.rb +88 -0
  140. data/lib/tripper/ORMDB/config/database.yml +6 -0
  141. data/lib/tripper/ORMDB/config_db.rb +9 -0
  142. data/lib/tripper/ORMDB/console +2 -0
  143. data/lib/tripper/ORMDB/db/migrations/0_create_orm_object_table.rb +17 -0
  144. data/lib/tripper/ORMDB/db/migrations/10_create_no_lot_constraint_table.rb +17 -0
  145. data/lib/tripper/ORMDB/db/migrations/11_create_value_constraint_table.rb +14 -0
  146. data/lib/tripper/ORMDB/db/migrations/12_create_value_constraint_value_table.rb +16 -0
  147. data/lib/tripper/ORMDB/db/migrations/13_create_value_range_table.rb +15 -0
  148. data/lib/tripper/ORMDB/db/migrations/14_create_frequency_constraint_table.rb +16 -0
  149. data/lib/tripper/ORMDB/db/migrations/15_create_value_table.rb +15 -0
  150. data/lib/tripper/ORMDB/db/migrations/16_create_ring_constraint_table.rb +14 -0
  151. data/lib/tripper/ORMDB/db/migrations/17_create_orm_schema_table.rb +21 -0
  152. data/lib/tripper/ORMDB/db/migrations/18_create_uniqueness_constraint_table.rb +15 -0
  153. data/lib/tripper/ORMDB/db/migrations/1_create_no_lot_table.rb +18 -0
  154. data/lib/tripper/ORMDB/db/migrations/2_create_lot_table.rb +18 -0
  155. data/lib/tripper/ORMDB/db/migrations/3_create_object_role_table.rb +18 -0
  156. data/lib/tripper/ORMDB/db/migrations/4_create_reference_table.rb +17 -0
  157. data/lib/tripper/ORMDB/db/migrations/5_create_predicate_table.rb +18 -0
  158. data/lib/tripper/ORMDB/db/migrations/6_create_object_role_constraint_table.rb +18 -0
  159. data/lib/tripper/ORMDB/db/migrations/7_create_subtype_table.rb +17 -0
  160. data/lib/tripper/ORMDB/db/migrations/8_create_mandatory_constraint_table.rb +15 -0
  161. data/lib/tripper/ORMDB/db/migrations/9_create_constraint_table.rb +15 -0
  162. data/lib/tripper/ORMDB/db/orm_ml.sqlite3 +0 -0
  163. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.backup +0 -0
  164. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.juli28-2013 +0 -0
  165. data/lib/tripper/ORMDB/db/orm_ml.sqlite3.old +0 -0
  166. data/lib/tripper/ORMDB/db/schema.rb +58 -0
  167. data/lib/tripper/ORMDB/erd.pdf +0 -0
  168. data/lib/tripper/ORMDB/migrate_db.rb +21 -0
  169. data/lib/tripper/ORMDB/orm_db_classes.rb +423 -0
  170. data/lib/tripper/ORMDB/populate.rb +4 -0
  171. data/lib/tripper/ORMDB/rakefile.rb +88 -0
  172. data/lib/tripper/model_parsers/attribute_parser/AttributeParser.g +50 -0
  173. data/lib/tripper/model_parsers/attribute_parser/AttributeParser.tokens +13 -0
  174. data/lib/tripper/model_parsers/attribute_parser/AttributeParserLexer.rb +538 -0
  175. data/lib/tripper/model_parsers/attribute_parser/AttributeParserParser.rb +412 -0
  176. data/lib/tripper/model_parsers/attribute_parser/playing_around.rb +14 -0
  177. data/lib/tripper/model_parsers/belongs_to/BelongsToParser.g +63 -0
  178. data/lib/tripper/model_parsers/belongs_to/BelongsToParser.tokens +21 -0
  179. data/lib/tripper/model_parsers/belongs_to/BelongsToParserLexer.rb +667 -0
  180. data/lib/tripper/model_parsers/belongs_to/BelongsToParserParser.rb +552 -0
  181. data/lib/tripper/model_parsers/belongs_to/playing_around.rb +9 -0
  182. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParser.g +47 -0
  183. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParser.tokens +14 -0
  184. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParserLexer.rb +513 -0
  185. data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParserParser.rb +279 -0
  186. data/lib/tripper/model_parsers/database_fields_parser/playing_around.rb +14 -0
  187. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParser.g +92 -0
  188. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParser.tokens +25 -0
  189. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserLexer.rb +787 -0
  190. data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserParser.rb +1024 -0
  191. data/lib/tripper/model_parsers/has_and_belongs_to_many/playing_around.rb +9 -0
  192. data/lib/tripper/model_parsers/has_many/HasManyParser.g +77 -0
  193. data/lib/tripper/model_parsers/has_many/HasManyParser.tokens +23 -0
  194. data/lib/tripper/model_parsers/has_many/HasManyParserLexer.rb +710 -0
  195. data/lib/tripper/model_parsers/has_many/HasManyParserParser.rb +788 -0
  196. data/lib/tripper/model_parsers/has_many/playing_around.rb +9 -0
  197. data/lib/tripper/model_parsers/has_one/HasOneParser.g +63 -0
  198. data/lib/tripper/model_parsers/has_one/HasOneParser.tokens +21 -0
  199. data/lib/tripper/model_parsers/has_one/HasOneParserLexer.rb +664 -0
  200. data/lib/tripper/model_parsers/has_one/HasOneParserParser.rb +552 -0
  201. data/lib/tripper/model_parsers/has_one/playing_around.rb +9 -0
  202. data/lib/tripper/model_parsers/validates/ValidatesParser.g +68 -0
  203. data/lib/tripper/model_parsers/validates/ValidatesParser.tokens +35 -0
  204. data/lib/tripper/model_parsers/validates/ValidatesParserLexer.rb +899 -0
  205. data/lib/tripper/model_parsers/validates/ValidatesParserParser.rb +869 -0
  206. data/lib/tripper/model_parsers/validates/playing_around.rb +9 -0
  207. data/lib/tripper/rails.rb +8 -0
  208. data/lib/tripper/version.rb +3 -0
  209. data/tripper.gemspec +33 -0
  210. metadata +408 -0
@@ -0,0 +1,343 @@
1
+ require 'active_record'
2
+ require 'logger'
3
+ require 'yaml'
4
+
5
+ module Tripper
6
+ module GOSPLDB
7
+ GOSPLDBCONFIG = YAML::load(File.open(File.dirname(__FILE__)+'/config/database.yml'))['development']
8
+ ActiveRecord::Base.logger = Logger.new(STDERR)
9
+ #ActiveRecord::Base.store_full_sti_class = false
10
+
11
+ class ApplicationCommitment < ActiveRecord::Base
12
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
13
+ self.table_name = 'ApplicationCommitment'
14
+ belongs_to :community, :class_name => 'Community'
15
+ belongs_to :creator, :class_name => 'User'
16
+ end
17
+
18
+ class ApplicationCommitmentUser < ActiveRecord::Base
19
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
20
+ self.table_name = 'ApplicationCommitmentUser'
21
+ belongs_to :commitment, :class_name => 'Commitment'
22
+ belongs_to :creator, :class_name => 'User'
23
+ belongs_to :user, :class_name => 'User'
24
+ end
25
+
26
+ class ApplicationCommitmentVersion < ActiveRecord::Base
27
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
28
+ self.table_name = 'ApplicationCommitmentVersion'
29
+ belongs_to :commitment, :class_name => 'Commitment'
30
+ belongs_to :creator, :class_name => 'User'
31
+ belongs_to :next_version, :class_name => 'ApplicationCommitmentVersion', :foreign_key => :nextVersion_id
32
+ belongs_to :previous_version, :class_name => 'ApplicationCommitmentVersion', :foreign_key => :previousVersion_id
33
+ end
34
+
35
+ class Commitment < ActiveRecord::Base
36
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
37
+ self.table_name = 'Commitment'
38
+ belongs_to :community, :class_name => 'Community'
39
+ belongs_to :creator, :class_name => 'User'
40
+ has_many :commitmentlexons, :class_name => 'CommitmentLexon'
41
+ has_many :active_commitment_lexons, :class_name => 'CommitmentLexon', :conditions => {active: true}
42
+ has_many :dogmaconstraints, :class_name => 'DogmaConstraint'
43
+ has_many :lexons, :through => :active_commitment_lexons
44
+ end
45
+
46
+ class CommitmentLexon < ActiveRecord::Base
47
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
48
+ self.table_name = 'CommitmentLexon'
49
+ belongs_to :lexon, :class_name => 'Lexon'
50
+ belongs_to :creator, :class_name => 'User'
51
+ belongs_to :commitment, :class_name => 'Commitment'
52
+ has_many :posts, :class_name => 'Post'
53
+ end
54
+
55
+ class Community < ActiveRecord::Base
56
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
57
+ self.table_name = 'Community'
58
+ has_many :commitments, :class_name => 'Commitment'
59
+ belongs_to :creator, :class_name => 'User'
60
+ has_many :glossequivalences, :class_name => 'GlossEquivalence'
61
+ has_many :glosstermcommunities, :class_name => 'GlossTermCommunity'
62
+ has_many :lexons, :class_name => 'Lexon'
63
+ has_many :memberships, :class_name => 'MemberShip'
64
+ has_many :posts, :class_name => 'Post'
65
+ has_many :replyratinguserkarmas, :class_name => 'ReplyRatingUserKarma'
66
+ has_many :semweblinks, :class_name => 'SemWebLink'
67
+ has_many :sparqlendpoints, :class_name => 'SparqlEndpoint'
68
+ has_many :synonyms, :class_name => 'Synonym'
69
+ has_many :termequivalences, :class_name => 'TermEquivalence'
70
+
71
+ def self.all_object_types comm_label
72
+ find_by_label(comm_label).all_object_types
73
+ end
74
+ def self.all_object_types_by_type comm_label
75
+ find_by_label(comm_label).all_object_types_by_type
76
+ end
77
+ def all_object_types
78
+ (commitments.last.lexons.group("Lexon.head").pluck(:head) + commitments.last.lexons.group("Lexon.head").pluck(:tail)+(dogma_constraints.pluck(:term))).uniq
79
+ end
80
+ def dogma_constraints
81
+ commitments.last.dogmaconstraints
82
+ end
83
+ def all_object_types_by_type
84
+ nolots = []
85
+ lots = []
86
+ all_lot_constraints = dogma_constraints.is_lexical_constraint.pluck(:term)
87
+ all_object_types.each do |term|
88
+ all_lot_constraints.include?(term) ? lots << term : nolots << term
89
+ end
90
+ return {nolots: nolots, lots: lots}
91
+ end
92
+
93
+ def new_accepted_posts_since time_ago
94
+ posts.where('resolvedDate > ? and accepted = ?', time_ago, true)
95
+ end
96
+ end
97
+
98
+ class ConstraintLexon < ActiveRecord::Base
99
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
100
+ self.table_name = 'ConstraintLexon'
101
+ belongs_to :lexon, :class_name => 'Lexon'
102
+ belongs_to :creator, :class_name => 'User'
103
+ belongs_to :dogmaconstraint, :class_name => 'DogmaConstraint', :foreign_key => :constraint_id
104
+ end
105
+
106
+ class DogmaConstraint < ActiveRecord::Base
107
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
108
+ self.table_name = 'DOGMAConstraint'
109
+ has_many :constraintlexons, :class_name => 'ConstraintLexon' , :foreign_key => :constraint_id
110
+ belongs_to :creator, :class_name => 'User'
111
+ belongs_to :commitment, :class_name => 'Commitment'
112
+ has_many :posts, :class_name => 'Post'
113
+ has_many :lexons, :through => :constraintlexons
114
+
115
+ scope :is_lexical_constraint, -> { where("constrainttype = 'ISLEXICALCONSTRAINT' AND active = 1") }
116
+ scope :active, -> { where("active = 1")}
117
+ scope :role_constraints, -> { where("constrainttype != 'ISLEXICALCONSTRAINT' AND active = 1")}
118
+ end
119
+
120
+ class DotmocracySheet < ActiveRecord::Base
121
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
122
+ self.table_name = 'DotmocracySheet'
123
+ belongs_to :creator, :class_name => 'User'
124
+ belongs_to :post, :class_name => 'Post'
125
+ end
126
+
127
+ class Gloss < ActiveRecord::Base
128
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
129
+ self.table_name = 'Gloss'
130
+ belongs_to :creator, :class_name => 'User'
131
+ end
132
+
133
+ class GlossEquivalence < ActiveRecord::Base
134
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
135
+ self.table_name = 'GlossEquivalence'
136
+ belongs_to :creator, :class_name => 'User'
137
+ belongs_to :community1, :class_name => 'Community'
138
+ belongs_to :community2, :class_name => 'Community'
139
+ has_many :posts, :class_name => 'Post'
140
+ end
141
+
142
+ class GlossLexon < ActiveRecord::Base
143
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
144
+ self.table_name = 'GlossLexon'
145
+ belongs_to :lexon, :class_name => 'Lexon'
146
+ belongs_to :creator, :class_name => 'User'
147
+ end
148
+
149
+ class GlossTermCommunity < ActiveRecord::Base
150
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
151
+ self.table_name = 'GlossTermCommunity'
152
+ belongs_to :community, :class_name => 'Community'
153
+ belongs_to :creator, :class_name => 'User'
154
+ end
155
+
156
+ class Lexon < ActiveRecord::Base
157
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
158
+ self.table_name = 'Lexon'
159
+ has_many :commitmentlexons, :class_name => 'CommitmentLexon'
160
+ has_many :constraintlexons, :class_name => 'ConstraintLexon'
161
+ has_many :glosslexons, :class_name => 'GlossLexon'
162
+ belongs_to :community, :class_name => 'Community'
163
+ belongs_to :creator, :class_name => 'User'
164
+ has_many :posts, :class_name => 'Post'
165
+ has_many :semweblinks, :class_name => 'SemWebLink'
166
+ has_many :dogmaconstraints, :through => :constraintlexons, :conditions => ["DOGMAConstraint.active = ?", true]
167
+
168
+ has_many :active_commitment_lexons, :class_name => 'CommitmentLexon', :conditions => {active: true}
169
+ has_many :commitments, :through => :active_commitment_lexons
170
+ end
171
+
172
+ class MemberShip < ActiveRecord::Base
173
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
174
+ self.table_name = 'MemberShip'
175
+ belongs_to :community, :class_name => 'Community'
176
+ belongs_to :creator, :class_name => 'User'
177
+ belongs_to :user, :class_name => 'User'
178
+ end
179
+ #test
180
+
181
+ class Post < ActiveRecord::Base
182
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
183
+ self.table_name = 'Post'
184
+ has_many :dotmocracysheets, :class_name => 'DotmocracySheet', dependent: :destroy
185
+ belongs_to :community, :class_name => 'Community'
186
+ belongs_to :commitmentlexon, :class_name => 'CommitmentLexon'
187
+ belongs_to :synonym, :class_name => 'Synonym'
188
+ belongs_to :lexon, :class_name => 'Lexon', :foreign_key => :lexon_id
189
+ belongs_to :creator, :class_name => 'User', :foreign_key => :creator_id
190
+ belongs_to :resolvedby_user, :class_name => 'User', :foreign_key => :resolvedby_id2
191
+ belongs_to :dogmaconstraint, :class_name => 'DogmaConstraint', :foreign_key => :constraint_id
192
+ belongs_to :community2, :class_name => 'Community', :foreign_key => :community2_id
193
+ belongs_to :glossequivalence, :class_name => 'GlossEquivalence'
194
+ #belongs_to :dogmaconstraint, :class_name => 'DogmaConstraint'
195
+ belongs_to :reply_of, :class_name => 'Post', :foreign_key => :reply_of
196
+ belongs_to :termequivalence, :class_name => 'TermEquivalence'
197
+ belongs_to :resolvedby, :class_name => 'User'
198
+ has_many :replyratingsheets, :class_name => 'ReplyRatingSheet'
199
+
200
+ # Hash needs: text, corole, head, role, tail, creator_id, community_id
201
+ def self.request_to_add_lexon hash
202
+ argument_keys = ["text", "corole", "head", "role", "tail", "creator_id", "community_id"]
203
+ unless (argument_keys - hash.keys).empty? && (argument_keys.map(&:to_sym) - hash.keys).empty?
204
+ raise "bad arguments. given: #{hash.keys.inspect}, expected: #{argument_keys.inspect}"
205
+ end
206
+ Post.create! hash.merge(:posttype => "REQUESTTOADDLEXON")
207
+ end
208
+ end
209
+
210
+ class ReplyRating < ActiveRecord::Base
211
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
212
+ self.table_name = 'ReplyRating'
213
+ belongs_to :replyratingsheet, :class_name => 'ReplyRatingSheet', :foreign_key => :ReplyRatingSheet_id
214
+ belongs_to :previous_rating, :class_name => 'ReplyRating', :foreign_key => :previousRating_id
215
+ end
216
+
217
+ class ReplyRatingSheet < ActiveRecord::Base
218
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
219
+ self.table_name = 'ReplyRatingSheet'
220
+ has_many :replyratings, :class_name => 'ReplyRating'
221
+ belongs_to :post, :class_name => 'Post'
222
+ belongs_to :creator, :class_name => 'User'
223
+ end
224
+
225
+ class ReplyRatingUserKarma < ActiveRecord::Base
226
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
227
+ self.table_name = 'ReplyRatingUserKarma'
228
+ belongs_to :community, :class_name => 'Community'
229
+ belongs_to :creator, :class_name => 'User'
230
+ end
231
+
232
+ class SemWebLink < ActiveRecord::Base
233
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
234
+ self.table_name = 'SemWebLink'
235
+ belongs_to :community, :class_name => 'Community'
236
+ belongs_to :lexon, :class_name => 'Lexon'
237
+ belongs_to :creator, :class_name => 'User'
238
+ end
239
+
240
+ class SparqlEndpoint < ActiveRecord::Base
241
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
242
+ self.table_name = 'SparqlEndpoint'
243
+ belongs_to :creator, :class_name => 'User'
244
+ belongs_to :community, :class_name => 'Community'
245
+ end
246
+
247
+ class Synonym < ActiveRecord::Base
248
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
249
+ self.table_name = 'Synonym'
250
+ has_many :posts, :class_name => 'Post'
251
+ belongs_to :creator, :class_name => 'User'
252
+ belongs_to :community1, :class_name => 'Community'
253
+ belongs_to :community2, :class_name => 'Community'
254
+ end
255
+
256
+ class TermEquivalence < ActiveRecord::Base
257
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
258
+ self.table_name = 'TermEquivalence'
259
+ has_many :posts, :class_name => 'Post'
260
+ belongs_to :creator, :class_name => 'User'
261
+ belongs_to :community1, :class_name => 'Community'
262
+ belongs_to :community2, :class_name => 'Community'
263
+ end
264
+
265
+ class User < ActiveRecord::Base
266
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
267
+ self.table_name = 'User'
268
+ has_many :commitments, :class_name => 'Commitment'
269
+ has_many :commitmentlexons, :class_name => 'CommitmentLexon'
270
+ has_many :communities, :class_name => 'Community' #todo, needs forein key set
271
+ has_many :constraintlexons, :class_name => 'ConstraintLexon'
272
+ has_many :dogmaconstraints, :class_name => 'DogmaConstraint'
273
+ has_many :dotmocracysheets, :class_name => 'DotmocracySheet'
274
+ has_many :glossequivalences, :class_name => 'GlossEquivalence'
275
+ has_many :glosslexons, :class_name => 'GlossLexon'
276
+ has_many :glosstermcommunities, :class_name => 'GlossTermCommunity'
277
+ has_many :lexons, :class_name => 'Lexon'
278
+ has_many :memberships, :class_name => 'MemberShip'
279
+ has_many :posts, :class_name => 'Post'
280
+ has_many :replyratingsheets, :class_name => 'ReplyRatingSheet'
281
+ has_many :replyratinguserkarmas, :class_name => 'ReplyRatingUserKarma'
282
+ has_many :semweblinks, :class_name => 'SemWebLink'
283
+ has_many :sparqlendpoints, :class_name => 'SparqlEndpoint'
284
+ has_many :synonyms, :class_name => 'Synonym'
285
+ has_many :termequivalences, :class_name => 'TermEquivalence'
286
+ belongs_to :creator, :class_name => 'User'
287
+ has_many :votes, :class_name => 'Vote'
288
+ end
289
+
290
+ class Vote < ActiveRecord::Base
291
+ self.establish_connection(Tripper::GOSPLDB::GOSPLDBCONFIG)
292
+ self.table_name = 'Vote'
293
+ belongs_to :creator, :class_name => 'User'
294
+ end
295
+
296
+ module Requests
297
+ def self.request_to_add_lexon creator_id, community_id, head, role, corole, tail
298
+ newpost = Post.new
299
+ newpost.posttype = "REQUESTTOADDLEXON"
300
+ newpost.corole = corole
301
+ newpost.head = head
302
+ newpost.role = role
303
+ newpost.tail = tail
304
+ newpost.creator_id = creator_id
305
+ newpost.community_id = community_id
306
+ newpost.creationDate = Time.now
307
+ newpost.save!
308
+ dotmocracysheet = newpost.dotmocracysheets.new
309
+ dotmocracysheet.creator_id = creator_id
310
+ dotmocracysheet.save!
311
+ end
312
+ def self.request_to_add_mandatory_constraint params = {}
313
+ #creator_id, community_label, head, tail, role, corole, term,
314
+ c = Community.find_by_label community_label
315
+ commitment = c.commitments.last
316
+ lexons = commitment.lexons.where("head = ? and tail = ? and role = ? and corole = ?", head, tail, role, corole)
317
+ if lexons.empty?
318
+ lexons = commitment.lexons.where("head = ? and tail = ?", head, tail, role, corole)
319
+ if lexons.empty?
320
+ return false
321
+ elsif lexons.size > 1
322
+
323
+ else
324
+ lexon = lexons.first
325
+ constraint = lexon.dogmaconstraints.new
326
+ constraint.constrainttype = "MANDATORYCONSTRAINT"
327
+ constraint.active = true
328
+ constraint.term = params[:term]
329
+ constraint.creator_id = params[:creator_id]
330
+ constraint.creationDate = Time.now
331
+ constraint.save!
332
+ newpost = constraint.posts.new
333
+ newpost.posttype = "REQUESTTOADDCONSTRAINT"
334
+ newpost.creator_id = params[:creator_id]
335
+ newpost.community_id = c.id
336
+ newpost.creationDate = Time.now
337
+ newpost.save!
338
+ end
339
+ end
340
+ end
341
+ end
342
+ end
343
+ end
@@ -0,0 +1,4 @@
1
+ @community = Community.find_by_label "Smart House Short"
2
+ @commitment = @community.commitments.last
3
+ @commitment_lexons = @commitment.commitmentlexons.where(active: true)
4
+ (d = DogmaConstraint.where("constrainttype = 'ISLEXICALCONSTRAINT' AND active = 1").last).commitment.community.lexons.where("head = ? or tail = ?", d.term, d.term)
@@ -0,0 +1,88 @@
1
+ require 'yaml'
2
+ require 'logger'
3
+ require 'active_record'
4
+
5
+ namespace :db do
6
+ def create_database config
7
+ options = {:charset => 'utf8', :collation => 'utf8_unicode_ci'}
8
+
9
+ create_db = lambda do |config|
10
+ #ActiveRecord::Base.establish_connection config.merge('database' => nil)
11
+ ActiveRecord::Base.connection.create_database config['database']
12
+ ActiveRecord::Base.establish_connection config
13
+ end
14
+ create_db.call config
15
+
16
+ end
17
+
18
+ task :environment do
19
+ DATABASE_ENV = ENV['DATABASE_ENV'] || 'development'
20
+ MIGRATIONS_DIR = ENV['MIGRATIONS_DIR'] || 'db/migrations'
21
+ end
22
+
23
+ task :configuration => :environment do
24
+ @config = YAML.load_file('config/database.yml')[DATABASE_ENV]
25
+ puts @config
26
+ end
27
+
28
+ task :configure_connection => :configuration do
29
+ ActiveRecord::Base.establish_connection @config
30
+ ActiveRecord::Base.logger = Logger.new STDOUT if @config['logger']
31
+ end
32
+
33
+ # desc 'Create the database from config/database.yml for the current DATABASE_ENV'
34
+ # task :create => :configure_connection do
35
+ # create_database @config
36
+ # end
37
+
38
+ # desc 'Drops the database for the current DATABASE_ENV'
39
+ # task :drop => :configure_connection do
40
+ # ActiveRecord::Base.connection.drop_database @config['database']
41
+ # end
42
+
43
+ # desc 'Migrate the database (options: VERSION=x, VERBOSE=false).'
44
+ # task :migrate => :configure_connection do
45
+ # ActiveRecord::Migration.verbose = true
46
+ # ActiveRecord::Migrator.migrate MIGRATIONS_DIR, ENV['VERSION'] ? ENV['VERSION'].to_i : nil
47
+ # end
48
+
49
+ # desc 'Rolls the schema back to the previous version (specify steps w/ STEP=n).'
50
+ # task :rollback => :configure_connection do
51
+ # step = ENV['STEP'] ? ENV['STEP'].to_i : 1
52
+ # ActiveRecord::Migrator.rollback MIGRATIONS_DIR, step
53
+ # end
54
+ #
55
+ # desc "drops all the tables"
56
+ # task :drop => :configure_connection do
57
+ # ENV['VERSION'] = "0"
58
+ # Rake::Task['db:migrate'].invoke
59
+ # end
60
+ #
61
+ # desc "drops all the tables and creates them again"
62
+ # task :reset => :configure_connection do
63
+ # ENV['STEP'] = "#{ActiveRecord::Migrator.current_version}"
64
+ # Rake::Task['db:rollback'].invoke
65
+ # Rake::Task['db:migrate'].invoke
66
+ # end
67
+
68
+ # desc "Retrieves the current schema version number"
69
+ # task :version => :configure_connection do
70
+ # puts "Current version: #{ActiveRecord::Migrator.current_version}"
71
+ # end
72
+
73
+ namespace :schema do
74
+ desc "Create a db/ar_schema.rb file that can be portably used against any DB supported by AR"
75
+ task :dump => :configure_connection do
76
+ require 'active_record/schema_dumper'
77
+ File.open(ENV['SCHEMA'] || "schema.rb", "w") do |file|
78
+ ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
79
+ end
80
+ end
81
+
82
+ # desc "Load a ar_schema.rb file into the database"
83
+ # task :load => :configure_connection do
84
+ # file = ENV['SCHEMA'] || "db/schema.rb"
85
+ # load(file)
86
+ # end
87
+ end
88
+ end
@@ -0,0 +1,88 @@
1
+ # require 'tripper/GOSPLDB/gospl_db_classes'
2
+ # require 'tripper/ORMDB/orm_db_classes'
3
+
4
+ module Tripper
5
+ module GOSPLDBToORMDB
6
+ def self.import community_label
7
+ schema = Tripper::ORMDB::OrmSchema.where(title: community_label).first
8
+ community = Tripper::GOSPLDB::Community.find_by_label(community_label)
9
+ unless community
10
+ puts "No such community exists: #{community_label}"
11
+ else
12
+ schema = Tripper::ORMDB::OrmSchema.create!({title: community_label}) unless schema
13
+ community = Tripper::GOSPLDB::Community.find_by_label(community_label)
14
+ commitment = community.commitments.last
15
+ schema.last_import = Time.now
16
+ schema.creator = community.creator.emailAddress
17
+ schema.description = community.goal
18
+ schema.save!
19
+ puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
20
+ puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
21
+ puts schema.inspect
22
+ object_types = community.all_object_types_by_type
23
+ puts object_types
24
+ # Create the object types
25
+ object_types[:nolots].each do |label|
26
+ obj = schema.no_lots.where(name: label).first
27
+ schema.no_lots.create!(Hash[:name => label]) unless obj
28
+ end
29
+ object_types[:lots].each do |label|
30
+ obj = schema.lots.where(name: label).first
31
+ schema.lots.create! Hash[:name => label] unless obj
32
+ end
33
+ # Create the predicates
34
+ object_types[:nolots].each do |label|
35
+ nolot = schema.no_lots.where(name: label).first
36
+ commitment.lexons.where("head = ?", label).each do |lexon|
37
+ tail = schema.object_types_by_name(lexon.tail).last
38
+ predicate = schema.predicates.where(identifier: lexon.id).first
39
+ predicate = schema.predicates.create! Hash[identifier: lexon.id, orm_schema_id: schema.id] unless predicate
40
+ role = predicate.object_roles.where(orm_object_id: nolot.id, orm_object_type: nolot.class.name, role: lexon.role, orm_schema_id: predicate.orm_schema_id).first
41
+ corole = predicate.object_roles.where(orm_object_id: tail.id, orm_object_type: tail.class.name, role: lexon.corole, orm_schema_id: predicate.orm_schema_id).first
42
+ puts "~~~~~ #{role} and #{corole} ~~~~~~"
43
+ predicate.object_roles.create! Hash[orm_object_id: nolot.id, orm_object_type: nolot.class.name,role: lexon.role, orm_schema_id: predicate.orm_schema_id] unless role
44
+ predicate.object_roles.create! Hash[orm_object_id: tail.id, orm_object_type: tail.class.name, role: lexon.corole, orm_schema_id: predicate.orm_schema_id] unless corole
45
+ end
46
+ puts
47
+ commitment.lexons.where("tail = ?", label).each do |lexon|
48
+ head = schema.object_types_by_name(lexon.head).last
49
+ predicate = schema.predicates.where(identifier: lexon.id).first
50
+ predicate = schema.predicates.create! Hash[identifier: lexon.id, orm_schema_id: schema.id] unless predicate
51
+ role = predicate.object_roles.where(orm_object_id: nolot.id, orm_object_type: nolot.class.name, role: lexon.corole, orm_schema_id: predicate.orm_schema_id).first
52
+ corole = predicate.object_roles.where(orm_object_id: head.id, orm_object_type: head.class.name, role: lexon.role, orm_schema_id: predicate.orm_schema_id).first
53
+ puts "~~~~~ #{role} and #{corole} ~~~~~~"
54
+ predicate.object_roles.create! Hash[orm_object_id: nolot.id, orm_object_type: nolot.class.name, role: lexon.corole, orm_schema_id: predicate.orm_schema_id] unless role
55
+ predicate.object_roles.create! Hash[orm_object_id: head.id, orm_object_type: head.class.name, role: lexon.role, orm_schema_id: predicate.orm_schema_id] unless corole
56
+ end
57
+ end
58
+ # Create Constraints
59
+ commitment.dogmaconstraints.role_constraints.where("constrainttype = 'MANDATORYCONSTRAINT'").each do |dconstraint|
60
+ mandatory_constraint = schema.mandatory_constraints.where(identifier: dconstraint.id).first
61
+ mandatory_constraint = schema.mandatory_constraints.create! Hash[identifier: dconstraint.id, orm_schema_id: schema.id] unless mandatory_constraint
62
+ dconstraint.constraintlexons.each do |constraint_lexon|
63
+ predicate = schema.predicates.where(identifier: constraint_lexon.lexon.id).first
64
+ obj_role = predicate.object_roles.where(role: constraint_lexon.role).first
65
+ mandatory_constraint.object_roles << obj_role unless mandatory_constraint.object_roles.where(id: obj_role.id).first
66
+ end
67
+ mandatory_constraint.save!
68
+ end
69
+ commitment.dogmaconstraints.role_constraints.where("constrainttype = 'UNIQUENESSCONSTRAINT'").each do |dconstraint|
70
+ uniqueness_constraint = schema.uniqueness_constraints.where(identifier: dconstraint.id).first
71
+ uniqueness_constraint = schema.uniqueness_constraints.create! Hash[identifier: dconstraint.id, orm_schema_id: schema.id] unless uniqueness_constraint
72
+ dconstraint.constraintlexons.each do |constraint_lexon|
73
+ predicate = schema.predicates.where(identifier: constraint_lexon.lexon.id).first
74
+ obj_role = predicate.object_roles.where(role: constraint_lexon.role).first
75
+ uniqueness_constraint.object_roles << obj_role unless uniqueness_constraint.object_roles.where(id: obj_role.id).first
76
+ end
77
+ uniqueness_constraint.save!
78
+ end
79
+ end
80
+ end
81
+ def self.update community_label
82
+ #TODO: descent implementation
83
+ schema = Tripper::ORMDB::OrmSchema.where(title: community_label).first
84
+ schema.destroy
85
+ import community_label
86
+ end
87
+ end
88
+ end