coupler 0.0.4-java → 0.0.6-java
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.
- data/Gemfile +7 -8
- data/Gemfile.lock +43 -24
- data/VERSION +1 -1
- data/coupler.gemspec +27 -31
- data/features/wizard.feature +2 -1
- data/lib/coupler.rb +2 -2
- data/lib/coupler/base.rb +4 -0
- data/lib/coupler/extensions/connections.rb +2 -12
- data/lib/coupler/extensions/jobs.rb +4 -2
- data/lib/coupler/extensions/projects.rb +1 -1
- data/lib/coupler/helpers.rb +9 -1
- data/lib/coupler/models.rb +8 -0
- data/lib/coupler/models/comparison.rb +5 -4
- data/lib/coupler/models/connection.rb +10 -1
- data/lib/coupler/models/import.rb +3 -7
- data/lib/coupler/models/transformer.rb +1 -1
- data/lib/coupler/runner.rb +1 -1
- data/lib/coupler/scheduler.rb +1 -1
- data/tasks/test.rake +8 -0
- data/test/functional/test_base.rb +17 -0
- data/test/functional/test_connections.rb +81 -0
- data/test/functional/test_imports.rb +76 -0
- data/test/{integration/extensions → functional}/test_jobs.rb +21 -12
- data/test/functional/test_matchers.rb +108 -0
- data/test/functional/test_projects.rb +67 -0
- data/test/functional/test_resources.rb +126 -0
- data/test/{integration/extensions → functional}/test_results.rb +20 -29
- data/test/functional/test_scenarios.rb +92 -0
- data/test/functional/test_transformations.rb +106 -0
- data/test/functional/test_transformers.rb +68 -0
- data/test/helper.rb +30 -20
- data/test/integration/test_transformation.rb +6 -1
- data/test/unit/models/test_common_model.rb +2 -2
- data/test/unit/models/test_comparison.rb +8 -8
- data/test/unit/models/test_connection.rb +2 -2
- data/test/unit/models/test_field.rb +2 -2
- data/test/unit/models/test_import.rb +9 -4
- data/test/unit/models/test_job.rb +2 -2
- data/test/unit/models/test_matcher.rb +2 -2
- data/test/unit/models/test_project.rb +2 -2
- data/test/unit/models/test_resource.rb +2 -2
- data/test/unit/models/test_result.rb +2 -2
- data/test/unit/models/test_scenario.rb +2 -2
- data/test/unit/models/test_transformation.rb +2 -2
- data/test/unit/models/test_transformer.rb +12 -2
- data/test/unit/test_base.rb +1 -14
- data/test/unit/test_data_uploader.rb +1 -1
- data/test/unit/test_database.rb +1 -1
- data/test/unit/test_helpers.rb +2 -2
- data/test/unit/test_import_buffer.rb +40 -38
- data/test/unit/test_logger.rb +1 -1
- data/test/unit/test_models.rb +1 -1
- data/test/unit/test_runner.rb +1 -1
- data/test/unit/test_scheduler.rb +1 -1
- data/webroot/public/css/style.css +7 -5
- data/webroot/public/js/jquery.dataTables.min.js +130 -574
- data/webroot/views/connections/new.erb +41 -3
- data/webroot/views/imports/new.erb +2 -0
- data/webroot/views/jobs/list.erb +25 -21
- data/webroot/views/projects/index.erb +23 -15
- data/webroot/views/resources/list.erb +1 -2
- data/webroot/views/resources/new.erb +2 -2
- data/webroot/views/resources/show.erb +5 -2
- data/webroot/views/scenarios/new.erb +1 -1
- data/webroot/views/transformations/new.erb +1 -1
- metadata +30 -44
- data/lib/coupler/config.rb +0 -128
- data/test/coupler/models/test_import.rb +0 -221
- data/test/factories.rb +0 -91
- data/test/integration/extensions/test_connections.rb +0 -80
- data/test/integration/extensions/test_imports.rb +0 -94
- data/test/integration/extensions/test_matchers.rb +0 -134
- data/test/integration/extensions/test_projects.rb +0 -82
- data/test/integration/extensions/test_resources.rb +0 -150
- data/test/integration/extensions/test_scenarios.rb +0 -88
- data/test/integration/extensions/test_transformations.rb +0 -113
- data/test/integration/extensions/test_transformers.rb +0 -80
- data/vendor/h2-1.3.154.jar +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<% @breadcrumbs = [@connection] %>
|
|
2
2
|
<%= error_messages_for @connection %>
|
|
3
|
-
<form method="post" action="/connections">
|
|
3
|
+
<form method="post" action="/connections" class="connection-form">
|
|
4
4
|
<table class="form">
|
|
5
5
|
<tr>
|
|
6
6
|
<td class="left"><label for="name">Name</label></td>
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
<td class="left"><label for="adapter">Type</label></td>
|
|
13
13
|
<td>
|
|
14
14
|
<select id="adapter" name="connection[adapter]">
|
|
15
|
-
<% Coupler::Models::Connection::ADAPTERS.each do |
|
|
16
|
-
<option value="<%=
|
|
15
|
+
<% Coupler::Models::Connection::ADAPTERS.each do |options| %>
|
|
16
|
+
<option value="<%= options[:name] %>"<%= ' selected="selected"' if @connection.adapter == options[:name] %>><%= options[:label] %></option>
|
|
17
17
|
<% end %>
|
|
18
18
|
</select>
|
|
19
19
|
</td>
|
|
@@ -48,8 +48,46 @@
|
|
|
48
48
|
<input id="database_name" name="connection[database_name]" type="text" value="<%= @connection.database_name %>" />
|
|
49
49
|
</td>
|
|
50
50
|
</tr>
|
|
51
|
+
<tr>
|
|
52
|
+
<td class="left"><label for="path">Path</label></td>
|
|
53
|
+
<td>
|
|
54
|
+
<input id="path" name="connection[path]" type="text" value="<%= @connection.path %>" />
|
|
55
|
+
</td>
|
|
56
|
+
</tr>
|
|
51
57
|
</table>
|
|
52
58
|
<p>
|
|
53
59
|
<input type="submit" value="Submit" /> or <a href="/connections">Cancel</a>
|
|
54
60
|
</p>
|
|
55
61
|
</form>
|
|
62
|
+
<script type="text/javascript">
|
|
63
|
+
var ignoredAttribs = <%= Coupler::Models::Connection::ADAPTERS.inject({}) { |m, o| m[o[:name]] = o[:ignored_attributes]; m }.to_json %>
|
|
64
|
+
function adapterSelected(fade) {
|
|
65
|
+
var ignored = ignoredAttribs[$(this).val()];
|
|
66
|
+
var enable = $([]);
|
|
67
|
+
var disable = $([]);
|
|
68
|
+
$("[name^=connection\\[]").each(function() {
|
|
69
|
+
var obj = $(this);
|
|
70
|
+
var row = obj.closest('tr');
|
|
71
|
+
if ($.inArray(obj.attr('id'), ignored) == -1) {
|
|
72
|
+
enable = enable.add(row);
|
|
73
|
+
} else {
|
|
74
|
+
disable = disable.add(row);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
if (typeof(fade) == 'undefined' || fade) {
|
|
78
|
+
disable.fadeOut(function() {
|
|
79
|
+
disable.find('input, select, textarea').attr('disabled', true);
|
|
80
|
+
enable.find('input, select, textarea').attr('disabled', false);
|
|
81
|
+
enable.fadeIn();
|
|
82
|
+
});
|
|
83
|
+
} else {
|
|
84
|
+
disable.hide().find('input, select, textarea').attr('disabled', true);
|
|
85
|
+
enable.find('input, select, textarea').attr('disabled', false).show();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
$(function() {
|
|
90
|
+
var a = $('#adapter').change(adapterSelected);
|
|
91
|
+
adapterSelected.call(a[0], false);
|
|
92
|
+
});
|
|
93
|
+
</script>
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
<%- add_javascript('jquery.dataTables.min.js') -%>
|
|
3
3
|
<%- add_stylesheet('dataTables.css') -%>
|
|
4
4
|
|
|
5
|
+
<%= error_messages_for @import %>
|
|
6
|
+
<%= error_messages_for @resource %>
|
|
5
7
|
<form action="/projects/<%= @project.id %>/imports" method="post">
|
|
6
8
|
<input type="hidden" name="import[data_cache]" value="<%= @import.data_cache %>" />
|
|
7
9
|
<p>
|
data/webroot/views/jobs/list.erb
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
<table class="list">
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<%-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
2
|
+
<thead>
|
|
3
|
+
<tr>
|
|
4
|
+
<th>Type</th>
|
|
5
|
+
<th>Status</th>
|
|
6
|
+
<% if show_target %><th>Target</th><% end %>
|
|
7
|
+
<th>Created</th>
|
|
8
|
+
</tr>
|
|
9
|
+
</thead>
|
|
10
|
+
<tbody>
|
|
11
|
+
<% jobs.each_with_index do |job, i| %>
|
|
12
|
+
<tr<%= cycle("", " class='alt'") %>>
|
|
13
|
+
<td><%= job.name %></td>
|
|
14
|
+
<td><%= job.status %></td>
|
|
15
|
+
<%- if show_target -%>
|
|
16
|
+
<%- if job.resource -%>
|
|
17
|
+
<td><a href="/projects/<%= job.resource.project.id %>/resources/<%= job.resource.id %>"><%= job.resource.name %></a></td>
|
|
18
|
+
<%- elsif job.scenario -%>
|
|
19
|
+
<td><a href="/projects/<%= job.scenario.project.id %>/scenarios/<%= job.scenario.id %>"><%= job.scenario.name %></a></td>
|
|
20
|
+
<%- else -%>
|
|
21
|
+
<td>N/A</td>
|
|
22
|
+
<%- end -%>
|
|
19
23
|
<%- end -%>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
<td><%= timeago(job.created_at) %></td>
|
|
25
|
+
</tr>
|
|
26
|
+
<% end %>
|
|
27
|
+
</tbody>
|
|
24
28
|
</table>
|
|
@@ -55,24 +55,32 @@
|
|
|
55
55
|
$(function() {
|
|
56
56
|
$('#delete-project-dialog').dialog({
|
|
57
57
|
autoOpen: false,
|
|
58
|
-
buttons:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
$('#confirm-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
buttons: [
|
|
59
|
+
{
|
|
60
|
+
id: "yes-button",
|
|
61
|
+
text: "Yes",
|
|
62
|
+
click: function() {
|
|
63
|
+
if ($('#confirm-1').is(':visible')) {
|
|
64
|
+
$('#nuke-choice').toggle($('#nuke').is(':checked'));
|
|
65
|
+
$('#confirm-1').hide();
|
|
66
|
+
$('#confirm-2').show();
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
$('#delete-form').submit();
|
|
70
|
+
}
|
|
67
71
|
}
|
|
68
72
|
},
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
{
|
|
74
|
+
id: "no-button",
|
|
75
|
+
text: "No",
|
|
76
|
+
click: function() {
|
|
77
|
+
$('#delete-project-dialog').dialog('close');
|
|
78
|
+
$('#nuke').attr('checked', false)
|
|
79
|
+
$('#confirm-1').show();
|
|
80
|
+
$('#confirm-2').hide();
|
|
81
|
+
},
|
|
74
82
|
}
|
|
75
|
-
|
|
83
|
+
],
|
|
76
84
|
modal: true
|
|
77
85
|
});
|
|
78
86
|
$('button.edit-project').button({icons: { primary: 'ui-icon-pencil' }});
|
|
@@ -6,14 +6,13 @@
|
|
|
6
6
|
<tr>
|
|
7
7
|
<th>Name</th>
|
|
8
8
|
<% unless @hide_connection %><th>Connection</th><% end %>
|
|
9
|
-
<th>Database</th>
|
|
10
9
|
<th>Table</th>
|
|
11
10
|
</tr>
|
|
12
11
|
</thead>
|
|
13
12
|
<tbody>
|
|
14
13
|
<% @resources.each_with_index do |resource, i| %>
|
|
15
14
|
<tr<%= ' class="alt"' if i % 2 == 1 %>>
|
|
16
|
-
<td><a href="/projects/<%=
|
|
15
|
+
<td><a href="/projects/<%= resource.project_id %>/resources/<%= resource.id %>"><%= resource.name %></a></td>
|
|
17
16
|
<%- if resource.import_id -%>
|
|
18
17
|
<td colspan="3" class='centered'>(imported)</td>
|
|
19
18
|
<%- else -%>
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
<td class="left"><label for="adapter" class="strong">Type</label></td>
|
|
24
24
|
<td>
|
|
25
25
|
<select id="adapter" name="resource[connection_attributes][adapter]">
|
|
26
|
-
<%- Coupler::Models::Connection::ADAPTERS.each do |
|
|
27
|
-
<option value="<%=
|
|
26
|
+
<%- Coupler::Models::Connection::ADAPTERS.each do |options| -%>
|
|
27
|
+
<option value="<%= options[:name] %>"<%= ' selected="selected"' if @resource.connection.adapter == options[:name] %>><%= options[:label] %></option>
|
|
28
28
|
<%- end -%>
|
|
29
29
|
</select>
|
|
30
30
|
</td>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<%- @fields.each do |field| -%>
|
|
14
14
|
<tr>
|
|
15
15
|
<td<%= ' class="altered-field"' if field.is_generated %>><%= field.name %></td>
|
|
16
|
-
<td<%= ' class="altered-field"' if field.
|
|
16
|
+
<td<%= ' class="altered-field"' if field.local_type %>><%= field_type(@resource, field) %></td>
|
|
17
17
|
</tr>
|
|
18
18
|
<%- end -%>
|
|
19
19
|
</tbody>
|
|
@@ -66,7 +66,10 @@
|
|
|
66
66
|
<script type="text/javascript">
|
|
67
67
|
var intervalId;
|
|
68
68
|
$(function() {
|
|
69
|
-
$('#fields').dataTable({
|
|
69
|
+
$('#fields').dataTable({
|
|
70
|
+
bJQueryUI: true, aaSorting: [],
|
|
71
|
+
bAutoWidth: false, aoColumns: [{sWidth: "50%"}, {sWidth: "50%"}]
|
|
72
|
+
});
|
|
70
73
|
<%- if @job && @job.status == 'running' -%>
|
|
71
74
|
$('#progressbar').progressbar({value: <%= @job.percent_completed %>});
|
|
72
75
|
setInterval(function() {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<tr class="alt">
|
|
36
36
|
<td class="left"><label for="description">Description</label></td>
|
|
37
37
|
<td>
|
|
38
|
-
<input id="
|
|
38
|
+
<input id="description" name="scenario[description]" type="text" value="<%= @scenario.description %>" />
|
|
39
39
|
</td>
|
|
40
40
|
</tr>
|
|
41
41
|
</table>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
</tr>
|
|
28
28
|
<tr id="field-info" class="hidden">
|
|
29
29
|
<td class="col1">Current Type:</td>
|
|
30
|
-
<td><span id='field-type'></span
|
|
30
|
+
<td><span id='field-type'></span><%= " (<span id='field-db-type'></span>)" if !@resource.import_id %></td>
|
|
31
31
|
</tr>
|
|
32
32
|
</table>
|
|
33
33
|
</div>
|
metadata
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: coupler
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease:
|
|
5
|
-
version: 0.0.
|
|
5
|
+
version: 0.0.6
|
|
6
6
|
platform: java
|
|
7
7
|
authors:
|
|
8
8
|
- Jeremy Stephens
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date: 2011-
|
|
13
|
+
date: 2011-07-12 00:00:00 -05:00
|
|
14
14
|
default_executable: coupler
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
@@ -69,7 +69,7 @@ dependencies:
|
|
|
69
69
|
prerelease: false
|
|
70
70
|
type: :runtime
|
|
71
71
|
- !ruby/object:Gem::Dependency
|
|
72
|
-
name: carrierwave
|
|
72
|
+
name: carrierwave-sequel
|
|
73
73
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
|
74
74
|
none: false
|
|
75
75
|
requirements:
|
|
@@ -102,7 +102,7 @@ dependencies:
|
|
|
102
102
|
prerelease: false
|
|
103
103
|
type: :runtime
|
|
104
104
|
- !ruby/object:Gem::Dependency
|
|
105
|
-
name:
|
|
105
|
+
name: jdbc-h2
|
|
106
106
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
|
107
107
|
none: false
|
|
108
108
|
requirements:
|
|
@@ -111,9 +111,9 @@ dependencies:
|
|
|
111
111
|
version: "0"
|
|
112
112
|
requirement: *id009
|
|
113
113
|
prerelease: false
|
|
114
|
-
type: :
|
|
114
|
+
type: :runtime
|
|
115
115
|
- !ruby/object:Gem::Dependency
|
|
116
|
-
name:
|
|
116
|
+
name: rake
|
|
117
117
|
version_requirements: &id010 !ruby/object:Gem::Requirement
|
|
118
118
|
none: false
|
|
119
119
|
requirements:
|
|
@@ -124,7 +124,7 @@ dependencies:
|
|
|
124
124
|
prerelease: false
|
|
125
125
|
type: :development
|
|
126
126
|
- !ruby/object:Gem::Dependency
|
|
127
|
-
name:
|
|
127
|
+
name: jeweler
|
|
128
128
|
version_requirements: &id011 !ruby/object:Gem::Requirement
|
|
129
129
|
none: false
|
|
130
130
|
requirements:
|
|
@@ -135,29 +135,29 @@ dependencies:
|
|
|
135
135
|
prerelease: false
|
|
136
136
|
type: :development
|
|
137
137
|
- !ruby/object:Gem::Dependency
|
|
138
|
-
name:
|
|
138
|
+
name: forgery
|
|
139
139
|
version_requirements: &id012 !ruby/object:Gem::Requirement
|
|
140
140
|
none: false
|
|
141
141
|
requirements:
|
|
142
|
-
- - "
|
|
142
|
+
- - ">="
|
|
143
143
|
- !ruby/object:Gem::Version
|
|
144
|
-
version:
|
|
144
|
+
version: "0"
|
|
145
145
|
requirement: *id012
|
|
146
146
|
prerelease: false
|
|
147
147
|
type: :development
|
|
148
148
|
- !ruby/object:Gem::Dependency
|
|
149
|
-
name:
|
|
149
|
+
name: test-unit
|
|
150
150
|
version_requirements: &id013 !ruby/object:Gem::Requirement
|
|
151
151
|
none: false
|
|
152
152
|
requirements:
|
|
153
|
-
- - "
|
|
153
|
+
- - "="
|
|
154
154
|
- !ruby/object:Gem::Version
|
|
155
|
-
version:
|
|
155
|
+
version: 2.2.0
|
|
156
156
|
requirement: *id013
|
|
157
157
|
prerelease: false
|
|
158
158
|
type: :development
|
|
159
159
|
- !ruby/object:Gem::Dependency
|
|
160
|
-
name:
|
|
160
|
+
name: mocha
|
|
161
161
|
version_requirements: &id014 !ruby/object:Gem::Requirement
|
|
162
162
|
none: false
|
|
163
163
|
requirements:
|
|
@@ -190,7 +190,7 @@ dependencies:
|
|
|
190
190
|
prerelease: false
|
|
191
191
|
type: :development
|
|
192
192
|
- !ruby/object:Gem::Dependency
|
|
193
|
-
name:
|
|
193
|
+
name: git
|
|
194
194
|
version_requirements: &id017 !ruby/object:Gem::Requirement
|
|
195
195
|
none: false
|
|
196
196
|
requirements:
|
|
@@ -201,7 +201,7 @@ dependencies:
|
|
|
201
201
|
prerelease: false
|
|
202
202
|
type: :development
|
|
203
203
|
- !ruby/object:Gem::Dependency
|
|
204
|
-
name:
|
|
204
|
+
name: thor
|
|
205
205
|
version_requirements: &id018 !ruby/object:Gem::Requirement
|
|
206
206
|
none: false
|
|
207
207
|
requirements:
|
|
@@ -212,7 +212,7 @@ dependencies:
|
|
|
212
212
|
prerelease: false
|
|
213
213
|
type: :development
|
|
214
214
|
- !ruby/object:Gem::Dependency
|
|
215
|
-
name:
|
|
215
|
+
name: table_maker
|
|
216
216
|
version_requirements: &id019 !ruby/object:Gem::Requirement
|
|
217
217
|
none: false
|
|
218
218
|
requirements:
|
|
@@ -223,7 +223,7 @@ dependencies:
|
|
|
223
223
|
prerelease: false
|
|
224
224
|
type: :development
|
|
225
225
|
- !ruby/object:Gem::Dependency
|
|
226
|
-
name:
|
|
226
|
+
name: capybara
|
|
227
227
|
version_requirements: &id020 !ruby/object:Gem::Requirement
|
|
228
228
|
none: false
|
|
229
229
|
requirements:
|
|
@@ -234,7 +234,7 @@ dependencies:
|
|
|
234
234
|
prerelease: false
|
|
235
235
|
type: :development
|
|
236
236
|
- !ruby/object:Gem::Dependency
|
|
237
|
-
name:
|
|
237
|
+
name: jruby-openssl
|
|
238
238
|
version_requirements: &id021 !ruby/object:Gem::Requirement
|
|
239
239
|
none: false
|
|
240
240
|
requirements:
|
|
@@ -244,17 +244,6 @@ dependencies:
|
|
|
244
244
|
requirement: *id021
|
|
245
245
|
prerelease: false
|
|
246
246
|
type: :development
|
|
247
|
-
- !ruby/object:Gem::Dependency
|
|
248
|
-
name: ruby-debug
|
|
249
|
-
version_requirements: &id022 !ruby/object:Gem::Requirement
|
|
250
|
-
none: false
|
|
251
|
-
requirements:
|
|
252
|
-
- - ">="
|
|
253
|
-
- !ruby/object:Gem::Version
|
|
254
|
-
version: "0"
|
|
255
|
-
requirement: *id022
|
|
256
|
-
prerelease: false
|
|
257
|
-
type: :development
|
|
258
247
|
description: Coupler is a (JRuby) desktop application designed to link datasets together
|
|
259
248
|
email: jeremy.f.stephens@vanderbilt.edu
|
|
260
249
|
executables:
|
|
@@ -323,7 +312,6 @@ files:
|
|
|
323
312
|
- gfx/icon.svg
|
|
324
313
|
- lib/coupler.rb
|
|
325
314
|
- lib/coupler/base.rb
|
|
326
|
-
- lib/coupler/config.rb
|
|
327
315
|
- lib/coupler/data_uploader.rb
|
|
328
316
|
- lib/coupler/database.rb
|
|
329
317
|
- lib/coupler/extensions.rb
|
|
@@ -375,23 +363,22 @@ files:
|
|
|
375
363
|
- tasks/vendor.rake
|
|
376
364
|
- test/README.txt
|
|
377
365
|
- test/config.yml
|
|
378
|
-
- test/coupler/models/test_import.rb
|
|
379
|
-
- test/factories.rb
|
|
380
366
|
- test/fixtures/duplicate-keys.csv
|
|
381
367
|
- test/fixtures/no-headers.csv
|
|
382
368
|
- test/fixtures/people.csv
|
|
383
369
|
- test/fixtures/varying-row-size.csv
|
|
370
|
+
- test/functional/test_base.rb
|
|
371
|
+
- test/functional/test_connections.rb
|
|
372
|
+
- test/functional/test_imports.rb
|
|
373
|
+
- test/functional/test_jobs.rb
|
|
374
|
+
- test/functional/test_matchers.rb
|
|
375
|
+
- test/functional/test_projects.rb
|
|
376
|
+
- test/functional/test_resources.rb
|
|
377
|
+
- test/functional/test_results.rb
|
|
378
|
+
- test/functional/test_scenarios.rb
|
|
379
|
+
- test/functional/test_transformations.rb
|
|
380
|
+
- test/functional/test_transformers.rb
|
|
384
381
|
- test/helper.rb
|
|
385
|
-
- test/integration/extensions/test_connections.rb
|
|
386
|
-
- test/integration/extensions/test_imports.rb
|
|
387
|
-
- test/integration/extensions/test_jobs.rb
|
|
388
|
-
- test/integration/extensions/test_matchers.rb
|
|
389
|
-
- test/integration/extensions/test_projects.rb
|
|
390
|
-
- test/integration/extensions/test_resources.rb
|
|
391
|
-
- test/integration/extensions/test_results.rb
|
|
392
|
-
- test/integration/extensions/test_scenarios.rb
|
|
393
|
-
- test/integration/extensions/test_transformations.rb
|
|
394
|
-
- test/integration/extensions/test_transformers.rb
|
|
395
382
|
- test/integration/test_field.rb
|
|
396
383
|
- test/integration/test_import.rb
|
|
397
384
|
- test/integration/test_running_scenarios.rb
|
|
@@ -421,7 +408,6 @@ files:
|
|
|
421
408
|
- test/unit/test_runner.rb
|
|
422
409
|
- test/unit/test_scheduler.rb
|
|
423
410
|
- uploads/.gitignore
|
|
424
|
-
- vendor/h2-1.3.154.jar
|
|
425
411
|
- webroot/public/css/960.css
|
|
426
412
|
- webroot/public/css/dataTables.css
|
|
427
413
|
- webroot/public/css/jquery-ui.css
|
data/lib/coupler/config.rb
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
module Coupler
|
|
2
|
-
module Config
|
|
3
|
-
DEFAULT_CONFIG = {
|
|
4
|
-
:database => {
|
|
5
|
-
:port => 12345,
|
|
6
|
-
:user => 'coupler',
|
|
7
|
-
:password => 'cupla',
|
|
8
|
-
:max_connections => '100',
|
|
9
|
-
:max_allowed_packet => '1M',
|
|
10
|
-
:connection_string => 'jdbc:mysql://localhost:%d/%s?user=%s&password=%s',
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
VENDOR_LIBS = {
|
|
15
|
-
'jruby' => {
|
|
16
|
-
:type => 'java',
|
|
17
|
-
:filetype => 'jar',
|
|
18
|
-
:version => '1.6.0',
|
|
19
|
-
:url => "http://jruby.org.s3.amazonaws.com/downloads/%1$s/jruby-complete-%1$s.jar",
|
|
20
|
-
:uncompress => false,
|
|
21
|
-
:filename => "jruby-complete-%s.jar",
|
|
22
|
-
:symlink => "jruby-complete.jar"
|
|
23
|
-
},
|
|
24
|
-
'mysql-connector-mxj' => {
|
|
25
|
-
:type => 'java',
|
|
26
|
-
:filetype => "tarball",
|
|
27
|
-
:version => '5-0-11',
|
|
28
|
-
:dir => "mysql-connector-mxj-gpl-%s",
|
|
29
|
-
:url => "http://mysql.mirrors.hoobly.com/Downloads/Connector-MXJ/mysql-connector-mxj-gpl-%s.tar.gz",
|
|
30
|
-
:libs => [
|
|
31
|
-
"mysql-connector-mxj-gpl-%s.jar",
|
|
32
|
-
"mysql-connector-mxj-gpl-%s-db-files.jar"
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
'mysql-connector-java' => {
|
|
36
|
-
:type => 'java',
|
|
37
|
-
:filetype => "tarball",
|
|
38
|
-
:version => '5.1.13',
|
|
39
|
-
:dir => "mysql-connector-java-%s",
|
|
40
|
-
:url => "http://mysql.mirrors.hoobly.com/Downloads/Connector-J/mysql-connector-java-%s.tar.gz",
|
|
41
|
-
:libs => [
|
|
42
|
-
"mysql-connector-java-%s-bin.jar",
|
|
43
|
-
]
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
def self.each_vendor_lib
|
|
48
|
-
VENDOR_LIBS.each_key do |name|
|
|
49
|
-
yield(name, vendor_lib_info(name))
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def self.vendor_lib_info(name)
|
|
54
|
-
info = VENDOR_LIBS[name]
|
|
55
|
-
info = info.merge({:url => info[:url] % info[:version]})
|
|
56
|
-
info[:dir] %= info[:version] if info[:dir]
|
|
57
|
-
info[:filename] %= info[:version] if info[:filename]
|
|
58
|
-
info
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def self.vendor_lib_paths(name)
|
|
62
|
-
info = VENDOR_LIBS[name]
|
|
63
|
-
version = info[:version]
|
|
64
|
-
path = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'vendor', info[:type], info[:dir] % version))
|
|
65
|
-
info[:libs].collect { |lib| File.join(path, lib % version) }
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def self.require_vendor_libs(name)
|
|
69
|
-
vendor_lib_paths(name).each { |path| require(path) }
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
@@config = nil
|
|
73
|
-
def self.get(*keys)
|
|
74
|
-
if @@config.nil?
|
|
75
|
-
@@config = DEFAULT_CONFIG
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
if keys == [:data_path]
|
|
79
|
-
if !@@config.has_key?(keys[0])
|
|
80
|
-
# FIXME: this is a little naive
|
|
81
|
-
dir = File.join(File.dirname(__FILE__), "..", "..")
|
|
82
|
-
if ENV['APPDATA']
|
|
83
|
-
# Windows
|
|
84
|
-
dir = File.join(ENV['APPDATA'], "coupler")
|
|
85
|
-
elsif !File.writable?(dir)
|
|
86
|
-
if ENV['HOME']
|
|
87
|
-
dir = File.join(ENV['HOME'], ".coupler")
|
|
88
|
-
else
|
|
89
|
-
raise "don't know where to put data!"
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
@@config[:data_path] = File.expand_path(dir)
|
|
93
|
-
end
|
|
94
|
-
Dir.mkdir(@@config[:data_path]) if !File.exist?(@@config[:data_path])
|
|
95
|
-
elsif keys == [:upload_path]
|
|
96
|
-
if !@@config.has_key?(keys[0])
|
|
97
|
-
@@config[:upload_path] = path = File.join(get(:data_path), "uploads")
|
|
98
|
-
end
|
|
99
|
-
Dir.mkdir(@@config[:upload_path]) if !File.exist?(@@config[:upload_path])
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
keys.inject(@@config) { |hash, key| hash[key] }
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def self.set(*args)
|
|
106
|
-
if @@config.nil?
|
|
107
|
-
@@config = DEFAULT_CONFIG
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
value = args.pop
|
|
111
|
-
keys = args
|
|
112
|
-
|
|
113
|
-
hash = keys[0..-2].inject(@@config) { |h, k| h[k] }
|
|
114
|
-
hash[keys[-1]] = value
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
def self.connection_string(database, options = {})
|
|
118
|
-
retval = self.get(:database, :connection_string) % [self.get(:database, :port), database, self.get(:database, :user), self.get(:database, :password)]
|
|
119
|
-
retval += "&createDatabaseIfNotExist=true" if options[:create_database]
|
|
120
|
-
case options[:zero_date_time_behavior]
|
|
121
|
-
when :convert_to_null
|
|
122
|
-
retval += "&zeroDateTimeBehavior=convertToNull"
|
|
123
|
-
end
|
|
124
|
-
retval += "&autoReconnect=true" if options[:auto_reconnect]
|
|
125
|
-
retval
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|