coupler 0.0.7-java → 0.0.8-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.
Files changed (46) hide show
  1. data/VERSION +1 -1
  2. data/coupler.gemspec +11 -2
  3. data/db/migrate/024_add_error_msg_to_jobs.rb +5 -0
  4. data/db/migrate/025_add_notifications.rb +16 -0
  5. data/db/migrate/026_add_status_to_resources.rb +7 -0
  6. data/db/migrate/027_add_notification_id_to_jobs.rb +8 -0
  7. data/lib/coupler.rb +6 -2
  8. data/lib/coupler/base.rb +1 -0
  9. data/lib/coupler/extensions.rb +3 -1
  10. data/lib/coupler/extensions/imports.rb +11 -14
  11. data/lib/coupler/extensions/notifications.rb +26 -0
  12. data/lib/coupler/models.rb +1 -0
  13. data/lib/coupler/models/comparison.rb +0 -1
  14. data/lib/coupler/models/connection.rb +0 -1
  15. data/lib/coupler/models/field.rb +6 -6
  16. data/lib/coupler/models/import.rb +9 -3
  17. data/lib/coupler/models/job.rb +64 -20
  18. data/lib/coupler/models/matcher.rb +0 -1
  19. data/lib/coupler/models/notification.rb +7 -0
  20. data/lib/coupler/models/project.rb +0 -1
  21. data/lib/coupler/models/resource.rb +52 -31
  22. data/lib/coupler/models/result.rb +0 -1
  23. data/lib/coupler/models/scenario.rb +0 -1
  24. data/lib/coupler/models/transformation.rb +2 -3
  25. data/lib/coupler/models/transformer.rb +0 -1
  26. data/lib/coupler/scheduler.rb +8 -0
  27. data/tasks/db.rake +2 -2
  28. data/test/functional/test_imports.rb +21 -13
  29. data/test/functional/test_notifications.rb +38 -0
  30. data/test/integration/test_import.rb +25 -1
  31. data/test/unit/models/test_field.rb +2 -13
  32. data/test/unit/models/test_import.rb +4 -0
  33. data/test/unit/models/test_job.rb +59 -6
  34. data/test/unit/models/test_notification.rb +17 -0
  35. data/test/unit/models/test_resource.rb +114 -29
  36. data/test/unit/models/test_transformation.rb +4 -4
  37. data/test/unit/test_base.rb +1 -1
  38. data/test/unit/test_scheduler.rb +11 -0
  39. data/webroot/public/css/style.css +23 -0
  40. data/webroot/public/js/application.js +31 -10
  41. data/webroot/views/jobs/list.erb +2 -0
  42. data/webroot/views/layout.erb +3 -1
  43. data/webroot/views/notifications/index.erb +16 -0
  44. data/webroot/views/resources/list.erb +12 -7
  45. data/webroot/views/sidebar.erb +2 -0
  46. metadata +11 -2
@@ -41,7 +41,7 @@ module CouplerUnitTests
41
41
 
42
42
  def setup
43
43
  super
