tripper 0.0.3d
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/TODO +26 -0
- data/lib/generators/USAGE +8 -0
- data/lib/generators/tripper.rb +51 -0
- data/lib/generators/tripper/commonalities/commonalities.rb +226 -0
- data/lib/generators/tripper/detect_changes/detect_changes_generator.rb +173 -0
- data/lib/generators/tripper/detect_changes/model.rb +226 -0
- data/lib/generators/tripper/detect_changes/templates/migration.rb +7 -0
- data/lib/generators/tripper/detect_changes/templates/model/belongs_to.rb +1 -0
- data/lib/generators/tripper/detect_changes/templates/model/has_one.rb +1 -0
- data/lib/generators/tripper/detect_changes/templates/model/validates.rb +2 -0
- data/lib/generators/tripper/from_community/from_community_generator.rb +95 -0
- data/lib/generators/tripper/from_community/templates/actions/create.rb +8 -0
- data/lib/generators/tripper/from_community/templates/actions/destroy.rb +5 -0
- data/lib/generators/tripper/from_community/templates/actions/edit.rb +3 -0
- data/lib/generators/tripper/from_community/templates/actions/index.rb +3 -0
- data/lib/generators/tripper/from_community/templates/actions/new.rb +3 -0
- data/lib/generators/tripper/from_community/templates/actions/show.rb +3 -0
- data/lib/generators/tripper/from_community/templates/actions/update.rb +8 -0
- data/lib/generators/tripper/from_community/templates/controller.rb +3 -0
- data/lib/generators/tripper/from_community/templates/fixtures.yml +9 -0
- data/lib/generators/tripper/from_community/templates/helper.rb +2 -0
- data/lib/generators/tripper/from_community/templates/migration.rb +30 -0
- data/lib/generators/tripper/from_community/templates/model.rb +54 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/actions/create.rb +11 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/actions/destroy.rb +6 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/actions/edit.rb +4 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/actions/index.rb +4 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/actions/new.rb +4 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/actions/show.rb +4 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/actions/update.rb +11 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/controller.rb +8 -0
- data/lib/generators/tripper/from_community/templates/tests/rspec/model.rb +7 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/create.rb +13 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/destroy.rb +8 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/edit.rb +6 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/index.rb +6 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/new.rb +6 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/show.rb +6 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/actions/update.rb +13 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/controller.rb +5 -0
- data/lib/generators/tripper/from_community/templates/tests/shoulda/model.rb +7 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/actions/create.rb +11 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/actions/destroy.rb +6 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/actions/edit.rb +4 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/actions/index.rb +4 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/actions/new.rb +4 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/actions/show.rb +4 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/actions/update.rb +11 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/controller.rb +5 -0
- data/lib/generators/tripper/from_community/templates/tests/testunit/model.rb +7 -0
- data/lib/generators/tripper/from_community/templates/views/erb/_form.html.erb +16 -0
- data/lib/generators/tripper/from_community/templates/views/erb/edit.html.erb +14 -0
- data/lib/generators/tripper/from_community/templates/views/erb/index.html.erb +29 -0
- data/lib/generators/tripper/from_community/templates/views/erb/new.html.erb +7 -0
- data/lib/generators/tripper/from_community/templates/views/erb/show.html.erb +25 -0
- data/lib/generators/tripper/from_community/templates/views/haml/_form.html.haml +9 -0
- data/lib/generators/tripper/from_community/templates/views/haml/edit.html.haml +14 -0
- data/lib/generators/tripper/from_community/templates/views/haml/index.html.haml +25 -0
- data/lib/generators/tripper/from_community/templates/views/haml/new.html.haml +7 -0
- data/lib/generators/tripper/from_community/templates/views/haml/show.html.haml +20 -0
- data/lib/generators/tripper/layout/USAGE +18 -0
- data/lib/generators/tripper/layout/layout_generator.rb +29 -0
- data/lib/generators/tripper/layout/templates/error_messages_helper.rb +23 -0
- data/lib/generators/tripper/layout/templates/layout.html.erb +19 -0
- data/lib/generators/tripper/layout/templates/layout.html.haml +21 -0
- data/lib/generators/tripper/layout/templates/layout_helper.rb +22 -0
- data/lib/generators/tripper/layout/templates/stylesheet.css +83 -0
- data/lib/generators/tripper/layout/templates/stylesheet.sass +73 -0
- data/lib/generators/tripper/obj_constraint.rb +23 -0
- data/lib/generators/tripper/predicate.rb +12 -0
- data/lib/generators/tripper/sync_with_community/model.rb +260 -0
- data/lib/generators/tripper/sync_with_community/sync_with_community_generator.rb +310 -0
- data/lib/generators/tripper/sync_with_community/templates/migration.rb +7 -0
- data/lib/generators/tripper/sync_with_community/templates/model/belongs_to.rb +1 -0
- data/lib/generators/tripper/sync_with_community/templates/model/has_one.rb +1 -0
- data/lib/generators/tripper/sync_with_community/templates/model/validates.rb +2 -0
- data/lib/generators/tripper/templates/actions/create.rb +8 -0
- data/lib/generators/tripper/templates/actions/destroy.rb +5 -0
- data/lib/generators/tripper/templates/actions/edit.rb +3 -0
- data/lib/generators/tripper/templates/actions/index.rb +3 -0
- data/lib/generators/tripper/templates/actions/new.rb +3 -0
- data/lib/generators/tripper/templates/actions/show.rb +3 -0
- data/lib/generators/tripper/templates/actions/update.rb +8 -0
- data/lib/generators/tripper/templates/controller.rb +3 -0
- data/lib/generators/tripper/templates/fixtures.yml +9 -0
- data/lib/generators/tripper/templates/helper.rb +2 -0
- data/lib/generators/tripper/templates/migration.rb +30 -0
- data/lib/generators/tripper/templates/model.rb +54 -0
- data/lib/generators/tripper/templates/tests/rspec/actions/create.rb +11 -0
- data/lib/generators/tripper/templates/tests/rspec/actions/destroy.rb +6 -0
- data/lib/generators/tripper/templates/tests/rspec/actions/edit.rb +4 -0
- data/lib/generators/tripper/templates/tests/rspec/actions/index.rb +4 -0
- data/lib/generators/tripper/templates/tests/rspec/actions/new.rb +4 -0
- data/lib/generators/tripper/templates/tests/rspec/actions/show.rb +4 -0
- data/lib/generators/tripper/templates/tests/rspec/actions/update.rb +11 -0
- data/lib/generators/tripper/templates/tests/rspec/controller.rb +8 -0
- data/lib/generators/tripper/templates/tests/rspec/model.rb +7 -0
- data/lib/generators/tripper/templates/tests/shoulda/actions/create.rb +13 -0
- data/lib/generators/tripper/templates/tests/shoulda/actions/destroy.rb +8 -0
- data/lib/generators/tripper/templates/tests/shoulda/actions/edit.rb +6 -0
- data/lib/generators/tripper/templates/tests/shoulda/actions/index.rb +6 -0
- data/lib/generators/tripper/templates/tests/shoulda/actions/new.rb +6 -0
- data/lib/generators/tripper/templates/tests/shoulda/actions/show.rb +6 -0
- data/lib/generators/tripper/templates/tests/shoulda/actions/update.rb +13 -0
- data/lib/generators/tripper/templates/tests/shoulda/controller.rb +5 -0
- data/lib/generators/tripper/templates/tests/shoulda/model.rb +7 -0
- data/lib/generators/tripper/templates/tests/testunit/actions/create.rb +11 -0
- data/lib/generators/tripper/templates/tests/testunit/actions/destroy.rb +6 -0
- data/lib/generators/tripper/templates/tests/testunit/actions/edit.rb +4 -0
- data/lib/generators/tripper/templates/tests/testunit/actions/index.rb +4 -0
- data/lib/generators/tripper/templates/tests/testunit/actions/new.rb +4 -0
- data/lib/generators/tripper/templates/tests/testunit/actions/show.rb +4 -0
- data/lib/generators/tripper/templates/tests/testunit/actions/update.rb +11 -0
- data/lib/generators/tripper/templates/tests/testunit/controller.rb +5 -0
- data/lib/generators/tripper/templates/tests/testunit/model.rb +7 -0
- data/lib/generators/tripper/templates/views/erb/_form.html.erb +16 -0
- data/lib/generators/tripper/templates/views/erb/edit.html.erb +14 -0
- data/lib/generators/tripper/templates/views/erb/index.html.erb +29 -0
- data/lib/generators/tripper/templates/views/erb/new.html.erb +7 -0
- data/lib/generators/tripper/templates/views/erb/show.html.erb +25 -0
- data/lib/generators/tripper/templates/views/haml/_form.html.haml +9 -0
- data/lib/generators/tripper/templates/views/haml/edit.html.haml +14 -0
- data/lib/generators/tripper/templates/views/haml/index.html.haml +25 -0
- data/lib/generators/tripper/templates/views/haml/new.html.haml +7 -0
- data/lib/generators/tripper/templates/views/haml/show.html.haml +20 -0
- data/lib/tripper.rb +1 -0
- data/lib/tripper/GOSPLDB/config/database.yml +6 -0
- data/lib/tripper/GOSPLDB/config_db.rb +9 -0
- data/lib/tripper/GOSPLDB/console +2 -0
- data/lib/tripper/GOSPLDB/gospl_db_classes.rb +343 -0
- data/lib/tripper/GOSPLDB/play_around.rb +4 -0
- data/lib/tripper/GOSPLDB/rakefile.rb +88 -0
- data/lib/tripper/GOSPLDBToORMDB/gospl_db_to_orm_db.rb +88 -0
- data/lib/tripper/ORMDB/config/database.yml +6 -0
- data/lib/tripper/ORMDB/config_db.rb +9 -0
- data/lib/tripper/ORMDB/console +2 -0
- data/lib/tripper/ORMDB/db/migrations/0_create_orm_object_table.rb +17 -0
- data/lib/tripper/ORMDB/db/migrations/10_create_no_lot_constraint_table.rb +17 -0
- data/lib/tripper/ORMDB/db/migrations/11_create_value_constraint_table.rb +14 -0
- data/lib/tripper/ORMDB/db/migrations/12_create_value_constraint_value_table.rb +16 -0
- data/lib/tripper/ORMDB/db/migrations/13_create_value_range_table.rb +15 -0
- data/lib/tripper/ORMDB/db/migrations/14_create_frequency_constraint_table.rb +16 -0
- data/lib/tripper/ORMDB/db/migrations/15_create_value_table.rb +15 -0
- data/lib/tripper/ORMDB/db/migrations/16_create_ring_constraint_table.rb +14 -0
- data/lib/tripper/ORMDB/db/migrations/17_create_orm_schema_table.rb +21 -0
- data/lib/tripper/ORMDB/db/migrations/18_create_uniqueness_constraint_table.rb +15 -0
- data/lib/tripper/ORMDB/db/migrations/1_create_no_lot_table.rb +18 -0
- data/lib/tripper/ORMDB/db/migrations/2_create_lot_table.rb +18 -0
- data/lib/tripper/ORMDB/db/migrations/3_create_object_role_table.rb +18 -0
- data/lib/tripper/ORMDB/db/migrations/4_create_reference_table.rb +17 -0
- data/lib/tripper/ORMDB/db/migrations/5_create_predicate_table.rb +18 -0
- data/lib/tripper/ORMDB/db/migrations/6_create_object_role_constraint_table.rb +18 -0
- data/lib/tripper/ORMDB/db/migrations/7_create_subtype_table.rb +17 -0
- data/lib/tripper/ORMDB/db/migrations/8_create_mandatory_constraint_table.rb +15 -0
- data/lib/tripper/ORMDB/db/migrations/9_create_constraint_table.rb +15 -0
- data/lib/tripper/ORMDB/db/orm_ml.sqlite3 +0 -0
- data/lib/tripper/ORMDB/db/orm_ml.sqlite3.backup +0 -0
- data/lib/tripper/ORMDB/db/orm_ml.sqlite3.juli28-2013 +0 -0
- data/lib/tripper/ORMDB/db/orm_ml.sqlite3.old +0 -0
- data/lib/tripper/ORMDB/db/schema.rb +58 -0
- data/lib/tripper/ORMDB/erd.pdf +0 -0
- data/lib/tripper/ORMDB/migrate_db.rb +21 -0
- data/lib/tripper/ORMDB/orm_db_classes.rb +423 -0
- data/lib/tripper/ORMDB/populate.rb +4 -0
- data/lib/tripper/ORMDB/rakefile.rb +88 -0
- data/lib/tripper/model_parsers/attribute_parser/AttributeParser.g +50 -0
- data/lib/tripper/model_parsers/attribute_parser/AttributeParser.tokens +13 -0
- data/lib/tripper/model_parsers/attribute_parser/AttributeParserLexer.rb +538 -0
- data/lib/tripper/model_parsers/attribute_parser/AttributeParserParser.rb +412 -0
- data/lib/tripper/model_parsers/attribute_parser/playing_around.rb +14 -0
- data/lib/tripper/model_parsers/belongs_to/BelongsToParser.g +63 -0
- data/lib/tripper/model_parsers/belongs_to/BelongsToParser.tokens +21 -0
- data/lib/tripper/model_parsers/belongs_to/BelongsToParserLexer.rb +667 -0
- data/lib/tripper/model_parsers/belongs_to/BelongsToParserParser.rb +552 -0
- data/lib/tripper/model_parsers/belongs_to/playing_around.rb +9 -0
- data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParser.g +47 -0
- data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParser.tokens +14 -0
- data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParserLexer.rb +513 -0
- data/lib/tripper/model_parsers/database_fields_parser/DatabaseFieldsParserParser.rb +279 -0
- data/lib/tripper/model_parsers/database_fields_parser/playing_around.rb +14 -0
- data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParser.g +92 -0
- data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParser.tokens +25 -0
- data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserLexer.rb +787 -0
- data/lib/tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserParser.rb +1024 -0
- data/lib/tripper/model_parsers/has_and_belongs_to_many/playing_around.rb +9 -0
- data/lib/tripper/model_parsers/has_many/HasManyParser.g +77 -0
- data/lib/tripper/model_parsers/has_many/HasManyParser.tokens +23 -0
- data/lib/tripper/model_parsers/has_many/HasManyParserLexer.rb +710 -0
- data/lib/tripper/model_parsers/has_many/HasManyParserParser.rb +788 -0
- data/lib/tripper/model_parsers/has_many/playing_around.rb +9 -0
- data/lib/tripper/model_parsers/has_one/HasOneParser.g +63 -0
- data/lib/tripper/model_parsers/has_one/HasOneParser.tokens +21 -0
- data/lib/tripper/model_parsers/has_one/HasOneParserLexer.rb +664 -0
- data/lib/tripper/model_parsers/has_one/HasOneParserParser.rb +552 -0
- data/lib/tripper/model_parsers/has_one/playing_around.rb +9 -0
- data/lib/tripper/model_parsers/validates/ValidatesParser.g +68 -0
- data/lib/tripper/model_parsers/validates/ValidatesParser.tokens +35 -0
- data/lib/tripper/model_parsers/validates/ValidatesParserLexer.rb +899 -0
- data/lib/tripper/model_parsers/validates/ValidatesParserParser.rb +869 -0
- data/lib/tripper/model_parsers/validates/playing_around.rb +9 -0
- data/lib/tripper/rails.rb +8 -0
- data/lib/tripper/version.rb +3 -0
- data/tripper.gemspec +33 -0
- metadata +408 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
module ErrorMessagesHelper
|
2
|
+
# Render error messages for the given objects. The :message and :header_message options are allowed.
|
3
|
+
def error_messages_for(*objects)
|
4
|
+
options = objects.extract_options!
|
5
|
+
options[:header_message] ||= I18n.t(:"activerecord.errors.header", :default => "Invalid Fields")
|
6
|
+
options[:message] ||= I18n.t(:"activerecord.errors.message", :default => "Correct the following errors and try again.")
|
7
|
+
messages = objects.compact.map { |o| o.errors.full_messages }.flatten
|
8
|
+
unless messages.empty?
|
9
|
+
content_tag(:div, :class => "error_messages") do
|
10
|
+
list_items = messages.map { |msg| content_tag(:li, msg.html_safe) }
|
11
|
+
content_tag(:h2, options[:header_message].html_safe) + content_tag(:p, options[:message].html_safe) + content_tag(:ul, list_items.join.html_safe)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module FormBuilderAdditions
|
17
|
+
def error_messages(options = {})
|
18
|
+
@template.error_messages_for(@object, options)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
ActionView::Helpers::FormBuilder.send(:include, ErrorMessagesHelper::FormBuilderAdditions)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title><%%= content_for?(:title) ? yield(:title) : "Untitled" %></title>
|
5
|
+
<%%= stylesheet_link_tag "<%= file_name %>" %>
|
6
|
+
<%%= javascript_include_tag :defaults %>
|
7
|
+
<%%= csrf_meta_tag %>
|
8
|
+
<%%= yield(:head) %>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<div id="container">
|
12
|
+
<%% flash.each do |name, msg| %>
|
13
|
+
<%%= content_tag :div, msg, :id => "flash_#{name}" %>
|
14
|
+
<%% end %>
|
15
|
+
<%%= content_tag :h1, yield(:title) if show_title? %>
|
16
|
+
<%%= yield %>
|
17
|
+
</div>
|
18
|
+
</body>
|
19
|
+
</html>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
!!!
|
2
|
+
%html
|
3
|
+
|
4
|
+
%head
|
5
|
+
%title
|
6
|
+
= content_for?(:title) ? yield(:title) : "Untitled"
|
7
|
+
%meta{"http-equiv"=>"Content-Type", :content=>"text/html; charset=utf-8"}/
|
8
|
+
= stylesheet_link_tag "<%= file_name %>"
|
9
|
+
= javascript_include_tag :defaults
|
10
|
+
= csrf_meta_tag
|
11
|
+
= yield(:head)
|
12
|
+
|
13
|
+
%body
|
14
|
+
#container
|
15
|
+
- flash.each do |name, msg|
|
16
|
+
= content_tag :div, msg, :id => "flash_#{name}"
|
17
|
+
|
18
|
+
- if show_title?
|
19
|
+
%h1= yield(:title)
|
20
|
+
|
21
|
+
= yield
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# These helper methods can be called in your template to set variables to be used in the layout
|
2
|
+
# This module should be included in all views globally,
|
3
|
+
# to do so you may need to add this line to your ApplicationController
|
4
|
+
# helper :layout
|
5
|
+
module LayoutHelper
|
6
|
+
def title(page_title, show_title = true)
|
7
|
+
content_for(:title) { h(page_title.to_s) }
|
8
|
+
@show_title = show_title
|
9
|
+
end
|
10
|
+
|
11
|
+
def show_title?
|
12
|
+
@show_title
|
13
|
+
end
|
14
|
+
|
15
|
+
def stylesheet(*args)
|
16
|
+
content_for(:head) { stylesheet_link_tag(*args) }
|
17
|
+
end
|
18
|
+
|
19
|
+
def javascript(*args)
|
20
|
+
content_for(:head) { javascript_include_tag(*args) }
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
html, body {
|
2
|
+
background-color: #4B7399;
|
3
|
+
font-family: Verdana, Helvetica, Arial;
|
4
|
+
font-size: 14px;
|
5
|
+
}
|
6
|
+
|
7
|
+
a img {
|
8
|
+
border: none;
|
9
|
+
}
|
10
|
+
|
11
|
+
a {
|
12
|
+
color: #0000FF;
|
13
|
+
}
|
14
|
+
|
15
|
+
.clear {
|
16
|
+
clear: both;
|
17
|
+
height: 0;
|
18
|
+
overflow: hidden;
|
19
|
+
}
|
20
|
+
|
21
|
+
#container {
|
22
|
+
width: 75%;
|
23
|
+
margin: 0 auto;
|
24
|
+
background-color: #FFF;
|
25
|
+
padding: 20px 40px;
|
26
|
+
border: solid 1px black;
|
27
|
+
margin-top: 20px;
|
28
|
+
}
|
29
|
+
|
30
|
+
#flash_notice, #flash_error, #flash_alert {
|
31
|
+
padding: 5px 8px;
|
32
|
+
margin: 10px 0;
|
33
|
+
}
|
34
|
+
|
35
|
+
#flash_notice {
|
36
|
+
background-color: #CFC;
|
37
|
+
border: solid 1px #6C6;
|
38
|
+
}
|
39
|
+
|
40
|
+
#flash_error, #flash_alert {
|
41
|
+
background-color: #FCC;
|
42
|
+
border: solid 1px #C66;
|
43
|
+
}
|
44
|
+
|
45
|
+
.error_messages {
|
46
|
+
width: 400px;
|
47
|
+
border: 2px solid #CF0000;
|
48
|
+
padding: 0px;
|
49
|
+
padding-bottom: 12px;
|
50
|
+
margin-bottom: 20px;
|
51
|
+
background-color: #f0f0f0;
|
52
|
+
font-size: 12px;
|
53
|
+
}
|
54
|
+
|
55
|
+
.error_messages h2 {
|
56
|
+
text-align: left;
|
57
|
+
font-weight: bold;
|
58
|
+
padding: 5px 10px;
|
59
|
+
font-size: 12px;
|
60
|
+
margin: 0;
|
61
|
+
background-color: #c00;
|
62
|
+
color: #fff;
|
63
|
+
}
|
64
|
+
|
65
|
+
.error_messages p {
|
66
|
+
margin: 8px 10px;
|
67
|
+
}
|
68
|
+
|
69
|
+
.error_messages ul {
|
70
|
+
margin: 0;
|
71
|
+
}
|
72
|
+
|
73
|
+
.field_with_errors {
|
74
|
+
display: inline;
|
75
|
+
}
|
76
|
+
|
77
|
+
form .field, form .actions {
|
78
|
+
margin: 10px 0;
|
79
|
+
}
|
80
|
+
|
81
|
+
form label {
|
82
|
+
display: block;
|
83
|
+
}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
$primary_color: #4b7399
|
2
|
+
|
3
|
+
body
|
4
|
+
background-color: $primary_color
|
5
|
+
font:
|
6
|
+
family: Verdana, Helvetica, Arial
|
7
|
+
size: 14px
|
8
|
+
|
9
|
+
a
|
10
|
+
color: blue
|
11
|
+
img
|
12
|
+
border: none
|
13
|
+
|
14
|
+
.clear
|
15
|
+
clear: both
|
16
|
+
height: 0
|
17
|
+
overflow: hidden
|
18
|
+
|
19
|
+
#container
|
20
|
+
width: 75%
|
21
|
+
margin: 0 auto
|
22
|
+
background: white
|
23
|
+
padding: 20px 40px
|
24
|
+
border: solid 1px black
|
25
|
+
margin-top: 20px
|
26
|
+
|
27
|
+
#flash_notice,
|
28
|
+
#flash_error,
|
29
|
+
#flash_alert
|
30
|
+
padding: 5px 8px
|
31
|
+
margin: 10px 0
|
32
|
+
|
33
|
+
#flash_notice
|
34
|
+
background-color: #ccffcc
|
35
|
+
border: solid 1px #66cc66
|
36
|
+
|
37
|
+
#flash_error,
|
38
|
+
#flash_alert
|
39
|
+
background-color: #ffcccc
|
40
|
+
border: solid 1px #cc6666
|
41
|
+
|
42
|
+
.error_messages
|
43
|
+
width: 400px
|
44
|
+
border: 2px solid #cf0000
|
45
|
+
padding: 0
|
46
|
+
padding-bottom: 12px
|
47
|
+
margin-bottom: 20px
|
48
|
+
background-color: #f0f0f0
|
49
|
+
font:
|
50
|
+
size: 12px
|
51
|
+
h2
|
52
|
+
text-align: left
|
53
|
+
padding: 5px 5px 5px 15px
|
54
|
+
margin: 0
|
55
|
+
font:
|
56
|
+
weight: bold
|
57
|
+
size: 12px
|
58
|
+
background-color: #cc0000
|
59
|
+
color: white
|
60
|
+
p
|
61
|
+
margin: 8px 10px
|
62
|
+
ul
|
63
|
+
margin: 0
|
64
|
+
|
65
|
+
.field_with_errors
|
66
|
+
display: inline
|
67
|
+
|
68
|
+
form .field,
|
69
|
+
form .actions
|
70
|
+
margin: 10px 0
|
71
|
+
|
72
|
+
form label
|
73
|
+
display: block
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Tripper
|
2
|
+
module Generators
|
3
|
+
# This class will contain an object and the constraints, from the point of view of a perticular predicate.
|
4
|
+
#
|
5
|
+
class ObjConstraint
|
6
|
+
attr_accessor :obj, :object_role_constraints
|
7
|
+
|
8
|
+
def contains_identifying_constraint?
|
9
|
+
@object_role_constraints.inject(false) {|res, obj_role_constraint| res || (obj_role_constraint.constraint_type == "Tripper::ORMDB::UniquenessConstraint" && obj_role_constraint.constraint.object_roles.count == 1)}
|
10
|
+
end
|
11
|
+
|
12
|
+
def external_uniqueness_constraint_object_types
|
13
|
+
external_uniqueness_constraints.map {|obj_role_constraint| obj_role_constraint.constraint.object_roles.map {|obj_role| obj_role.orm_object}}
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
def external_uniqueness_constraints
|
19
|
+
@object_role_constraints.select {|obj_role_constraint| obj_role_constraint.constraint_type == "Tripper::ORMDB::UniquenessConstraint" && obj_role_constraint.constraint.object_roles.count != 1}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Tripper
|
2
|
+
module Generators
|
3
|
+
#This predicate class will be used to represend a predicate from the point of view a particular object type.
|
4
|
+
#that perticular object type will always be the head of the Predicate.
|
5
|
+
class Predicate
|
6
|
+
attr_accessor :head, :tail
|
7
|
+
def identified_by_tail?
|
8
|
+
tail.contains_identifying_constraint?
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,260 @@
|
|
1
|
+
require 'generators/tripper'
|
2
|
+
|
3
|
+
require 'tripper/GOSPLDB/gospl_db_classes'
|
4
|
+
require 'tripper/ORMDB/orm_db_classes'
|
5
|
+
require 'tripper/model_parsers/attribute_parser/AttributeParserParser'
|
6
|
+
require 'tripper/model_parsers/belongs_to/BelongsToParserParser'
|
7
|
+
require 'tripper/model_parsers/validates/ValidatesParserParser'
|
8
|
+
require 'tripper/model_parsers/has_one/HasOneParserParser'
|
9
|
+
require 'tripper/model_parsers/database_fields_parser/DatabaseFieldsParserParser'
|
10
|
+
require 'tripper/model_parsers/has_and_belongs_to_many/HasAndBelongsToManyParserParser'
|
11
|
+
require 'tripper/model_parsers/has_many/HasManyParserParser'
|
12
|
+
|
13
|
+
require "highline/import"
|
14
|
+
|
15
|
+
module Tripper
|
16
|
+
module Generators
|
17
|
+
class Model
|
18
|
+
include Comparable
|
19
|
+
attr_accessor :path, :class_name, :attributes, :belongs_tos, :has_ones, :has_manies, :has_and_belongs_to_manies, :validations
|
20
|
+
|
21
|
+
def initialize(path)
|
22
|
+
@path = path
|
23
|
+
@class_name = File.basename(path, ".rb").camelize
|
24
|
+
@attributes = []
|
25
|
+
@belongs_tos = []
|
26
|
+
@has_ones = []
|
27
|
+
@has_manies = []
|
28
|
+
@has_and_belongs_to_manies = []
|
29
|
+
@validations = Validations.new
|
30
|
+
# puts "parsing file"+path
|
31
|
+
unless path.include? "app/tripper/models"
|
32
|
+
@attributes = Kernel.const_get(@class_name).column_names - ["id", "created_at", "updated_at"]
|
33
|
+
end
|
34
|
+
File.foreach(path) do |line|
|
35
|
+
if line.include?("# database_fields:") && path.include?("app/tripper/models")
|
36
|
+
parser = DatabaseFieldsParser::Parser.new(line)
|
37
|
+
res = parser.database_fields
|
38
|
+
@attributes = res
|
39
|
+
elsif line.include? "has_one"
|
40
|
+
# puts "parsing has_one"
|
41
|
+
parser = HasOneParser::Parser.new(line)
|
42
|
+
res = parser.has_one
|
43
|
+
@has_ones << HasOne.new(res[:attribute], res[:class_name]) if res
|
44
|
+
elsif line.include? "has_many"
|
45
|
+
# puts "parsing has_many"
|
46
|
+
parser = HasManyParser::Parser.new(line)
|
47
|
+
res = parser.has_many
|
48
|
+
@has_manies << HasMany.new(res[:attribute], res[:class_name]) if res
|
49
|
+
elsif line.include? "has_and_belongs_to_many"
|
50
|
+
#puts "parsing has_and_belongs_to_many"
|
51
|
+
parser = HasAndBelongsToManyParser::Parser.new(line)
|
52
|
+
res = parser.has_and_belongs_to_many
|
53
|
+
@has_and_belongs_to_manies << HasAndBelongsToMany.new(res[:attribute], res[:class_name]) if res
|
54
|
+
elsif line.include? "belongs_to"
|
55
|
+
# puts "parsing belongs_to"
|
56
|
+
parser = BelongsToParser::Parser.new(line)
|
57
|
+
res = parser.belongs_to
|
58
|
+
@belongs_tos << BelongsTo.new(res[:attribute], res[:class_name]) if res
|
59
|
+
elsif line.include?("validates") && (line.include?("uniqueness") || line.include?("presence"))
|
60
|
+
# puts "parsing validates"
|
61
|
+
parser = ValidatesParser::Parser.new(line)
|
62
|
+
res = parser.validates
|
63
|
+
@validations << Validation.new(res[:type], res[:attribute], res[:on]) if res
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def find_belong_tos_by_name name
|
69
|
+
find_all_by_name :belongs_tos, name
|
70
|
+
end
|
71
|
+
|
72
|
+
def find_has_ones_by_name name
|
73
|
+
find_all_by_name :has_ones, name
|
74
|
+
end
|
75
|
+
|
76
|
+
def find_has_manies_by_name name
|
77
|
+
find_all_by_name :has_manies, name
|
78
|
+
end
|
79
|
+
|
80
|
+
def find_has_and_belongs_to_manies_by_name name
|
81
|
+
find_all_by_name :has_and_belongs_to_manies, name
|
82
|
+
end
|
83
|
+
|
84
|
+
def find_mandatory_constraints_by_name name
|
85
|
+
find_all_constraints_by_name :presence, name
|
86
|
+
end
|
87
|
+
|
88
|
+
def find_uniqueness_constraints_by_name name
|
89
|
+
find_all_constraints_by_name :uniqueness, name
|
90
|
+
end
|
91
|
+
|
92
|
+
# we need to uniqueify and sort the validations list, to allow symetric constraints
|
93
|
+
# e.g validates :my_time_id, :uniqueness => {:scope => :my_date_id}
|
94
|
+
# and validates :my_date_id, :uniqueness => {:scope => :my_time_id}
|
95
|
+
def <=> other
|
96
|
+
[self.class_name, self.attributes.sort, self.belongs_tos.sort, self.has_ones.sort, self.has_manies.sort, self.has_and_belongs_to_manies.sort, self.validations.uniq{|v| v.comparable_object}.sort] <=> [other.class_name, other.attributes.sort, other.belongs_tos.sort, other.has_ones.sort, other.has_manies.sort, other.has_and_belongs_to_manies.sort, other.validations.uniq{|v| v.comparable_object}.sort]
|
97
|
+
end
|
98
|
+
|
99
|
+
def to_s
|
100
|
+
self.class_name + " " + self.attributes.to_s + " " + self.belongs_tos.to_s + " " + self.validations.to_s
|
101
|
+
end
|
102
|
+
|
103
|
+
def differences other
|
104
|
+
ModelDiff.new(self, other)
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
|
109
|
+
def find_all_by_name type, name
|
110
|
+
self.send(type).find_all {|v| v.attribute == name || v.class_name == name }
|
111
|
+
end
|
112
|
+
|
113
|
+
def find_all_constraints_by_name type, name
|
114
|
+
self.validations.send(type).find_all {|v| (v.attribute == name) || (v.scope.include? (name)) }
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
# compaires model1 with model2. The result is in the point of view of model1.
|
120
|
+
# e.g. if it has: :lacking=>[time], it means that model1 did not have time, while model2 did.
|
121
|
+
class ModelDiff
|
122
|
+
attr_accessor :model1, :model2, :attributes_diff, :belongs_tos_diff, :has_ones_diff, :has_manies_diff, :has_and_belongs_to_manies_diff, :validations_diff
|
123
|
+
|
124
|
+
def initialize model1, model2
|
125
|
+
@model1 = model1
|
126
|
+
@model2 = model2
|
127
|
+
@attributes_diff = difference_in_field :attributes
|
128
|
+
@belongs_tos_diff = difference_in_field :belongs_tos
|
129
|
+
@has_ones_diff = difference_in_field :has_ones
|
130
|
+
@has_manies_diff = difference_in_field :has_manies
|
131
|
+
@has_and_belongs_to_manies_diff = difference_in_field :has_and_belongs_to_manies
|
132
|
+
@validations_diff = difference_in_field :validations
|
133
|
+
end
|
134
|
+
|
135
|
+
def inspect
|
136
|
+
res = {model1: @model1.class_name, model2: @model2.class_name}
|
137
|
+
res[:attributes_diff] = @attributes_diff unless @attributes_diff.empty?
|
138
|
+
res[:belongs_tos_diff] = @belongs_tos_diff unless @belongs_tos_diff.empty?
|
139
|
+
res[:has_ones_diff] = @has_ones_diff unless @has_ones_diff.empty?
|
140
|
+
res[:has_manies_diff] = @has_manies_diff unless @has_manies_diff.empty?
|
141
|
+
res[:has_and_belongs_to_manies_diff] = @has_and_belongs_to_manies_diff unless @has_and_belongs_to_manies_diff.empty?
|
142
|
+
res[:validations_diff] = @validations_diff unless @validations_diff.empty?
|
143
|
+
res
|
144
|
+
end
|
145
|
+
|
146
|
+
private
|
147
|
+
|
148
|
+
def difference_in_field field
|
149
|
+
extra = @model1.send(field).reject { |att| @model2.send(field).include? att }
|
150
|
+
lacking = @model2.send(field).reject { |att| @model1.send(field).include? att }
|
151
|
+
FieldDiff.new extra: extra, lacking: lacking
|
152
|
+
end
|
153
|
+
|
154
|
+
class FieldDiff
|
155
|
+
attr_accessor :extra, :lacking
|
156
|
+
def initialize params={}
|
157
|
+
@extra = (params[:extra] ? params[:extra] : [])
|
158
|
+
@lacking = (params[:lacking] ? params[:lacking] : [])
|
159
|
+
end
|
160
|
+
|
161
|
+
def inspect
|
162
|
+
{extra: @extra, lacking: @lacking}
|
163
|
+
end
|
164
|
+
|
165
|
+
def empty?
|
166
|
+
@extra.empty? && @lacking.empty?
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
class Relation
|
172
|
+
include Comparable
|
173
|
+
attr_accessor :name, :class_name, :type
|
174
|
+
|
175
|
+
def initialize (type, name, class_name=nil)
|
176
|
+
@type = @type
|
177
|
+
@name = name
|
178
|
+
@class_name = class_name
|
179
|
+
end
|
180
|
+
|
181
|
+
def to_s
|
182
|
+
self.name + " " + (self.class_name ? self.class_name : "")
|
183
|
+
end
|
184
|
+
|
185
|
+
def <=> other
|
186
|
+
[self.name, self.class_name, self.type] <=> [self.name, other.class_name, self.type]
|
187
|
+
end
|
188
|
+
|
189
|
+
def == other
|
190
|
+
self.name == other.name && self.class_name == other.class_name && self.type == other.type
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
class BelongsTo < Relation
|
195
|
+
def initialize (name, class_name=nil)
|
196
|
+
super("belongs_to", name, class_name)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
class HasOne < Relation
|
201
|
+
def initialize (name, class_name=nil)
|
202
|
+
super("has_one", name, class_name)
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
class HasMany < Relation
|
207
|
+
def initialize (name, class_name=nil)
|
208
|
+
super("has_many", name, class_name)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
class HasAndBelongsToMany < Relation
|
213
|
+
def initialize (name, class_name=nil)
|
214
|
+
super("has_and_belongs_to_many", name, class_name)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
class Validations < Array
|
219
|
+
def presence
|
220
|
+
self.select do |obj|
|
221
|
+
obj.type == "presence"
|
222
|
+
end
|
223
|
+
end
|
224
|
+
def uniqueness
|
225
|
+
self.select do |obj|
|
226
|
+
obj.type == "uniqueness"
|
227
|
+
end
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
class Validation
|
232
|
+
include Comparable
|
233
|
+
attr_accessor :type, :attribute, :scope
|
234
|
+
|
235
|
+
def initialize (type, attribute, scope)
|
236
|
+
@type = type; @attribute = attribute; @scope = scope
|
237
|
+
@combined = [scope, attribute].flatten.uniq.sort
|
238
|
+
end
|
239
|
+
|
240
|
+
def to_s
|
241
|
+
self.type + " " + @combined.to_s#.sort.to_s
|
242
|
+
end
|
243
|
+
def <=> other
|
244
|
+
self.comparable_object <=> other.comparable_object
|
245
|
+
end
|
246
|
+
|
247
|
+
def == other
|
248
|
+
self.comparable_object == other.comparable_object
|
249
|
+
end
|
250
|
+
|
251
|
+
def comparable_object
|
252
|
+
[self.type, @combined]
|
253
|
+
end
|
254
|
+
|
255
|
+
private
|
256
|
+
|
257
|
+
attr_accessor :combined
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|