gfdnavi 1.3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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