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,112 @@
1
+ require "forwardable"
2
+
3
+ class NodeEntityAbstract < ActiveRecord::Base
4
+ extend Forwardable
5
+
6
+ self.abstract_class = true
7
+
8
+ before_save :save_node
9
+ after_destroy :destroy_node
10
+
11
+ class << self
12
+ alias :_find :find
13
+ def find(*args)
14
+ nodes = Node.send("find_#{table_name}",*args)
15
+ case nodes
16
+ when Node
17
+ return nodes.entity
18
+ when Array
19
+ return nodes.collect{|n| n.entity}
20
+ else
21
+ return nodes
22
+ end
23
+ end
24
+ end
25
+
26
+ def initialize(attrs=nil)
27
+ super(nil)
28
+ self.attributes = attrs
29
+ end
30
+
31
+ def attributes=(attrs=nil)
32
+ attrs_node = Hash.new
33
+ attrs_org = attrs
34
+ if attrs
35
+ attrs = attrs.dup
36
+ Node.column_names.each{|cname|
37
+ if ( v=(attrs.delete(cname)||attrs.delete(cname.to_sym)) )
38
+ attrs_node[cname] = v
39
+ end
40
+ }
41
+ end
42
+ super(attrs)
43
+ if n = node
44
+ n.attributes= attrs_node
45
+ else
46
+ n = Node.new(attrs_node)
47
+ end
48
+ n.node_type = Node.const_get(self.class.table_name.singularize.upcase)
49
+ self.node = n
50
+ n.entity = self
51
+ return attrs_org
52
+ end
53
+
54
+ def node
55
+ return @node if @node
56
+ if node_id
57
+ @node = Node.find(node_id, :user => :all)
58
+ return @node
59
+ end
60
+ return nil
61
+ end
62
+
63
+ meths = %w(parent name path mtime owner other_mode rgroups wgroups size guest_owner file other_readable title description)
64
+ meths += meths.collect{|me| "#{me}="}
65
+ meths += %w(
66
+ keyword_attributes spatial_and_time_attributes
67
+ draw_parameters
68
+ references referenced_by
69
+ fname
70
+ set_rgroups set_wgroups
71
+ add_prefix
72
+ )
73
+ meths.each do |me|
74
+ def_delegator :node, me
75
+ end
76
+
77
+ protected
78
+ def save_node
79
+ if node.save
80
+ self.node_id = node.id
81
+ return true
82
+ else
83
+ node.errors.each{|k,v| errors.add(k,v) }
84
+ return false
85
+ end
86
+ end
87
+
88
+ def destroy_node
89
+ node.destroy
90
+ end
91
+
92
+ =begin
93
+ def method_missing(method_id, *args)
94
+ begin
95
+ super(method_id, *args)
96
+ rescue NoMethodError
97
+ error = $!
98
+ begin
99
+ node.send(method_id, *args)
100
+ rescue NoMethodError
101
+ raise error
102
+ end
103
+ end
104
+ end
105
+ =end
106
+
107
+ def node=(node)
108
+ @node = node
109
+ end
110
+
111
+
112
+ end
@@ -0,0 +1,6 @@
1
+ class NodeLineage < ActiveRecord::Base
2
+ belongs_to :node_ancestor, :class_name => "Node", :foreign_key => "ancestor"
3
+ belongs_to :node_descendant, :class_name => "Node", :foreign_key => "descendant"
4
+ # belongs_to :ancestor, :class_name => "Node", :foreign_key => "ancestor"
5
+ # belongs_to :descendant, :class_name => "Node", :foreign_key => "descendant"
6
+ end
@@ -0,0 +1,4 @@
1
+ class NodeRelation < ActiveRecord::Base
2
+ belongs_to :reference, :class_name => "Node", :foreign_key => "reference"
3
+ belongs_to :referenced_by, :class_name => "Node", :foreign_key => "referenced_by"
4
+ end
@@ -0,0 +1,60 @@
1
+ class PathNode
2
+ attr_accessor :path,:entries,:children,:count,:parent
3
+ def initialize
4
+ @path=""
5
+ @entries=Array.new
6
+ @parent=nil
7
+ @children=Hash.new
8
+ @count=0
9
+ end
10
+
11
+ def addpath_r(strary)
12
+ @count=@count+1
13
+ if strary.size==0 then
14
+ return self
15
+ else
16
+ cur = strary.shift()
17
+ if @children.key?(cur) then
18
+ @children[cur].addpath_r(strary)
19
+ else
20
+ newnode=PathNode.new
21
+ newnode.path=cur
22
+ @children[cur]=newnode
23
+ newnode.addpath_r(strary)
24
+ end
25
+ end
26
+ end
27
+
28
+ def find_child(str)
29
+ if @children then
30
+ @children.each{|c|
31
+ if c.path==str then
32
+ return c
33
+ end
34
+ }
35
+ end
36
+ return
37
+ end
38
+
39
+ def addpath(n)
40
+ if @path=="/" then
41
+ strary=n.path.split(/\//)
42
+ strary.delete_at(0)
43
+ #entry=strary[strary.size-1]
44
+ strary.pop
45
+ node=addpath_r(strary)
46
+ node.entries.push(n)
47
+ end
48
+ end
49
+
50
+
51
+ end
52
+
53
+
54
+ #root=PathNode.new
55
+ #root.path="/"
56
+ #addpath("/a0/b0/c0/d0",root)
57
+ #addpath("/a0/b1/c0/d0",root)
58
+ #addpath("/a0/b1/c0/d1",root)
59
+ #addpath("/a1/b1/c0/d1",root)
60
+ #root.printpath(0)
@@ -0,0 +1,193 @@
1
+ class Query
2
+ attr_reader :spatial_region
3
+ attr_reader :start_lon, :start_lat
4
+ attr_reader :end_lon, :end_lat
5
+ attr_reader :time_region
6
+ attr_reader :starttime, :endtime
7
+ attr_reader :keywords
8
+ attr_reader :listmode
9
+ attr_reader :zoomlevel, :oldzoomlevel
10
+ attr_reader :center_x, :center_y
11
+ attr_reader :window_start_lon, :window_start_lat
12
+ attr_reader :window_end_lon, :window_end_lat
13
+
14
+
15
+ def initialize(params=Hash.new)
16
+ if params[:spatial_region] == "1"
17
+ @spatial_region = true
18
+ @start_lon = params[:start_lon].to_f
19
+ @start_lat = params[:start_lat].to_f
20
+ @end_lon = params[:end_lon].to_f
21
+ @end_lat = params[:end_lat].to_f
22
+
23
+ @start_lon=360+@start_lon if @start_lon < 0
24
+ @end_lon=360+@end_lon if @end_lon < 0
25
+
26
+ @start_lon, @end_lon = [@end_lon, @start_lon] if @start_lon > @end_lon
27
+ @start_lat, @end_lat = [@end_lat, @start_lat] if @start_lat > @end_lat
28
+
29
+ @window_start_lon = params[:window_start_lon].to_f
30
+ @window_start_lat = params[:window_start_lat].to_f
31
+ @window_end_lon = params[:window_end_lon].to_f
32
+ @window_end_lat = params[:window_end_lat].to_f
33
+
34
+ @window_start_lon=360+@window_start_lon if @window_start_lon < 0
35
+ @window_end_lon=360+@window_end_lon if @window_end_lon < 0
36
+
37
+ @window_start_lon, @window_end_lon = [0,360] if @window_start_lon > @window_end_lon
38
+ @window_start_lat, @window_end_lat = [-90,90] if @window_start_lat > @window_end_lat
39
+
40
+
41
+ @window_start_lon = @start_lon if @window_start_lon<@start_lon
42
+ @window_start_lat = @start_lat if @window_start_lat<@start_lat
43
+ @window_end_lon = @end_lon if @window_end_lon>@end_lon
44
+ @window_end_lat = @end_lat if @window_end_lat>@end_lat
45
+
46
+ end
47
+ if params[:time_region] == "1"
48
+ @starttime = Time.utc( params["starttime(1i)"], params["starttime(2i)"], params["starttime(3i)"], params["starttime(4i)"], params["starttime(5i)"] )
49
+ @endtime = Time.utc( params["endtime(1i)"], params["endtime(2i)"], params["endtime(3i)"], params["endtime(4i)"], params["endtime(5i)"] )
50
+ @time_region = true
51
+ end
52
+
53
+ if params[:zoomlevel]!=nil then
54
+ @zoomlevel=params[:zoomlevel]
55
+ else
56
+ @zoomlevel=1
57
+ end
58
+
59
+ if params[:oldzoomlevel]!=nil then
60
+ @oldzoomlevel=params[:oldzoomlevel]
61
+ else
62
+ @oldzoomlevel=1
63
+ end
64
+
65
+ if params[:center_x]!=nil then
66
+ @center_x=params[:center_x]
67
+ else
68
+ @center_x=136.0
69
+ end
70
+
71
+ if params[:center_y]!=nil then
72
+ @center_y=params[:center_y]
73
+ else
74
+ @center_y=37.0
75
+ end
76
+
77
+
78
+ @keywords = params[:keywords]
79
+ @keywords = nil if @keywords == ""
80
+ end
81
+
82
+ def querystring(area)
83
+ return nil unless keywords || spatial_region || time_region
84
+ #tables = ["variables v"]
85
+ tables = []
86
+ conditions = Array.new
87
+ sorts = Array.new
88
+
89
+ sorts.push "n.path"
90
+
91
+ if keywords
92
+ kcond = Array.new
93
+ keywords.split(" ").each{|key|
94
+ if (v=key.to_i).to_s == key || (v=key.to_f).to_s == key
95
+ kcond.push KeywordAttribute.format_value_search(v, :like, "k")
96
+ else
97
+ kcond.push "k.name like '%#{key}%' or k.value like '%#{key}%' "
98
+ end
99
+ kcond.push "v.path like '%#{key}%'"
100
+ }
101
+ kcond = kcond.join(" or ")
102
+ path = Variable.connection.adapter_name=="MySQL" ? "concat(d.path,'%')" : "d.path||'%'"
103
+ subquery =<<-EOF
104
+ (select distinct v.*
105
+ from nodes d, nodes v, keyword_attributes k
106
+ where v.node_type=#{Node::VARIABLE} and d.node_type=#{Node::DIRECTORY} and
107
+ ( (v.id=k.node_id and (#{kcond}))
108
+ or (v.path like #{path} and d.id=k.node_id and (#{kcond})))
109
+ ) as n
110
+ EOF
111
+ tables.push subquery
112
+ else
113
+ tables.push "nodes n"
114
+ end
115
+
116
+ conditions.push "n.node_type=#{Node::VARIABLE}"
117
+
118
+ tables.push "spatial_and_time_attributes st"
119
+
120
+ if time_region
121
+ conditions.push "n.starttime<='#{endtime.strftime(format)}' and v.endtime>='#{starttime.strftime(format)}'"
122
+ end
123
+
124
+ format = "%Y-%m-%d %H:%M:%S"
125
+
126
+ if area == "no_region"
127
+ if spatial_region
128
+ return "select * from nodes where null"
129
+ end
130
+ area_condition = "not exists (select * from spatial_and_time_attributes as st where st.node_id=n.id and (st.longitude_lb||st.longitude_rt||st.latitude_lb||st.latitude_rt))"
131
+ else
132
+
133
+ conditions.push "st.node_id=n.id"
134
+ area_condition ="not(st.node_id IS NULL)";
135
+ end
136
+
137
+ if time_region
138
+ area_condition += "and (st.starttime<='#{endtime.strftime(format)}' and st.endtime>='#{starttime.strftime(format)}')"
139
+ end
140
+
141
+ lon_width = 360*0.9
142
+ lat_width = 180*0.9
143
+ case area
144
+ when "points"
145
+ area_condition += " and (st.longitude_lb = st.longitude_rt)"
146
+ area_condition += " and (st.latitude_lb = st.latitude_rt)"
147
+
148
+ when "partial"
149
+ area_condition += " and ((abs(st.longitude_lb-st.longitude_rt)<#{lon_width} and not(st.longitude_lb=0 and st.longitude_rt=0 ) and not(st.longitude_lb = st.longitude_rt and st.latitude_lb = st.latitude_rt))"
150
+ area_condition += " or (abs(st.latitude_lb-st.latitude_rt)<#{lat_width} and not(st.latitude_lb=0 and st.latitude_rt=0 ) and not(st.longitude_lb = st.longitude_rt and st.latitude_lb = st.latitude_rt ))) "
151
+
152
+ when "global"
153
+ area_condition += " and abs(st.longitude_lb-st.longitude_rt)>=#{lon_width}"
154
+ area_condition += " and abs(st.latitude_lb-st.latitude_rt)>=#{lat_width}"
155
+
156
+ end
157
+
158
+ if spatial_region
159
+ slon=start_lon; slat=start_lat;
160
+ elon=end_lon; elat=end_lat;
161
+ slon=window_start_lon if start_lon<window_start_lon
162
+ slat=window_start_lat if start_lon<window_start_lat
163
+ elon=window_end_lon if end_lon>window_end_lon
164
+ elat=window_end_lat if end_lon<window_end_lat
165
+
166
+ area_condition+=" and st.longitude_lb <= #{elon} and st.longitude_rt >= #{slon}"
167
+ area_condition+=" and st.latitude_lb <= #{elat} and st.latitude_rt >= #{slat}"
168
+ # s="pow(s.longitude_lb+s.longitude_rt+(#{slon}*-1)+(#{elon}*-1),2)+"
169
+ # s+="pow(s.latitude_lb+s.latitude_rt+(#{slat}*-1)+(#{elat}*-1),2)"
170
+ s="(st.longitude_lb+st.longitude_rt+(#{slon}*-1)+(#{elon}*-1))*(st.longitude_lb+st.longitude_rt+(#{slon}*-1)+(#{elon}*-1))+"
171
+ s+="(st.latitude_lb+st.latitude_rt+(#{slat}*-1)+(#{elat}*-1))*(st.latitude_lb+st.latitude_rt+(#{slat}*-1)+(#{elat}*-1))"
172
+ sorts.push s
173
+ end
174
+
175
+ conditions.push area_condition
176
+
177
+
178
+ if Variable.connection.adapter_name == "PostgreSQL"
179
+ res = "select distinct on (n.path) n.* "
180
+ else
181
+ res = "select distinct n.* "
182
+ end
183
+ res += "from "
184
+ res += tables.join(", ")
185
+ res += " where "
186
+ res += conditions.join(" and ")
187
+ if sorts.size > 0
188
+ res += " order by "
189
+ res += sorts.join(",")
190
+ end
191
+ return res
192
+ end
193
+ end
@@ -0,0 +1,12 @@
1
+ class QueryHistory < ActiveRecord::Base
2
+
3
+ def self.new_setid
4
+ res = self.find_by_sql("select max(queryset_id)+1 as ans from query_histories");
5
+ if res.size>0 && res[0].ans then
6
+ return res[0].ans
7
+ else
8
+ return 1
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,48 @@
1
+ require "activerecord_gfdnavi"
2
+
3
+ class Results
4
+ attr_accessor :id, :keynames
5
+ def initialize(id)
6
+ @id=id
7
+ @keynames = Array.new
8
+ end
9
+
10
+ def get_keyname_list
11
+ if @id!=0 then
12
+ keylist=KeywordAttribute.find(:all,:select=>"keyword_attributes.name as kname,count(*) as cnt",:joins=>"JOIN cache_#{@id} ON variable_id=cache_#{@id}.vid",:group=>"keyword_attributes.name",:order=>"cnt DESC")
13
+ else
14
+ keylist=KeywordAttribute.find(:all,:select=>"keyword_attributes.name as kname,count(*) as cnt",:joins=>"JOIN variables ON variable_id=variables.id",:group=>"keyword_attributes.name",:order=>"cnt DESC")
15
+ end
16
+ return keylist
17
+ end
18
+
19
+ def get_path_list
20
+ if @id!=0 then
21
+ tables="(select v.* from variables v,cache_#{@id} c where v.id=c.vid)"
22
+ path=QueryHistory.find(@id).path
23
+ else
24
+ tables="variables"
25
+ path="/"
26
+ end
27
+ sql1=<<-EOM
28
+ select d2.path as dpath, count(v.id) as cnt
29
+ from directories d1,directories d2,#{tables} v
30
+ where d1.path = ?
31
+ and d2.parent_id = d1.id
32
+ and v.path like #{concat("d2.path","'%'")}
33
+ group by d2.path
34
+ order by cnt DESC
35
+ EOM
36
+ pathlist = Directory.find_by_sql [sql1,path]
37
+ return pathlist
38
+ end
39
+
40
+ def get_keyvalue_list(keyname)
41
+ if @id!=0 then
42
+ valuelist=KeywordAttribute.find(:all,:joins=>"JOIN cache_#{@id} ON variable_id=cache_#{@id}.vid",:select=>"value,num_value,count(*) as cnt",:conditions=>["keyword_attributes.name=?",keyname],:group=>"value")
43
+ else
44
+ valuelist=KeywordAttribute.find(:all,:joins=>"JOIN variables ON variable_id=variables.id",:select=>"value,num_value,count(*) as cnt",:conditions=>["keyword_attributes.name=?",keyname],:group=>"value")
45
+ end
46
+ return valuelist
47
+ end
48
+ end
@@ -0,0 +1,25 @@
1
+ class SignUpUser < ActiveRecord::Base
2
+
3
+
4
+ protected
5
+
6
+ before_create :crypt_password
7
+ def crypt_password
8
+ write_attribute("password", User.sha1(password))
9
+ end
10
+
11
+ def validate
12
+ if User.find(:first,:conditions=>["login=?",login])
13
+ errors.add(:login, "is already being used")
14
+ end
15
+ end
16
+
17
+ validates_length_of :login, :within => 3..10
18
+ validates_length_of :password, :within => 5..40
19
+ validates_presence_of :login, :password, :full_name, :email_address, :affiliation
20
+ validates_presence_of :password_confirmation, :on => :create
21
+ validates_confirmation_of :password, :on => :create
22
+ validates_uniqueness_of :login
23
+ validates_format_of :email_address, :with => /^(\w|-)+@(\w|-)+\.(\w|-)+/, :message => "email address is invalid"
24
+
25
+ end