44
- @resource = stub('resource', :pk => 3, :id => 3, :associations => {}, :refresh_fields! => nil)
44
+ @resource = stub('resource', :pk => 3, :id => 3, :associations => {}, :transformations_updated! => nil)
45
45
  @transformer = stub('transformer', {
46
46
  :pk => 1, :id => 1, :associations => {},
47
47
  :allowed_types => %w{string}, :name => "foobar"
@@ -137,7 +137,7 @@ module CouplerUnitTests
137
137
 
138
138
  test "updates resource fields on save" do
139
139
  transformation = new_transformation
140
- @resource.expects(:refresh_fields!)
140
+ @resource.expects(:transformations_updated!)
141
141
  transformation.save!
142
142
  end
143
143
 
@@ -178,8 +178,8 @@ module CouplerUnitTests
178
178
  end
179
179
 
180
180
  test "sets position by resource" do
181
- resource_1 = stub('resource', :pk => 1, :id => 1, :associations => {}, :refresh_fields! => nil)
182
- resource_2 = stub('resource', :pk => 2, :id => 2, :associations => {}, :refresh_fields! => nil)
181
+ resource_1 = stub('resource', :pk => 1, :id => 1, :associations => {}, :transformations_updated! => nil)
182
+ resource_2 = stub('resource', :pk => 2, :id => 2, :associations => {}, :transformations_updated! => nil)
183
183
 
184
184
  xformation_1 = new_transformation(:resource => resource_1).save!
185
185
  xformation_2 = new_transformation(:resource => resource_1).save!
@@ -2,7 +2,7 @@ require 'helper'
2
2
 
3
3
  module CouplerUnitTests
4
4
  class TestBase < Coupler::Test::UnitTest
5
- def test_subclasses_sinatra_base
5
+ test "subclasses sinatra base" do
6
6
  assert_equal Sinatra::Base, Coupler::Base.superclass
7
7
  end
8
8
  end
@@ -24,6 +24,17 @@ module CouplerUnitTests
24
24
  Scheduler.instance.schedule_run_scenario_job(scenario)
25
25
  end
26
26
 
27
+ test "schedule import job" do
28
+ import = mock('import')
29
+ Models::Job.expects(:create).with({
30
+ :name => "import",
31
+ :import => import,
32
+ :status => "scheduled"
33
+ })
34
+
35
+ Scheduler.instance.schedule_import_job(import)
36
+ end
37
+
27
38
  test "run_jobs executes first scheduled job" do
28
39
  running_dataset = mock('dataset')
29
40
  scheduled_dataset = mock('dataset')
@@ -24,6 +24,7 @@ body {
24
24
  #sidebar .accordion h3 {
25
25
  margin-top: 3px;
26
26
  font-family: verdana, arial, helvetica, sans-serif;
27
+ position: relative;
27
28
  }
28
29
  #sidebar .accordion h3.ui-state-active a {
29
30
  text-shadow: 1px 1px 1px black;
@@ -504,3 +505,25 @@ table.summary tr {
504
505
  .result-group-left .record-navigation {
505
506
  border-right: 2px solid #333;
506
507
  }
508
+
509
+ #notifications {
510
+ position: absolute;
511
+ top: 0;
512
+ left: 0;
513
+ width: 100%;
514
+ }
515
+ #notifications ul {
516
+ background-color: lightyellow;
517
+ -moz-border-radius-bottomright: 10px;
518
+ -webkit-border-bottom-right-radius: 10px;
519
+ border-bottom-right-radius: 10px;
520
+ -moz-border-radius-bottomleft: 10px;
521
+ -webkit-border-bottom-left-radius: 10px;
522
+ border-bottom-left-radius: 10px;
523
+ list-style-type: none;
524
+ text-align: center;
525
+ }
526
+ #notifications ul li {
527
+ margin: 0;
528
+ display: inline;
529
+ }
@@ -1,12 +1,32 @@
1
- //function updateJobCount() {
2
- //$.get("/jobs/count", function(data) {
3
- //if (data == "0") {
4
- //$('#job-count').html("")
5
- //} else {
6
- //$('#job-count').html("("+data+")")
7
- //}
8
- //});
9
- //}
1
+ /*
2
+ function updateJobCount() {
3
+ $.get("/jobs/count", function(data) {
4
+ if (data == "0") {
5
+ $('#job-count').html("")
6
+ } else {
7
+ $('#job-count').html("("+data+")")
8
+ }
9
+ });
10
+ }
11
+ */
12
+ function updateNotifications() {
13
+ $.get("/notifications/unseen.json", function(data, textStatus, jqXHR) {
14
+ var n = $('#notifications');
15
+ if (data.length == 0) {
16
+ n.find('ul').html('');
17
+ n.hide();
18
+ } else {
19
+ var ids = [];
20
+ $.each(data, function() {
21
+ var id = 'notification-'+this.id;
22
+ ids.push(id);
23
+ n.find('ul:not(:has(#'+id+'))').append('<li id="'+id+'"><a href="'+this.url+'">'+this.message+'</a></li>');
24
+ });
25
+ n.find('ul li:not(#'+ids.join(',#')+')').remove();
26
+ $('#notifications').show();
27
+ }
28
+ }, 'json');
29
+ }
10
30
  $(function() {
11
31
  $('.timeago').timeago();
12
32
  var accordion = $('#sidebar .accordion').accordion({
@@ -36,5 +56,6 @@ $(function() {
36
56
  window.location.href = href;
37
57
  });
38
58
  });
39
- //setInterval(updateJobCount, 30000);
59
+ setInterval(updateNotifications, 10000);
60
+ updateNotifications();
40
61
  });
@@ -17,6 +17,8 @@
17
17
  <td><a href="/projects/<%= job.resource.project.id %>/resources/<%= job.resource.id %>"><%= job.resource.name %></a></td>
18
18
  <%- elsif job.scenario -%>
19
19
  <td><a href="/projects/<%= job.scenario.project.id %>/scenarios/<%= job.scenario.id %>"><%= job.scenario.name %></a></td>
20
+ <%- elsif job.import -%>
21
+ <td><%= job.import.name %> (Project: <a href="/projects/<%= job.import.project_id %>"><%= job.import.project.name %></a>)</td>
20
22
  <%- else -%>
21
23
  <td>N/A</td>
22
24
  <%- end -%>
@@ -3,12 +3,14 @@
3
3
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
4
  <head>
5
5
  <title>Coupler</title>
6
- <meta http-equiv="content-type" content="text/html;charset=utf-8" />
6
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
7
7
  <meta http-equiv="Content-Style-Type" content="text/css" />
8
8
  <%= stylesheet_links %>
9
9
  <%= javascript_includes %>
10
10
  </head>
11
11
  <body>
12
+
13
+ <div id="notifications"><ul></ul></div>
12
14
  <div id="main" class="container_16">
13
15
 
14
16
  <div id="sidebar" class="grid_3">
