gfdnavi 1.3.0.0

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 (446) hide show
  1. data/ChangeLog +10949 -0
  2. data/LICENCE.txt +57 -0
  3. data/Makefile +18 -0
  4. data/TODO +132 -0
  5. data/app/controllers/analysis_controller.rb +700 -0
  6. data/app/controllers/application.rb +41 -0
  7. data/app/controllers/draw_method_controller.rb +172 -0
  8. data/app/controllers/explorer_controller.rb +197 -0
  9. data/app/controllers/finder_controller.rb +331 -0
  10. data/app/controllers/function_controller.rb +204 -0
  11. data/app/controllers/group_controller.rb +115 -0
  12. data/app/controllers/keyword_attributes_controller.rb +52 -0
  13. data/app/controllers/knowledge_controller.rb +928 -0
  14. data/app/controllers/nodes_controller.rb +515 -0
  15. data/app/controllers/search_controller.rb +341 -0
  16. data/app/controllers/user_controller.rb +337 -0
  17. data/app/helpers/analysis_helper.rb +2 -0
  18. data/app/helpers/application_helper.rb +105 -0
  19. data/app/helpers/description_helper.rb +2 -0
  20. data/app/helpers/function_helper.rb +2 -0
  21. data/app/helpers/group_helper.rb +2 -0
  22. data/app/helpers/search_helper.rb +3 -0
  23. data/app/helpers/user_helper.rb +2 -0
  24. data/app/helpers/work_flow_helper.rb +92 -0
  25. data/app/models/actual_file.rb +3 -0
  26. data/app/models/analysis.rb +715 -0
  27. data/app/models/analysis_history.rb +42 -0
  28. data/app/models/cross_array.rb +22 -0
  29. data/app/models/cross_result.rb +254 -0
  30. data/app/models/derived_spatial_attribute.rb +3 -0
  31. data/app/models/diagram_cache.rb +16 -0
  32. data/app/models/diagram_cache_datum.rb +4 -0
  33. data/app/models/diagram_cache_session.rb +8 -0
  34. data/app/models/directory.rb +21 -0
  35. data/app/models/draw_method.rb +48 -0
  36. data/app/models/draw_method_attribute.rb +8 -0
  37. data/app/models/draw_parameter.rb +12 -0
  38. data/app/models/explorer_query.rb +354 -0
  39. data/app/models/explorer_result.rb +312 -0
  40. data/app/models/function.rb +75 -0
  41. data/app/models/function_argument.rb +6 -0
  42. data/app/models/function_output.rb +4 -0
  43. data/app/models/group.rb +153 -0
  44. data/app/models/image.rb +20 -0
  45. data/app/models/keyword_attribute.rb +179 -0
  46. data/app/models/knowledge.rb +94 -0
  47. data/app/models/knowledge_backup.rb +32 -0
  48. data/app/models/knowledge_figure.rb +16 -0
  49. data/app/models/knowledge_figure_backup.rb +16 -0
  50. data/app/models/knowledge_parser.rb +392 -0
  51. data/app/models/node.rb +605 -0
  52. data/app/models/node_entity_abstract.rb +112 -0
  53. data/app/models/node_lineage.rb +6 -0
  54. data/app/models/node_relation.rb +4 -0
  55. data/app/models/path_node.rb +60 -0
  56. data/app/models/query.rb +193 -0
  57. data/app/models/query_history.rb +12 -0
  58. data/app/models/results.rb +48 -0
  59. data/app/models/sign_up_user.rb +25 -0
  60. data/app/models/spatial_and_time_attribute.rb +11 -0
  61. data/app/models/user.rb +115 -0
  62. data/app/models/user_mailer.rb +48 -0
  63. data/app/models/value_type.rb +3 -0
  64. data/app/models/variable.rb +70 -0
  65. data/app/models/virtual_node.rb +457 -0
  66. data/app/views/analysis/__help_analysis_tab.en.html +57 -0
  67. data/app/views/analysis/__help_draw_share.en.html +12 -0
  68. data/app/views/analysis/__help_draw_tab.en.html +6 -0
  69. data/app/views/analysis/_analysis_function_settings.rhtml +61 -0
  70. data/app/views/analysis/_analysis_settings.rhtml +28 -0
  71. data/app/views/analysis/_diagram.rhtml +70 -0
  72. data/app/views/analysis/_dimension_option.rhtml +59 -0
  73. data/app/views/analysis/_draw_general_settings.rhtml +217 -0
  74. data/app/views/analysis/_draw_settings.rhtml +73 -0
  75. data/app/views/analysis/_history.rhtml +19 -0
  76. data/app/views/analysis/_popular_diagrams.rhtml +42 -0
  77. data/app/views/analysis/_save_form.rhtml +44 -0
  78. data/app/views/analysis/_variables.rhtml +66 -0
  79. data/app/views/analysis/_variables_order.rhtml +56 -0
  80. data/app/views/analysis/index.rhtml +195 -0
  81. data/app/views/analysis/preview.rhtml +3 -0
  82. data/app/views/analysis/save.rhtml +73 -0
  83. data/app/views/analysis/show_diagram.rhtml +42 -0
  84. data/app/views/cross/_display_map.rhtml +201 -0
  85. data/app/views/cross/_result.rhtml +205 -0
  86. data/app/views/cross/_show_result_tree.rhtml +40 -0
  87. data/app/views/cross/_show_results.rhtml +80 -0
  88. data/app/views/cross/_style.rhtml +21 -0
  89. data/app/views/cross/index.rhtml +271 -0
  90. data/app/views/draw_method/_edit_form.rhtml +110 -0
  91. data/app/views/draw_method/create.rhtml +8 -0
  92. data/app/views/draw_method/details.rhtml +113 -0
  93. data/app/views/draw_method/edit.rhtml +8 -0
  94. data/app/views/draw_method/list.rhtml +80 -0
  95. data/app/views/explorer/_display_map.rhtml +199 -0
  96. data/app/views/explorer/_show_result_tree.rhtml +40 -0
  97. data/app/views/explorer/_show_results.rhtml +101 -0
  98. data/app/views/explorer/_style.rhtml +21 -0
  99. data/app/views/explorer/index.rhtml +214 -0
  100. data/app/views/finder/_children.html.erb +84 -0
  101. data/app/views/finder/_children_details.html.erb +74 -0
  102. data/app/views/finder/_children_details_tr.html.erb +196 -0
  103. data/app/views/finder/create_tree.html.erb +15 -0
  104. data/app/views/finder/flex.html.erb +52 -0
  105. data/app/views/finder/index.html.erb +47 -0
  106. data/app/views/finder/show_details.html.erb +3 -0
  107. data/app/views/finder/show_images.html.erb +3 -0
  108. data/app/views/function/_edit_form.rhtml +106 -0
  109. data/app/views/function/create.rhtml +8 -0
  110. data/app/views/function/details.rhtml +96 -0
  111. data/app/views/function/edit.rhtml +8 -0
  112. data/app/views/function/list.rhtml +80 -0
  113. data/app/views/group/add_member.rhtml +13 -0
  114. data/app/views/group/change_owner.rhtml +15 -0
  115. data/app/views/group/create.rhtml +11 -0
  116. data/app/views/group/delete_member.rhtml +14 -0
  117. data/app/views/group/list.rhtml +63 -0
  118. data/app/views/knowledge/_backup.rhtml +135 -0
  119. data/app/views/knowledge/_category.rhtml +58 -0
  120. data/app/views/knowledge/_category_list.rhtml +34 -0
  121. data/app/views/knowledge/_category_table.rhtml +23 -0
  122. data/app/views/knowledge/_comment.rhtml +64 -0
  123. data/app/views/knowledge/_comment_input_form.rhtml +19 -0
  124. data/app/views/knowledge/_comments.rhtml +84 -0
  125. data/app/views/knowledge/_form.rhtml +139 -0
  126. data/app/views/knowledge/_group_figure_form.rhtml +187 -0
  127. data/app/views/knowledge/_layout_figure.rhtml +61 -0
  128. data/app/views/knowledge/_layout_figures_in_a_row_above_text.rhtml +42 -0
  129. data/app/views/knowledge/_layout_figures_under_text.rhtml +45 -0
  130. data/app/views/knowledge/_layout_one_figure_above_text.rhtml +28 -0
  131. data/app/views/knowledge/_summary.rhtml +21 -0
  132. data/app/views/knowledge/edit.rhtml +37 -0
  133. data/app/views/knowledge/list.rhtml +287 -0
  134. data/app/views/knowledge/new.rhtml +23 -0
  135. data/app/views/knowledge/new_from_analysis.rhtml +21 -0
  136. data/app/views/knowledge/show.rhtml +196 -0
  137. data/app/views/layouts/gfdnavi.rhtml +105 -0
  138. data/app/views/nodes/_ancestors.html.erb +89 -0
  139. data/app/views/nodes/_description_methods_table.html.erb +75 -0
  140. data/app/views/nodes/_mode.html.erb +16 -0
  141. data/app/views/nodes/description.html.erb +181 -0
  142. data/app/views/nodes/description_methods.html.erb +1 -0
  143. data/app/views/nodes/edit.html.erb +73 -0
  144. data/app/views/nodes/index.html.erb +25 -0
  145. data/app/views/nodes/show.html.erb +20 -0
  146. data/app/views/search/_children_details_mapsearch.rhtml +68 -0
  147. data/app/views/search/_children_details_tr.rhtml +205 -0
  148. data/app/views/search/_show_grouplist.rhtml +74 -0
  149. data/app/views/search/_show_results.rhtml +43 -0
  150. data/app/views/search/_show_results_global.rhtml +36 -0
  151. data/app/views/search/_show_results_partial.rhtml +39 -0
  152. data/app/views/search/_show_results_partial_groupbyfile.rhtml +50 -0
  153. data/app/views/search/_show_variablelist.rhtml +28 -0
  154. data/app/views/search/mapsearch.rhtml +176 -0
  155. data/app/views/search/remapsearch.rjs +18 -0
  156. data/app/views/search/show_details.rhtml +3 -0
  157. data/app/views/user/add_user.rhtml +30 -0
  158. data/app/views/user/change_password.rhtml +25 -0
  159. data/app/views/user/edit.html.erb +50 -0
  160. data/app/views/user/index.rhtml +162 -0
  161. data/app/views/user/login.rhtml +41 -0
  162. data/app/views/user/logout.rhtml +4 -0
  163. data/app/views/user/signup.rhtml +36 -0
  164. data/app/views/user/signup_succeeded.rhtml +36 -0
  165. data/app/views/user_mailer/authorization_inform.rhtml +15 -0
  166. data/app/views/user_mailer/signup_accepted.rhtml +12 -0
  167. data/app/views/user_mailer/signup_confirm.rhtml +14 -0
  168. data/app/views/user_mailer/signup_inform.rhtml +13 -0
  169. data/app/views/user_mailer/signup_rejected.rhtml +11 -0
  170. data/app/views/work_flow/_push_wsdls.rhtml +55 -0
  171. data/app/views/work_flow/index.rhtml +46 -0
  172. data/config/database.yml.example +35 -0
  173. data/config/environment.rb +68 -0
  174. data/config/gfdnavi.yml.example +95 -0
  175. data/config/load_config.rb +151 -0
  176. data/config/routes.rb +35 -0
  177. data/consistency_checker.rb +129 -0
  178. data/data/gfdnavi_docs/how_to_draw_multiple_images.knlge +68 -0
  179. data/data/gfdnavi_docs/how_to_knowledge.knlge +138 -0
  180. data/data/gfdnavi_docs/how_to_write_document_about_Gfdnavi.knlge +30 -0
  181. data/data/samples/jmadata.SIGEN +8 -0
  182. data/data/samples/jmadata.yml +6 -0
  183. data/data/samples/jmadata/MSM-P/2006.nc.yml +2 -0
  184. data/data/samples/jmadata/MSM-P/2006.yml +17 -0
  185. data/data/samples/jmadata/MSM-P/2006/0101.nc +0 -0
  186. data/data/samples/jmadata/MSM-P/2006/0101.nc.yml +13 -0
  187. data/data/samples/jmadata/MSM-P/2006/0102.nc +0 -0
  188. data/data/samples/jmadata/MSM-P/2006/0103.nc +0 -0
  189. data/data/samples/jmadata/MSM-P/2006/0104.nc +0 -0
  190. data/data/samples/jmadata/MSM-P/2006/0105.nc +0 -0
  191. data/data/samples/jmadata/MSM-P/2006/010[1-3].nc.yml +2 -0
  192. data/data/samples/jmadata/MSM-P/2006/skip_data.rb +96 -0
  193. data/data/samples/jmadata/MSM-P/2006/skip_data.sh +6 -0
  194. data/data/samples/reanalysis.SIGEN +8 -0
  195. data/data/samples/reanalysis/era40.SIGEN +8 -0
  196. data/data/samples/reanalysis/era40.yml +2 -0
  197. data/data/samples/reanalysis/era40/t.jan.nc +0 -0
  198. data/data/samples/reanalysis/era40/t.jan.nc.yml +1 -0
  199. data/data/samples/reanalysis/ncep.SIGEN +9 -0
  200. data/data/samples/reanalysis/ncep/T.jan.100hPa.png +0 -0
  201. data/data/samples/reanalysis/ncep/T.jan.100hPa.png.yml +43 -0
  202. data/data/samples/reanalysis/ncep/T.jan.nc +0 -0
  203. data/data/samples/reanalysis/ncep/T.jan.zonal_mean.nc +0 -0
  204. data/data/samples/reanalysis/ncep/T.jan.zonal_mean.nc.yml +8 -0
  205. data/data/samples/reanalysis/ncep/T.jan_only_root.nc +0 -0
  206. data/data/samples/reanalysis/ncep/T.jan_only_root.nc.yml +4 -0
  207. data/data/samples/reanalysis/ncep/UV.jan.nc +0 -0
  208. data/data/samples/reanalysis/ncep/UV.jan.nc.yml +10 -0
  209. data/data/samples/reanalysis/ncep/UV.jan.nc.yml.ja +11 -0
  210. data/data/samples/sonde_operational.yml +5 -0
  211. data/data/samples/sonde_operational/std_plev.yml +12 -0
  212. data/data/samples/sonde_operational/std_plev/41256.spl.nc +0 -0
  213. data/data/samples/sonde_operational/std_plev/42410.spl.nc +0 -0
  214. data/data/samples/sonde_operational/std_plev/43333.spl.nc +0 -0
  215. data/data/samples/sonde_operational/std_plev/43346.spl.nc +0 -0
  216. data/data/samples/sonde_operational/std_plev/48698.spl.nc +0 -0
  217. data/data/samples/sonde_operational/std_plev/61641.spl.nc +0 -0
  218. data/data/samples/sonde_operational/std_plev/63741.spl.nc +0 -0
  219. data/data/samples/sonde_operational/std_plev/67083.spl.nc +0 -0
  220. data/data/samples/sonde_operational/std_plev/72261.spl.nc +0 -0
  221. data/data/samples/sonde_operational/std_plev/76805.spl.nc +0 -0
  222. data/data/samples/sonde_operational/std_plev/82193.spl.nc +0 -0
  223. data/data/samples/sonde_operational/std_plev/91165.spl.nc +0 -0
  224. data/data/samples/sonde_operational/std_plev/91610.spl.nc +0 -0
  225. data/data/samples/sonde_operational/std_plev/91948.spl.nc +0 -0
  226. data/data/samples/sonde_operational/std_plev/94294.spl.nc +0 -0
  227. data/db/NetCDFparser.rb +406 -0
  228. data/db/create_derived_spatial_attributes.sql +12 -0
  229. data/db/draw_methods/line.yml +6 -0
  230. data/db/draw_methods/scatter.yml +38 -0
  231. data/db/draw_methods/tone.yml +64 -0
  232. data/db/draw_methods/vector.yml +19 -0
  233. data/db/dump_db.rb +43 -0
  234. data/db/functions/additions.yml +10 -0
  235. data/db/functions/cut.yml +10 -0
  236. data/db/functions/division.yml +10 -0
  237. data/db/functions/mean.yml +28 -0
  238. data/db/functions/multiplication.yml +10 -0
  239. data/db/functions/stddev.yml +28 -0
  240. data/db/functions/subtraction.yml +10 -0
  241. data/db/migrate/001_initial_scheme.rb +289 -0
  242. data/db/migrate/002_add_open_id_authentication_tables.rb +20 -0
  243. data/db/register_directory_tree.rb +760 -0
  244. data/db/restore_db.rb +60 -0
  245. data/gfdnavi-install +828 -0
  246. data/install.rb +828 -0
  247. data/lib/activerecord_gfdnavi.rb +31 -0
  248. data/lib/basic_authorization.rb +50 -0
  249. data/lib/create_activeresources.rb +108 -0
  250. data/lib/execute_analysis.rb +472 -0
  251. data/lib/file_gfdnavi.rb +38 -0
  252. data/lib/gphys_gfdnavi.rb +81 -0
  253. data/lib/localdir.rb +110 -0
  254. data/lib/login_system.rb +110 -0
  255. data/lib/multibytes.rb +20 -0
  256. data/lib/narray_yaml.rb +58 -0
  257. data/lib/no_rdb_base.rb +40 -0
  258. data/lib/opendapdir.rb +171 -0
  259. data/lib/tar.rb +127 -0
  260. data/lib/tasks/clean.rake +65 -0
  261. data/lib/tasks/setup.rake +316 -0
  262. data/lib/tasks/update.rake +62 -0
  263. data/lib/vizshot_gfdnavi.rb +224 -0
  264. data/public/crossdomain.xml +4 -0
  265. data/public/flex/NodeTreeDescriptor.as +55 -0
  266. data/public/flex/TreeNode.as +253 -0
  267. data/public/flex/finder.mxml +304 -0
  268. data/public/flex/finder.swf +0 -0
  269. data/public/flex/gfdnavi.mxml +52 -0
  270. data/public/flex/gfdnavi.swf +0 -0
  271. data/public/images/Help_S-shots/dir_tree_with_add.jpg +0 -0
  272. data/public/images/analyze.gif +0 -0
  273. data/public/images/circle.gif +0 -0
  274. data/public/images/create_from_analysis_button.png +0 -0
  275. data/public/images/delete.png +0 -0
  276. data/public/images/down.png +0 -0
  277. data/public/images/drawbutton.gif +0 -0
  278. data/public/images/gfdnavi_home_logo.png +0 -0
  279. data/public/images/gfdnavi_logo_big.png +0 -0
  280. data/public/images/gfdnavi_logo_med.png +0 -0
  281. data/public/images/gfdnavi_logo_mini.png +0 -0
  282. data/public/images/gfdnavi_logo_nobg_big.png +0 -0
  283. data/public/images/gfdnavi_logo_nobg_med.png +0 -0
  284. data/public/images/gfdnavi_logo_nobg_small.png +0 -0
  285. data/public/images/gfdnavi_logo_small.png +0 -0
  286. data/public/images/gfdnavi_logo_xsmall.png +0 -0
  287. data/public/images/hbar.png +0 -0
  288. data/public/images/helpmark16.png +0 -0
  289. data/public/images/helpmark18.png +0 -0
  290. data/public/images/kikyu_g.gif +0 -0
  291. data/public/images/kikyu_r.gif +0 -0
  292. data/public/images/map_icon_g.gif +0 -0
  293. data/public/images/map_icon_r.gif +0 -0
  294. data/public/images/new_knowledge.png +0 -0
  295. data/public/images/openid.png +0 -0
  296. data/public/images/read_in_the_form.png +0 -0
  297. data/public/images/slider_f.gif +0 -0
  298. data/public/images/slider_f_red.gif +0 -0
  299. data/public/images/star1.gif +0 -0
  300. data/public/images/star2.gif +0 -0
  301. data/public/images/startanim.gif +0 -0
  302. data/public/images/stopanim.gif +0 -0
  303. data/public/images/tree/DL.png +0 -0
  304. data/public/images/tree/anal_viz.png +0 -0
  305. data/public/images/tree/analyze_visualize_checked_items.png +0 -0
  306. data/public/images/tree/binary.png +0 -0
  307. data/public/images/tree/details.png +0 -0
  308. data/public/images/tree/download_checked_items.png +0 -0
  309. data/public/images/tree/folder.png +0 -0
  310. data/public/images/tree/folder_close.gif +0 -0
  311. data/public/images/tree/image2.png +0 -0
  312. data/public/images/tree/knowledge.png +0 -0
  313. data/public/images/tree/knowledges.png +0 -0
  314. data/public/images/tree/last.gif +0 -0
  315. data/public/images/tree/last.png +0 -0
  316. data/public/images/tree/minus.gif +0 -0
  317. data/public/images/tree/minus_simple.gif +0 -0
  318. data/public/images/tree/none.gif +0 -0
  319. data/public/images/tree/none.png +0 -0
  320. data/public/images/tree/plus.gif +0 -0
  321. data/public/images/tree/plus_simple.gif +0 -0
  322. data/public/images/tree/show.png +0 -0
  323. data/public/images/tree/show_checked_items.png +0 -0
  324. data/public/images/tree/t.gif +0 -0
  325. data/public/images/tree/t.png +0 -0
  326. data/public/images/tree/tate.gif +0 -0
  327. data/public/images/tree/tate.png +0 -0
  328. data/public/images/up.png +0 -0
  329. data/public/images/vbar.png +0 -0
  330. data/public/images/white.bmp +0 -0
  331. data/public/images/x.gif +0 -0
  332. data/public/index.html +100 -0
  333. data/public/javascripts/AC_OETags.js +269 -0
  334. data/public/javascripts/analysis.js +751 -0
  335. data/public/javascripts/application.js +29 -0
  336. data/public/javascripts/directory_tree.js +102 -0
  337. data/public/javascripts/draw_method.js +83 -0
  338. data/public/javascripts/excanvas.js +704 -0
  339. data/public/javascripts/function.js +107 -0
  340. data/public/javascripts/gfdnavi.js +175 -0
  341. data/public/javascripts/knowledge.js +384 -0
  342. data/public/javascripts/mapsearch.js +313 -0
  343. data/public/javascripts/progress.js +42 -0
  344. data/public/javascripts/resizable_box.js +164 -0
  345. data/public/javascripts/slider.js +260 -0
  346. data/public/javascripts/tab.js +17 -0
  347. data/public/javascripts/work_flow.js +452 -0
  348. data/public/stylesheets/analysis.css +111 -0
  349. data/public/stylesheets/description.css +71 -0
  350. data/public/stylesheets/gfdnavi.css +141 -0
  351. data/public/stylesheets/knowledge.css +218 -0
  352. data/public/stylesheets/search.css +184 -0
  353. data/public/stylesheets/tree.css +45 -0
  354. data/public/stylesheets/tree_for_ie.css +3 -0
  355. data/public/stylesheets/work_flow.css +78 -0
  356. data/script/cleaner +11 -0
  357. data/script/server_ssl +131 -0
  358. data/test/fixtures/diagram_cache_data.yml +5 -0
  359. data/test/fixtures/diagram_cache_sessions.yml +6 -0
  360. data/test/fixtures/diagram_caches.yml +6 -0
  361. data/test/fixtures/directories.yml +57 -0
  362. data/test/fixtures/draw_parameters.yml +6 -0
  363. data/test/fixtures/function_arguments.yml +15 -0
  364. data/test/fixtures/function_outputs.yml +15 -0
  365. data/test/fixtures/functions.yml +29 -0
  366. data/test/fixtures/group_members.yml +33 -0
  367. data/test/fixtures/groups.yml +25 -0
  368. data/test/fixtures/images.yml +12 -0
  369. data/test/fixtures/keyword_attributes.yml +73 -0
  370. data/test/fixtures/knowledges.yml +10 -0
  371. data/test/fixtures/node_relations.yml +11 -0
  372. data/test/fixtures/nodes.yml +298 -0
  373. data/test/fixtures/sign_up_users.yml +8 -0
  374. data/test/fixtures/spatial_and_time_attributes.yml +29 -0
  375. data/test/fixtures/user_mailer/authorization_inform +11 -0
  376. data/test/fixtures/user_mailer/signup_accepted +10 -0
  377. data/test/fixtures/user_mailer/signup_confirm +17 -0
  378. data/test/fixtures/user_mailer/signup_inform +10 -0
  379. data/test/fixtures/user_mailer/signup_rejected +9 -0
  380. data/test/fixtures/users.yml +31 -0
  381. data/test/fixtures/value_types.yml +10 -0
  382. data/test/fixtures/variables.yml +17 -0
  383. data/test/functional/analysis_controller_test.rb +169 -0
  384. data/test/functional/description_controller_test.rb +18 -0
  385. data/test/functional/function_controller_test.rb +18 -0
  386. data/test/functional/group_controller_test.rb +18 -0
  387. data/test/functional/search_controller_test.rb +83 -0
  388. data/test/functional/user_controller_test.rb +77 -0
  389. data/test/functional/webservice_analysis_api_test.rb +12 -0
  390. data/test/functional/work_flow_controller_test.rb +18 -0
  391. data/test/test_helper.rb +28 -0
  392. data/test/unit/diagram_cache_datum_test.rb +10 -0
  393. data/test/unit/diagram_cache_session_test.rb +10 -0
  394. data/test/unit/diagram_cache_test.rb +10 -0
  395. data/test/unit/directory_test.rb +49 -0
  396. data/test/unit/draw_parameter_test.rb +10 -0
  397. data/test/unit/function_argument_test.rb +10 -0
  398. data/test/unit/function_output_test.rb +10 -0
  399. data/test/unit/function_test.rb +10 -0
  400. data/test/unit/group_test.rb +48 -0
  401. data/test/unit/image_test.rb +13 -0
  402. data/test/unit/keyword_attribute_test.rb +33 -0
  403. data/test/unit/knowledge_test.rb +13 -0
  404. data/test/unit/node_relation_test.rb +20 -0
  405. data/test/unit/node_test.rb +85 -0
  406. data/test/unit/sign_up_user_test.rb +20 -0
  407. data/test/unit/spatial_and_time_attribute_test.rb +29 -0
  408. data/test/unit/user_mailer_test.rb +101 -0
  409. data/test/unit/user_test.rb +134 -0
  410. data/test/unit/value_type_test.rb +10 -0
  411. data/test/unit/variable_test.rb +35 -0
  412. data/vendor/plugins/acts_as_list/README +23 -0
  413. data/vendor/plugins/acts_as_list/init.rb +3 -0
  414. data/vendor/plugins/acts_as_list/lib/active_record/acts/list.rb +256 -0
  415. data/vendor/plugins/acts_as_list/test/list_test.rb +332 -0
  416. data/vendor/plugins/acts_as_tree/README +26 -0
  417. data/vendor/plugins/acts_as_tree/Rakefile +22 -0
  418. data/vendor/plugins/acts_as_tree/init.rb +1 -0
  419. data/vendor/plugins/acts_as_tree/lib/active_record/acts/tree.rb +96 -0
  420. data/vendor/plugins/acts_as_tree/test/abstract_unit.rb +0 -0
  421. data/vendor/plugins/acts_as_tree/test/acts_as_tree_test.rb +219 -0
  422. data/vendor/plugins/acts_as_tree/test/database.yml +0 -0
  423. data/vendor/plugins/acts_as_tree/test/fixtures/mixin.rb +0 -0
  424. data/vendor/plugins/acts_as_tree/test/fixtures/mixins.yml +0 -0
  425. data/vendor/plugins/acts_as_tree/test/schema.rb +0 -0
  426. data/vendor/plugins/will_paginate/CHANGELOG +92 -0
  427. data/vendor/plugins/will_paginate/LICENSE +18 -0
  428. data/vendor/plugins/will_paginate/README.rdoc +131 -0
  429. data/vendor/plugins/will_paginate/Rakefile +62 -0
  430. data/vendor/plugins/will_paginate/examples/apple-circle.gif +0 -0
  431. data/vendor/plugins/will_paginate/examples/index.haml +69 -0
  432. data/vendor/plugins/will_paginate/examples/index.html +92 -0
  433. data/vendor/plugins/will_paginate/examples/pagination.css +90 -0
  434. data/vendor/plugins/will_paginate/examples/pagination.sass +91 -0
  435. data/vendor/plugins/will_paginate/init.rb +1 -0
  436. data/vendor/plugins/will_paginate/lib/will_paginate.rb +86 -0
  437. data/vendor/plugins/will_paginate/lib/will_paginate/array.rb +16 -0
  438. data/vendor/plugins/will_paginate/lib/will_paginate/collection.rb +145 -0
  439. data/vendor/plugins/will_paginate/lib/will_paginate/core_ext.rb +32 -0
  440. data/vendor/plugins/will_paginate/lib/will_paginate/finder.rb +247 -0
  441. data/vendor/plugins/will_paginate/lib/will_paginate/named_scope.rb +132 -0
  442. data/vendor/plugins/will_paginate/lib/will_paginate/named_scope_patch.rb +39 -0
  443. data/vendor/plugins/will_paginate/lib/will_paginate/version.rb +9 -0
  444. data/vendor/plugins/will_paginate/lib/will_paginate/view_helpers.rb +373 -0
  445. data/vendor/plugins/will_paginate/will_paginate.gemspec +21 -0
  446. metadata +586 -0
