Skip to content
  1. Apr 23, 2018
  2. Apr 09, 2018
  3. Mar 07, 2018
    • gmantele's avatar
      Fix UDF parsing from the configuration file. · 96df1d5a
      gmantele authored
      The end of the description of a UDF was not detected when this UDF was followed
      by another UDF definition. This was due to an incorrect double quote escape in
      the regular expression of a UDF's definition.
      96df1d5a
  4. Feb 26, 2018
    • gmantele's avatar
      [UWS] Add 3 job destruction policies: ALWAYS_DELETE (default), ARCHIVE_ON_DATE · f3954c71
      gmantele authored
      and ALWAYS_ARCHIVE.
      
      When archiving a job, its former phase is stored in jobInfo under the name
      'oldPhase' if no jobInfo is already set.
      
      Archiving a job means that all input files and results are destroyed ; the
      error summary and jobInfo (even if it is a file) are kept.
      
      Each archive operation ends with a log message ; in ERROR if failed or in
      INFO if successful.
      
      This commit also includes the following things:
      
          - reformat on 80 characters width the Javadoc of all modified classes
      
      	- fix a bug with the phase transitions: since it is not possible any more
      	  to go from PENDING to EXECUTING directly, UWSJob.start(...) must first
      	  ensure to be on QUEUED phase. This bug has also been fixed in TAPJob.
      	  Similarly, before going into ARCHIVED phase the job must be set into
      	  ABORTED phase if not already in a final phase.
      f3954c71
    • gmantele's avatar
      [UWS,TAP] Add the property 'creationTime' to a UWS (and so TAP as well) job. · a8d98f64
      gmantele authored
      This property is displayed in the XML and JSON serialization of a job item.
      It is also backuped and restored from a UWS backup file.
      
      /!\ WARNING: Small modification of the API! Since creationTime must be
                   set by the UWS service at creation of a job, this date must also
                   be imported at backup restoration. Hence the modification of the
                   interface uws.service.UWSFactory and its implementations
                   (particularly tap.AbstractTAPFactory). Similarly the class
                   uws.job.UWSJob and tap.job.TAPJob have underwent exactly the same
                   modification in one of their constructors.
      
      This commit also adds the new optional jobRef items: creationTime, runID and
      ownerID in the XML and JSON serializations.
      a8d98f64
    • gmantele's avatar
      [TAP] Add an optional parameter to a UDF property: the UDF description. · f6a089c1
      gmantele authored
      Although the Java code allowed the specification of a description of a User
      Defined Function, it was not possible to set one in the UDFs listed in the
      configuration file.
      f6a089c1
  5. Feb 22, 2018
  6. Feb 08, 2018
  7. Jan 31, 2018
  8. Jan 12, 2018
  9. Jan 11, 2018
  10. Nov 16, 2017
  11. Sep 27, 2017
    • gmantele's avatar
      [TAP,UWS] Add a protocol version number for UWS and TAP: · 70dc3a14
      gmantele authored
        - uws.service.UWS.VERSION  (static final)
        - tap.resource.TAP.VERSION (static final)
      
      Dealing with several protocol versions in the same time is quite difficult and
      may significantly alter the libraries API in an unstable way. That's why, for
      the TAP and UWS libraries, only one version is implemented (i.e. the last one).
      To use a older version of the protocol, one must use an older version of the
      corresponding library.
      
      About the versioning of the ADQL standard, there is no need to set any version
      number somewhere because a different ADQL version implies a different grammar.
      It means that a different parser is required for each ADQL version. For the
      moment, there is only one version, so no need to change anything to the ADQL
      library about ADQL version. Later, ADQLParser should become an interface and
      a factory will have to be used in order to get the parser corresponding to the
      desired ADQL version.
      70dc3a14
  12. Sep 26, 2017
    • gmantele's avatar
      [TAP] Auto-detect the RegTAP datamodel from the schemas and tables declared · 8102b083
      gmantele authored
      in TAP_SCHEMA.
      
      RegTAP is detected successfully if the schema 'rr' exists (case sensitive)
      and contains at least the following tables (names also case sensitive):
      	- capability
      	- interface
      	- intf_param
      	- relationship
      	- res_date
      	- res_detail
      	- res_role
      	- res_schema
      	- res_subject
      	- res_table
      	- resource
      	- table_column
      	- validation
      
      The table name can be prefixed by 'rr' (case sensitive) or not. For instance:
      'rr.capability' and 'capability' are both detected successfully.
      
      All these constraints (including the case sensitive one) are based on the
      requirements of the RegTAP-1.0 standard document. They are set in order
      to not declare the RegTAP DM by accident AND to provide a first low
      validation of the RegTAP schema and tables. Low validation because
      columns (as well as datatype, utypes, indices and UDF functions) are
      never checked.
      
      This commit resolves the GitHub issue #51
      8102b083
    • gmantele's avatar
    • gmantele's avatar
      [TAP] The additional table TAP_SCHEMA.coossys must not be be returned as a · 93c36a09
      gmantele authored
      standard table. The same for the additional column
      TAP_SCHEMA.columns.coosys_id.
      93c36a09
  13. Sep 25, 2017
  14. Sep 15, 2017
    • gmantele's avatar
      [UWS,TAP] Allow the specification of a custom logger in the configuration file. · 162a8748
      gmantele authored
      This commit resolves partially the issue #28
      
      Ideally, there should be an implementation of UWSLog and TAPLog working with
      Log4j and another for SLF4J (and eventually for other logging mechanism).
      Additionally, an implementation storing log messages in database would be
      interesting. All these ideas may be implemented in UWSLib and TAPLib in a
      future version.
      162a8748
  15. Sep 11, 2017
  16. Aug 24, 2017
    • gmantele's avatar
      [TAP] Fix the ObsCore 1.1's IVO-ID. · dba06402
      gmantele authored
      The previous fix was made against the ObsCore-DM 1.1 because the given
      IVO-ID was rejected by EuroVO registry. Now that EuroVO registry has
      fixed its IVO-ID rule, the IVO-ID of ObsCore 1.1 is accepted.
      Hence this commit.
      dba06402
  17. Aug 02, 2017
    • gmantele's avatar
      [ADQL,TAP] Basic MySQL support. · cf721ff2
      gmantele authored
      On the contrary to other DBMS, MySQL supports schemas, but as databases.
      Which means that JDBCConnection gets from the JDBC driver that MySQL does
      not support schemas and so it tries to access TAP_SCHEMA tables with a
      'TAP_SCHEMA_' prefix instead of 'TAP_SCHEMA.' one. Since MySQL does
      behave like it supports schemas, JDBCConnection.supportsSchema must be
      set to 'true' if the DBMS is MySQL.
      
      Besides, since no schemas are returned by the JDBC driver
      (cf DatabaseMetadata.listSchema(...)), the function
      JDBCConnection.isSchemaExisting(String, DatabaseMetaData) must always assume
      that the specified schema exists if the DBMS is MySQL. This is particularly
      important when the existence of 'TAP_UPLOAD' must be checked, because if the
      function returns 'false' the library will attempt to create the database/schema
      'TAP_UPLOAD' and will obviously fail due to a lack of permissions. Of course,
      it means that the TAP implementor must create manually the schema/database
      'TAP_UPLOAD' him-/her-self.
      
      The second particularity of MySQL is the quote character for identifiers.
      It is a back-quote (`) instead of a double quote ("). To reflect this
      difference, JDBCTranslator.appendIdentifier(...) has been overwritten in a new
      JDBCTranslator extension: MySQLTranslator.
      
      The translation of all SQL types and mathematical functions have been adapted to
      MySQL according to the online documentation. Few tests have been done locally
      with a tiny database. This seems to work but further testing should be
      performed in order to ensure the stability of this implementation.
      cf721ff2
  18. Jul 05, 2017
  19. Jul 04, 2017
  20. Jun 19, 2017
  21. Apr 25, 2017
  22. Apr 20, 2017
  23. Mar 29, 2017
  24. Mar 16, 2017
  25. Mar 10, 2017
    • gmantele's avatar
      [TAP] Fix handling of bad uploaded files: · 77132014
      gmantele authored
      - empty file
      - not a valid VOTable document
      
      In such cases, the following error message is returned:
        "The input file is not a valid VOTable document!"
      A cause with more detais (especially the line and column numbers)
      may be appended.
      
      Cases handled with no error:
      
        - If the VOTable document has no rows, an empty table
          is uploaded. No error has to be returned.
      
        - If a row has a different number of columns than the number
          of declared FIELDs, additional values are ignored and missing
          values are replaced by NULL. This is actually nicely handled by
          STIL.
      77132014
    • gmantele's avatar
      [TAP] Use a more standard way to get the DBMS name. · db34b35d
      gmantele authored
      Two comments:
      
      - JDBCConnection.getDBMSName(String url) is now deprecated ; it may disappear
        in a next version of the ADQLLibrary.
      - In case the DBMS name can not be retrieved (generally because of an
        incomplete JDBC driver implementation), NULL will be returned.
      db34b35d
    • gmantele's avatar
      [ADQL] Remove unnecessary ending semicolons from SQL queries. · 63cacfa4
      gmantele authored
      Few useless casts have also been removed.
      63cacfa4
  26. Mar 09, 2017
    • gmantele's avatar
      [TAP] Fix incorrect abortion handling in SYNChronous mode. · 5baff84e
      gmantele authored
      It is also now recommended to make DBConnection.executeQuery(ADQLQuery)
      return NULL if the query has been aborted (indeed, the DBConnection is
      the only one that can reliably know that fact). JDBCConnection has been
      adapted consequently.
      5baff84e
    • gmantele's avatar
      [TAP] Adapt the JUnit class testing getFile(...), · 36b4a8bf
      gmantele authored
      apply a quick space replacement (by %20) for few URIs of the configuration file
      and remove duplicated entry (encoding) from the Gradle build script.
      
      A special test has also been added in getFile(...) in order to deliver
      a clear error message for users using a former version with URIs in their
      configuration file (only for file_root_path and metadata_file).
      36b4a8bf