@@ -0,0 +1,16 @@
1
+ <%- @breadcrumbs = ["Notifications"] -%>
2
+ <%- if @notifications.empty? -%>
3
+ <p>There are currently no notifications.</p>
4
+ <%- else -%>
5
+ <ul class="notifications">
6
+ <%- @notifications.each do |notification| -%>
7
+ <li class="notification">
8
+ <% if notification.url %>
9
+ <a href="<%= notification.url %>"><%= notification.message %></a>
10
+ <% else %>
11
+ <%= notification.message %>
12
+ <% end %>
13
+ </li>
14
+ <%- end -%>
15
+ </ul>
16
+ <%- end -%>
@@ -12,13 +12,18 @@
12
12
  <tbody>
13
13
  <% @resources.each_with_index do |resource, i| %>
14
14
  <tr<%= ' class="alt"' if i % 2 == 1 %>>
15
- <td><a href="/projects/<%= resource.project_id %>/resources/<%= resource.id %>"><%= resource.name %></a></td>
16
- <%- if resource.import_id -%>
17
- <td colspan="3" class='centered'>(imported)</td>
18
- <%- else -%>
19
- <% unless @hide_connection %><td><%= resource.connection.name %></td><% end %>
20
- <td><%= resource.table_name %></td>
21
- <%- end -%>
15
+ <% if resource.status == 'pending' %>
16
+ <td><%= resource.name %></td>
17
+ <td colspan="2" class='centered'>(pending)</td>
18
+ <% else %>
19
+ <td><a href="/projects/<%= resource.project_id %>/resources/<%= resource.id %>"><%= resource.name %></a></td>
20
+ <%- if resource.import_id -%>
21
+ <td colspan="2" class='centered'>(imported)</td>
22
+ <%- else -%>
23
+ <% unless @hide_connection %><td><%= resource.connection.name %></td><% end %>
24
+ <td><%= resource.table_name %></td>
25
+ <%- end -%>
26
+ <% end %>
22
27
  </tr>
23
28
  <% end %>
24
29
  </tbody>
@@ -97,6 +97,8 @@
97
97
  <a href="/jobs">Transform: <%= job.resource.name %></a>
98
98
  <%- elsif job.scenario -%>
99
99
  <a href="/jobs">Run: <%= job.scenario.name %></a>
100
+ <%- elsif job.import -%>
101
+ <a href="/jobs">Import: <%= job.import.name %></a>
100
102
  <%- end -%>
101
103
  </li>
102
104
  <%- end -%>
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: coupler
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.7
5
+ version: 0.0.8
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-07-19 00:00:00 -05:00
13
+ date: 2011-08-16 00:00:00 -05:00
14
14
  default_executable: coupler
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -293,6 +293,10 @@ files:
293
293
  - db/migrate/021_add_fields_to_connections.rb
294
294
  - db/migrate/022_remove_database_name_from_resources.rb
295
295
  - db/migrate/023_add_import_jobs.rb
296
+ - db/migrate/024_add_error_msg_to_jobs.rb
297
+ - db/migrate/025_add_notifications.rb
298
+ - db/migrate/026_add_status_to_resources.rb
299
+ - db/migrate/027_add_notification_id_to_jobs.rb
296
300
  - features/connections.feature
297
301
  - features/matchers.feature
298
302
  - features/projects.feature
@@ -320,6 +324,7 @@ files:
320
324
  - lib/coupler/extensions/imports.rb
321
325
  - lib/coupler/extensions/jobs.rb
322
326
  - lib/coupler/extensions/matchers.rb
327
+ - lib/coupler/extensions/notifications.rb
323
328
  - lib/coupler/extensions/projects.rb
324
329
  - lib/coupler/extensions/resources.rb
325
330
  - lib/coupler/extensions/results.rb
@@ -338,6 +343,7 @@ files:
338
343
  - lib/coupler/models/job.rb
339
344
  - lib/coupler/models/jobify.rb
340
345
  - lib/coupler/models/matcher.rb
346
+ - lib/coupler/models/notification.rb
341
347
  - lib/coupler/models/project.rb
342
348
  - lib/coupler/models/resource.rb
343
349
  - lib/coupler/models/result.rb
@@ -372,6 +378,7 @@ files:
372
378
  - test/functional/test_imports.rb
373
379
  - test/functional/test_jobs.rb
374
380
  - test/functional/test_matchers.rb
381
+ - test/functional/test_notifications.rb
375
382
  - test/functional/test_projects.rb
376
383
  - test/functional/test_resources.rb
377
384
  - test/functional/test_results.rb
@@ -392,6 +399,7 @@ files:
392
399
  - test/unit/models/test_import.rb
393
400
  - test/unit/models/test_job.rb
394
401
  - test/unit/models/test_matcher.rb
402
+ - test/unit/models/test_notification.rb
395
403
  - test/unit/models/test_project.rb
396
404
  - test/unit/models/test_resource.rb
397
405
  - test/unit/models/test_result.rb
@@ -476,6 +484,7 @@ files:
476
484
  - webroot/views/layout.erb
477
485
  - webroot/views/matchers/form.erb
478
486
  - webroot/views/matchers/list.erb
487
+ - webroot/views/notifications/index.erb
479
488
  - webroot/views/projects/form.erb
480
489
  - webroot/views/projects/index.erb
481
490
  - webroot/views/projects/show.erb