@@ -0,0 +1,62 @@
1
+ desc "Update all"
2
+ task :update do
3
+ while true
4
+ print "Please select the following item\n"
5
+ print " 1: rebuild database tables.\n"
6
+ print " 2: update data tree.\n"
7
+ print " x: quit.\n"
8
+ print "select number: "
9
+ res = $stdin.gets.chomp!
10
+ unless ["1", "2", "x"].include?(res)
11
+ print "Not correct\n\n"
12
+ next
13
+ end
14
+ break
15
+ end
16
+ case res
17
+ when "1"
18
+ Rake::Task["update:tables"].invoke
19
+ when "2"
20
+ Rake::Task["update:tree"].invoke
21
+ when "x"
22
+ exit
23
+ end
24
+ end
25
+
26
+ namespace :update do
27
+ desc "Update database tables"
28
+ task :tables => :environment do
29
+ print "This will clear all the database tables and try to restore database.\n"
30
+ print "This might fail.\n"
31
+ print "Are you sure to continue? (no/yes, default:no) "
32
+ res = $stdin.gets.chomp!
33
+ unless res == "yes"
34
+ abort "execution was canceled"
35
+ end
36
+
37
+ command = 'ruby "' + File.join(File.expand_path(RAILS_ROOT), 'db', 'dump_db.rb') + '"'
38
+ unless system( command )
39
+ raise "failed to execute #{command}"
40
+ end
41
+
42
+ Rake::Task["setup:database"].invoke
43
+
44
+ command = 'ruby "' + File.join(File.expand_path(RAILS_ROOT), 'db', 'restore_db.rb') + '"'
45
+ unless system( command )
46
+ raise "failed to execute #{command}"
47
+ end
48
+ command = 'ruby "' + File.join(File.expand_path(RAILS_ROOT), 'db', 'register_directory_tree.rb') + '"'
49
+ unless system( command )
50
+ raise "failed to execute #{command}"
51
+ end
52
+ end
53
+
54
+ desc "Update tree of directories and variables"
55
+ task :tree => :environment do
56
+ command = 'ruby "' + File.join(File.expand_path(RAILS_ROOT), 'db', 'register_directory_tree.rb') + '" --verbose'
57
+ unless system( command )
58
+ raise "failed to execute #{command}"
59
+ end
60
+ end
61
+
62
+ end
@@ -0,0 +1,224 @@
1
+ require "numru/vizshot"
2
+
3
+ module NumRu
4
+ class VizShot
5
+
6
+ def ==(other)
7
+ return false unless @set == other.instance_variable_get("@set")
8
+ self.instance_variable_get("@plots") == other.instance_variable_get("@plots")
9
+ end
10
+
11
+ def get_variables
12
+ unless @variables
13
+ @variables = Array.new
14
+ @plots.each{|pl|
15
+ pl[:variables].each{|path|
16
+ var = var_from_path(path)
17
+ if var
18
+ @variables.push var unless @variables.include?(var)
19
+ else
20
+ raise "[BUG] variable is invalid (#{path})"
21
+ end
22
+ }
23
+ }
24
+ end
25
+ return @variables
26
+ end
27
+
28
+ def to_yaml_properties
29
+ props = instance_variables.sort
30
+ props.delete("@variables")
31
+ return props
32
+ end
33
+
34
+ def get_plots(num=nil)
35
+ if num
36
+ @plots[num].dup
37
+ else
38
+ @plots.collect{|pl| pl.dup}
39
+ end
40
+ end
41
+
42
+ def get_size
43
+ [ @set[:admin][:iwidth], @set[:admin][:iheight] ]
44
+ end
45
+
46
+ def get_itr
47
+ @set[:fig]['itr']
48
+ end
49
+
50
+ def get_viewport
51
+ @set[:fig]['viewport'].join(',')
52
+ end
53
+
54
+ # redefined
55
+ alias :_gen_code :gen_code
56
+ def gen_code(all_in_one=false, exec_opt=nil)
57
+ if exec_opt
58
+ case exec_opt.delete(:for)
59
+ when :in
60
+ flag = true
61
+ when :out
62
+ flag = false
63
+ basename = exec_opt.delete(:basename)
64
+ else
65
+ raise "BUG"
66
+ end
67
+ exec_opts = nil if exec_opt.empty?
68
+ else
69
+ raise "BUG"
70
+ end
71
+ plots_org = @plots
72
+ i = 0
73
+ @plots = @plots.collect do |plot|
74
+ plot = plot.dup
75
+ vars = plot.delete(:variables)
76
+ if flag
77
+ v = var_from_path(vars[0])
78
+ plot[:file] = v.fname
79
+ plot[:var] = v.vname
80
+ if vars[1]
81
+ v = var_from_path(vars[1])
82
+ plot[:file2] = v.fname
83
+ plot[:var2] = v.vname
84
+ end
85
+ else
86
+ plot[:file] = basename + sprintf("_%03d",i) + '.nc'
87
+ plot[:var] = File.basename(vars[0])
88
+ if vars[1]
89
+ plot[:file2] = basename + sprintf("_%03d_2",i) + '.nc'
90
+ plot[:var2] = File.basename(vars[1])
91
+ end
92
+ end
93
+ plot
94
+ end
95
+ code = _gen_code(all_in_one, exec_opt)
96
+ @plots = plots_org
97
+ return code
98
+ end
99
+
100
+ # redefined
101
+ def cut_out_data(basename)
102
+ newplots = Array.new
103
+ data_paths = Array.new
104
+ @plots.each_with_index{|pl, i|
105
+ gphys, gphys2 = get_gphyses(pl.dup)
106
+ method = pl[:method]
107
+ script = pl.delete(:script)
108
+ cut = pl.delete(:cut)
109
+ slice = pl.delete(:slice)
110
+ ndims = self.class.ndims(method)
111
+ filename = basename + sprintf("_%03d",i) + '.nc'
112
+ data_paths.push _output_data(gphys,filename,ndims)
113
+ pl = pl.dup
114
+ pl[:file] = filename
115
+ pl[:var] = gphys.name
116
+ if gphys2
117
+ cut2 = pl.delete(:cut2) || cut
118
+ slice2 = pl.delete(:slice2) || slice
119
+ filename = basename + sprintf("_%03d_2",i) + '.nc'
120
+ data_paths.push _output_data(gphys2,filename,ndims)
121
+ pl = pl.dup
122
+ pl[:file2] = filename
123
+ pl[:var2] = gphys.name
124
+ end
125
+ }
126
+ return data_paths
127
+ end
128
+
129
+ protected
130
+
131
+ # redefined
132
+ def get_gphyses(arg)
133
+ vars = arg.delete(:variables)
134
+ unless Array === vars
135
+ raise "variables is valid"
136
+ end
137
+ gphyses = Array.new
138
+ slice = [arg.delete(:slice)]
139
+ slice[1] = arg.delete(:slice2) || slice[0]
140
+ cut = [arg.delete(:cut)]
141
+ cut[1] = arg.delete(:cut2) || cut[0]
142
+ vars.each_with_index{|path,i|
143
+ v = var_from_path(path)
144
+ if v
145
+ gphys = v.gphys
146
+ if i==0 || i==1
147
+ gphys = gphys[*(slice[i])] if slice[i]
148
+ case cut[i]
149
+ when Hash
150
+ c = cut[i].dup
151
+ (c.keys - gphys.axnames).each{|k| c.delete(k)}
152
+ gphys = gphys.cut(c)
153
+ when Array
154
+ gphys = gphys.cut(*(cut[i]))
155
+ end
156
+ end
157
+ gphyses.push gphys
158
+ else
159
+ raise "variable is invalid (#{path})"
160
+ end
161
+ }
162
+ if src = arg.delete(:script)
163
+ safe = $SAFE
164
+ lambda {
165
+ $SAFE = 3
166
+ eval src
167
+ }.call
168
+ $SAFE = safe
169
+ end
170
+ raise "wrong number of gphyses" if gphyses.length > 2
171
+ return gphyses
172
+ end
173
+
174
+ def _output_data(gphys,filename,ndims)
175
+ path = @@dumpdir + filename
176
+ case ndims
177
+ when 1
178
+ gphys = gphys.first1D
179
+ when 2
180
+ gphys = gphys.first2D
181
+ when 3
182
+ gphys = gphys.first3D
183
+ else
184
+ raise "Ploting more-than-3D data is not supported"
185
+ end
186
+ file = NetCDF.create(path)
187
+ GPhys::IO.write(file,gphys)
188
+ file.close
189
+ return path
190
+ end
191
+
192
+ def var_from_path(path)
193
+ if /\A(temporary\:.+)\/([^\/]+)\z/ =~ path
194
+ fname = $1
195
+ vname = $2
196
+ v = Variable.new
197
+ v.file = fname
198
+ v.path = File.join(fname,vname)
199
+ else
200
+ v = Variable.find(:first,:conditions=>["path=?",path],:user=>:all)
201
+ end
202
+ return v
203
+ end
204
+
205
+ end
206
+ end
207
+
208
+
209
+ #.*ENDOFLIB
210
+
211
+ if ActiveRecord::Base.connection.tables.include?("nodes")
212
+ DrawMethod.find(:all, :user=>:all).each{|dm|
213
+ if dm.name && dm.script && dm.script!="NULL"
214
+ hash = {
215
+ :name => dm.name,
216
+ :ndims => dm.ndims,
217
+ :nvars => dm.nvars,
218
+ :script => dm.script
219
+ }
220
+ hash[:ggraph] = dm.ggraph if dm.ggraph && dm.ggraph!="NULL"
221
+ NumRu::VizShot.add_extensions(hash)
222
+ end
223
+ }
224
+ end
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <cross-domain-policy>
3
+ <allow-access-from domain="*"/>
4
+ </cross-domain-policy>
@@ -0,0 +1,55 @@
1
+ package
2
+ {
3
+ import mx.controls.treeClasses.DefaultDataDescriptor;
4
+ import mx.collections.ICollectionView;
5
+ import mx.collections.ArrayCollection;
6
+ import mx.controls.Alert;
7
+ import mx.rpc.AsyncResponder;
8
+ import mx.rpc.AsyncToken;
9
+ import mx.rpc.http.mxml.HTTPService;
10
+
11
+
12
+ public class NodeTreeDescriptor extends DefaultDataDescriptor
13
+ {
14
+ public function NodeTreeDescriptor():void
15
+ {
16
+ super();
17
+ }
18
+
19
+ public function toString():String { return "[Object NodeTreeDescriptor]"};
20
+
21
+ public override function getChildren(node:Object, model:Object=null):ICollectionView {
22
+ if (node.directories) {
23
+ return node.directories;
24
+ } else {
25
+ return node.children;
26
+ }
27
+ }
28
+
29
+ public override function isBranch(node:Object, model:Object=null):Boolean {
30
+ if (node.numDirs > 0) {
31
+ return true;
32
+ } else {
33
+ return false;
34
+ }
35
+
36
+ }
37
+
38
+ public override function hasChildren(node:Object, model:Object=null):Boolean {
39
+ var children:ArrayCollection;
40
+
41
+ if (node.directories) {
42
+ children = node.directories;
43
+ } else {
44
+ children = node.children;
45
+ }
46
+ if (children.length > 0) {
47
+ return true;
48
+ } else {
49
+ return false
50
+ }
51
+ }
52
+
53
+ }
54
+ }
55
+
@@ -0,0 +1,253 @@
1
+ package {
2
+
3
+ import mx.controls.treeClasses.DefaultDataDescriptor;
4
+ import mx.collections.ICollectionView;
5
+ import mx.collections.ArrayCollection;
6
+ import mx.controls.Alert;
7
+ import mx.rpc.AsyncResponder;
8
+ import mx.rpc.AsyncToken;
9
+ import mx.rpc.http.mxml.HTTPService;
10
+ import mx.controls.Tree;
11
+ import flash.events.Event;
12
+ import mx.events.CollectionEvent;
13
+ import mx.events.PropertyChangeEvent;
14
+
15
+ public class TreeNode {
16
+
17
+ public function TreeNode(host:String):void {
18
+ super();
19
+ this.host = host;
20
+ }
21
+
22
+ [Embed(source='../images/tree/folder.png')]
23
+ [Bindable]
24
+ public var closedFolderIcon:Class;
25
+
26
+ [Embed(source='../images/tree/binary.png')]
27
+ [Bindable]
28
+ public var binaryIcon:Class;
29
+
30
+ [Embed(source='../images/tree/image2.png')]
31
+ [Bindable]
32
+ public var imageIcon:Class;
33
+
34
+ [Embed(source='../images/tree/knowledge_icon.png')]
35
+ [Bindable]
36
+ public var knowledgeIcon:Class;
37
+
38
+ [Embed(source='../images/tree/anal_viz.png')]
39
+ [Bindable]
40
+ public var analysisIcon:Class;
41
+
42
+ [Embed(source='../images/tree/show.png')]
43
+ [Bindable]
44
+ public var showIcon:Class;
45
+
46
+
47
+ public static var hs:HTTPService;
48
+ public static var tree:Tree;
49
+ public static var changeHandler:Function;
50
+
51
+
52
+ public var host:String;
53
+ public var has_variable:Boolean;
54
+ public var has_image:Boolean;
55
+
56
+ public var has_children:Boolean;
57
+ private var childrenUri:String;
58
+
59
+ private var _chld:ArrayCollection;
60
+ private var _dirs:ArrayCollection;
61
+ private var _vars:ArrayCollection;
62
+ private var _imgs:ArrayCollection;
63
+
64
+ private var _kas:ArrayCollection;
65
+
66
+ public var name:String;
67
+ public var path:String;
68
+ public var size:int;
69
+ public var node_type:String;
70
+ public var mtime:String;
71
+ public var title:String;
72
+ public var description:String;
73
+ public var parent:Object;
74
+ public var numDirs:int;
75
+ public var imgSrc:String;
76
+
77
+ public var dlUri:String;
78
+
79
+
80
+ public function toString():String { return "[Object TreeNode]"};
81
+
82
+ public function get directories():ArrayCollection {
83
+ getChildren();
84
+ return _dirs;
85
+ }
86
+ public function set directories(dirs:ArrayCollection):void {
87
+ _dirs = dirs;
88
+ }
89
+ public function get variables():ArrayCollection {
90
+ getChildren();
91
+ return _vars;
92
+ }
93
+ public function set variables(vars:ArrayCollection):void {
94
+ _vars = vars;
95
+ }
96
+ public function get images():ArrayCollection {
97
+ getChildren();
98
+ return _imgs;
99
+ }
100
+ public function set images(imgs:ArrayCollection):void {
101
+ _imgs = imgs;
102
+ }
103
+ public function get children():ArrayCollection {
104
+ getChildren();
105
+ return _chld;
106
+ }
107
+ public function set children(chld:ArrayCollection):void {
108
+ _chld = chld;
109
+ }
110
+
111
+ public function get keywordAttributes():ArrayCollection {
112
+ var ary:ArrayCollection;
113
+ if (!_kas) {
114
+ _kas = (ary = new ArrayCollection());
115
+ hs.url = host + "/data" + this.path + "/keyword_attributes.xml";
116
+ hs.method = "GET";
117
+ var call:AsyncToken = hs.send();
118
+
119
+ call.addResponder(new AsyncResponder(
120
+ function (result:Object, token:Object = null):void {
121
+ trace(result.toString(), "succeded to get Node Keyword Attributes");
122
+ var obj:Object;
123
+ var kas:Object;
124
+ if ( result.result.hasOwnProperty("keyword-attributes") ) {
125
+ kas = result.result["keyword-attributes"];
126
+ if (kas) {
127
+ kas = kas["keyword-attribute"];
128
+ if (!kas.length) kas = new Array(kas);
129
+ var ka:Object;
130
+ for (var i:int=0; i < kas.length; i++) {
131
+ ka = kas[i];
132
+ obj = new Object();
133
+ obj.name = ka.name;
134
+ obj.value = ka.value;
135
+ obj.lang = ka.lang;
136
+ ary.addItem(obj);
137
+ }
138
+ }
139
+ }
140
+ },
141
+ function (error:Object, token:Object = null):void {
142
+ trace(error.toString());
143
+ Alert.show("failed to get Node Keyword Attributes","Error");
144
+ },
145
+ call
146
+ ));
147
+ }
148
+ return _kas;
149
+ }
150
+
151
+ private function getChildren():void {
152
+ if (!this.has_children) {
153
+ this.has_children = true;
154
+ getNodes(this.childrenUri, this);
155
+ }
156
+ }
157
+
158
+ public function getNodeTypeIcon():Class {
159
+ if (this.node_type == "directory") {
160
+ return closedFolderIcon;
161
+ } else if (this.node_type == "variable") {
162
+ return binaryIcon;
163
+ } else if (this.node_type == "image") {
164
+ return imageIcon;
165
+ } else if (this.node_type == "knowledge") {
166
+ return knowledgeIcon;
167
+ }
168
+ return closedFolderIcon;
169
+ }
170
+
171
+ public function getNodeActionIcon():Class {
172
+ if (this.node_type == "directory") {
173
+ if (this.variables.length > 0 )
174
+ return analysisIcon;
175
+ } else if (this.node_type == "variable") {
176
+ return analysisIcon;
177
+ } else if (this.node_type == "image") {
178
+ return showIcon;
179
+ }
180
+ return null;
181
+ }
182
+
183
+ public static function getNodes(uri:String, parent:Object):ArrayCollection {
184
+ var dis:ArrayCollection;
185
+ var vas:ArrayCollection;
186
+ var ims:ArrayCollection;
187
+ var chd:ArrayCollection;
188
+ var host:String = parent.host;
189
+
190
+ dis = new ArrayCollection();
191
+ if (parent is TreeNode) {
192
+ chd = new ArrayCollection();
193
+ vas = new ArrayCollection();
194
+ ims = new ArrayCollection();
195
+ parent.directories = dis;
196
+ parent.variables = vas;
197
+ parent.images = ims;
198
+ parent.children = chd;
199
+ }
200
+
201
+ hs.url = uri + "?num_dirs=true";
202
+ hs.method = "GET";
203
+ var call:AsyncToken = hs.send();
204
+
205
+ call.addResponder(new AsyncResponder(
206
+ function (result:Object, token:Object = null):void {
207
+ trace(result.toString(), "succeded to get Nodes");
208
+ var obj:TreeNode;
209
+ var nodes:Object = result.result.nodes.node;
210
+ if (!nodes.length) nodes = new Array(nodes);
211
+ var node:Object;
212
+ for (var i:int=0; i < nodes.length; i++) {
213
+ node = nodes[i];
214
+ obj = new TreeNode(host);
215
+ obj.name = node.name;
216
+ obj.numDirs = node.num_dirs;
217
+ obj.path = node.path;
218
+ obj.size = node.size;
219
+ obj.node_type = node.node_type;
220
+ obj.mtime = node.mtime;
221
+ obj.childrenUri = node.children.uri;
222
+ if (node.title is String) if (node.title!="NULL") obj.title = node.title;
223
+ if (node.description is String ) if (node.description!="NULL") obj.description = node.description;
224
+ obj.imgSrc = node.img_src;
225
+ obj.dlUri = node.dl_uri;
226
+ if (parent is TreeNode) obj.parent = parent;
227
+ if (node.node_type == "directory") {
228
+ dis.addItem(obj);
229
+ } else if (node.node_type == "variable") {
230
+ if (vas) vas.addItem(obj);
231
+ } else if (node.node_type == "image") {
232
+ if (ims) ims.addItem(obj);
233
+ }
234
+ if (chd) chd.addItem(obj);
235
+ }
236
+
237
+ changeHandler(parent);
238
+
239
+ },
240
+ function (error:Object, token:Object = null):void {
241
+ Alert.show("faild to list Nodes","error");
242
+ trace(error.toString());
243
+ parent.has_children = false;
244
+ },
245
+ call
246
+ ));
247
+ return dis;
248
+ }
249
+
250
+
251
+ }
252
+ }
253
+