Opened 4 years ago

Closed 7 months ago

Last modified 7 months ago

#286 closed feature (fixed)

RasqlServlet - web interface for rasql queries

Reported by: dmisev Owned by: bphamhuu
Priority: major Milestone: 9.3
Component: petascope Version: development
Keywords: Cc: pbaumann
Complexity: Medium

Description

We need a RasqlServlet? in petascope which would expose rasql on the web.

The WCPSServer can be mostly copied, special care is needed regarding user credentials however.

Change History (20)

comment:1 Changed 4 years ago by pbaumann

first idea for a GET/KVP binding:

...?user=xxx&password=xxx&query=select...

with a multipart return type.

comment:2 Changed 4 years ago by abeccati

I'd say to keep it out of petascope since its on a different level: petascope implements OWS-based endpoints and WCPS should not be applicable for direct rasdaman query.

Why not have it as a separate servlet into applications which produces its own deployable war?

This will also improve on endpoints consolidation for petascope

comment:3 Changed 4 years ago by dmisev

That doesn't sound good to me

  • it's not worth maintaining a separate project that would be more or less one servlet of 100 lines of code
  • we can easily reuse a lot of established functionality in petascope, separate project would mean a lot of code duplication

This endpoint would be separate from WCPS and the rest, could be available at /petascope/rasql or /petascope/rasdaman, so I don't see interference.

comment:4 Changed 4 years ago by pbaumann

...and the insert/update/delte functionality is guarded by the login (still, we might have a configuration parameter which disables it by default, for security).

comment:5 follow-up: Changed 4 years ago by abeccati

Code duplication, if any, should then be factored out to a jar to be put into tomcat libs so that all deployed servlets can use it. Can we make a quick estimate on that?

More importantly, we have to keep clear scope definition and separation of functionality if we aim at a clean and maintainable design. I just not see factoring in that feature to fit with petascope's aim of being a WCS/WCPS implementation.

Same reason here: http://rasdaman.eecs.jacobs-university.de/trac/rasdaman/ticket/270

comment:6 in reply to: ↑ 5 Changed 4 years ago by dmisev

Replying to abeccati:

I just not see factoring in that feature to fit with petascope's aim of being a WCS/WCPS implementation.

When did we define that aim, sounds a bit restricting? So far I thought of petascope as a web-frontend of rasdaman (be it via OGC standards or something else).

The RasqlServlet? will be around 100 lines or so. A separate war will require

  • refactor common functionality between the two projects into a separate jar (third project)
  • set up Makefiles for building
  • probably introduce new configuration files

The differences between separate project vs. within petascope implementation

  • servlet available at /rasql vs /petascope/rasql (or similar), which to the end user makes no difference whatsoever
  • separate project linked via common jar, vs. separate package (petascope.rasql) using directly petascope code, again making no difference

comment:7 Changed 4 years ago by abeccati

  • Milestone changed from 8.4 to Future

comment:8 Changed 4 years ago by abeccati

  • Type changed from enhancement to feature

comment:9 Changed 4 years ago by dmisev

  • Complexity set to Very Hard

I submitted an initial version of this and will most likely work some more on it.

comment:10 Changed 4 years ago by dmisev

  • Complexity changed from Very Hard to Hard

comment:11 Changed 4 years ago by dmisev

Initial version provided in changeset:f0e48ec

TODO: uploading data, for doing insert and partial updates via the web interface.

TODO2: add tests to source:systemtest/testcases_petascope

Last edited 4 years ago by dmisev (previous) (diff)

comment:12 Changed 18 months ago by dmisev

  • Cc changed from pbaumann,abeccati to pbaumann, abeccati
  • Resolution set to fixed
  • Status changed from new to closed

comment:13 Changed 18 months ago by pbaumann

where can I find material for documentation?

comment:14 Changed 18 months ago by dmisev

  • Milestone changed from Future to 9.1.x
  • Resolution fixed deleted
  • Status changed from closed to reopened

comment:15 Changed 18 months ago by dmisev

  • Owner changed from abeccati to vmerticariu
  • Status changed from reopened to assigned

I think Vlad worked last on it, and could provide information for the documentation.

comment:16 Changed 8 months ago by bphamhuu

  • Complexity changed from Hard to Medium
  • Milestone changed from 9.1.x to 9.3
  • Owner changed from vmerticariu to bphamhuu
  • Version changed from 8.3 to development

at the point when Dimitar closed this ticket, there is a RasqlServlet? class in petascope which I see the code can support to return the data (text/binary) from Rasql Query, so we need to add some test cases in systemtest for this servlet

(this servlet is documented in rasql query guide page 113), however the example is not correct, it should be:

domain:[port]/rasdaman/rasql?query

http://www.acme.com/rasdaman?
query=select%20rgb.red+rgb.green%20from%20rgb
&username=rasguest
&password=rasguest

comment:17 Changed 8 months ago by pbaumann

  • Cc abeccati removed

comment:18 follow-up: Changed 8 months ago by pbaumann

good idea to provide solid tests!
BTW, I am still lacking documentation input.

comment:19 in reply to: ↑ 18 Changed 7 months ago by bphamhuu

  • Resolution set to fixed
  • Status changed from assigned to closed

Replying to pbaumann:

good idea to provide solid tests!
BTW, I am still lacking documentation input.

I added the documentation for Rasql Servlet here http://rasdaman.org/wiki/Clients#Rasqlquerylanguageaccess (with the submitted patch, it can support to upload file to collection)

comment:20 Changed 7 months ago by pbaumann

excellent, well done!

Note: See TracTickets for help on using tickets.