Class ResourceRegistryQueryTemplateClientImpl

java.lang.Object
org.gcube.informationsystem.resourceregistry.api.request.BaseRequestInfo
org.gcube.informationsystem.resourceregistry.queries.templates.ResourceRegistryQueryTemplateClientImpl
All Implemented Interfaces:
org.gcube.informationsystem.resourceregistry.api.request.RequestInfo, ResourceRegistryQueryTemplateClient

public class ResourceRegistryQueryTemplateClientImpl extends org.gcube.informationsystem.resourceregistry.api.request.BaseRequestInfo implements ResourceRegistryQueryTemplateClient
Default implementation of ResourceRegistryQueryTemplateClient, backed by HTTP calls to the Resource Registry service. Unlike the sibling Context/Schema clients, this implementation keeps no local cache: every operation is a direct round-trip to the server.
Author:
Luca Frosini (ISTI - CNR)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final String
    The base address of the Resource Registry Query Template service
    protected Map<String,String>
    Additional HTTP headers to be included in requests
    protected boolean
    Whether run(java.lang.String) executes a query template's underlying query polymorphically (including subtypes).

    Fields inherited from class org.gcube.informationsystem.resourceregistry.api.request.BaseRequestInfo

    allMeta, contextsPolicy, hierarchicalMode, includeMeta, limit, membershipScope, offset

    Fields inherited from interface org.gcube.informationsystem.resourceregistry.api.request.RequestInfo

    DEFAULT_LIMIT, DEFAULT_OFFSET, UNBOUNDED_LIMIT
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new ResourceRegistryQueryTemplateClientImpl instance.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    addHeader(String name, boolean value)
    Adds a custom HTTP header to be included in requests.
    void
    addHeader(String name, String value)
    Adds a custom HTTP header to be included in requests.
    List<org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate>
    all()
    Retrieves all query templates from the Resource Registry.
    createOrUpdate(String queryTemplate)
    Creates a new query template, or updates the existing one with the same name (versioned upsert), from its JSON representation, which is sent as it is.
    org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate
    createOrUpdate(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate)
    Creates a new query template, or updates the existing one with the same name (versioned upsert).
    boolean
    delete(String queryTemplateName)
    Deletes an existing query template from the Resource Registry by its name.
    boolean
    delete(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate)
    Deletes an existing query template from the Resource Registry.
    boolean
    exist(String queryTemplateName)
    Checks if a query template exists in the Resource Registry using template name.
    boolean
    exist(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate)
    Checks if a query template exists in the Resource Registry.
    protected org.gcube.common.gxhttp.request.GXHTTPStringRequest
    Creates and configures a new HTTP request with authorization headers and custom headers.
    boolean
    Whether ResourceRegistryQueryTemplateClient.run(java.lang.String) executes a query template's underlying query polymorphically (including subtypes).
    Executes a JSON Query against the Query Template collection itself (e.g. by name), as opposed to ResourceRegistryQueryTemplateClient.run(String), which executes a named template's own stored query.
    List<org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate>
    jsonQuery(org.gcube.com.fasterxml.jackson.databind.JsonNode jsonNode)
    Executes a JSON Query against the Query Template collection itself and deserializes the matching definitions.
    List<org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate>
    query(String query)
    Executes a JSON Query against the Query Template collection itself and returns the matching definitions.
    org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate
    read(String queryTemplateName)
    Reads an existing query template from the Resource Registry by its name.
    org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate
    read(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate)
    Reads an existing query template from the Resource Registry using a provided template object.
    readAsString(String queryTemplateName)
    Reads an existing query template from the Resource Registry as JSON string.
    <E extends org.gcube.informationsystem.model.reference.ERElement>
    List<E>
    run(String name)
    Executes the named query template with no parameters.
    run(String name, String params)
    Executes the named query template, substituting the given JSON parameter values into its template variables.
    <E extends org.gcube.informationsystem.model.reference.ERElement>
    List<E>
    run(String name, org.gcube.com.fasterxml.jackson.databind.JsonNode jsonNode)
    Executes the named query template, substituting the given parameter values.
    <E extends org.gcube.informationsystem.model.reference.ERElement>
    List<E>
    run(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate)
    Executes the query template with no parameters; the name is taken from the given QueryTemplate.
    <E extends org.gcube.informationsystem.model.reference.ERElement>
    List<E>
    run(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate, org.gcube.com.fasterxml.jackson.databind.JsonNode jsonNode)
    Executes the query template, substituting the given parameter values; the name is taken from the given QueryTemplate.
    Executes the named query template with no parameters and returns the results as a JSON array string.
    void
    setPolymorphic(boolean polymorphic)
    Configures whether ResourceRegistryQueryTemplateClient.run(java.lang.String) executes a query template's underlying query polymorphically (including subtypes).

    Methods inherited from class org.gcube.informationsystem.resourceregistry.api.request.BaseRequestInfo

    allMeta, getContextsPolicy, getLimit, getMembershipScope, getOffset, includeMeta, isHierarchicalMode, setAllMeta, setContextsPolicy, setHierarchicalMode, setIncludeMeta, setLimit, setMembershipScope, setOffset

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.gcube.informationsystem.resourceregistry.api.request.RequestInfo

    allMeta, getContextsPolicy, getLimit, getMembershipScope, getOffset, includeMeta, isHierarchicalMode, serverResponses, setAllMeta, setContextsPolicy, setHierarchicalMode, setIncludeMeta, setLimit, setMembershipScope, setOffset

    Methods inherited from interface org.gcube.informationsystem.resourceregistry.queries.templates.ResourceRegistryQueryTemplateClient

    list
  • Field Details

    • address

      protected final String address
      The base address of the Resource Registry Query Template service
    • headers

      protected Map<String,String> headers
      Additional HTTP headers to be included in requests
    • polymorphic

      protected boolean polymorphic
      Whether run(java.lang.String) executes a query template's underlying query polymorphically (including subtypes).
  • Constructor Details

    • ResourceRegistryQueryTemplateClientImpl

      public ResourceRegistryQueryTemplateClientImpl(String address)
      Creates a new ResourceRegistryQueryTemplateClientImpl instance.
      Parameters:
      address - The base address of the Resource Registry Query Template service
  • Method Details

    • addHeader

      public void addHeader(String name, String value)
      Adds a custom HTTP header to be included in requests.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses().

      Specified by:
      addHeader in interface ResourceRegistryQueryTemplateClient
      Parameters:
      name - Header name
      value - Header value
    • addHeader

      public void addHeader(String name, boolean value)
      Adds a custom HTTP header to be included in requests.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses().

      Specified by:
      addHeader in interface ResourceRegistryQueryTemplateClient
      Parameters:
      name - Header name
      value - boolean value
    • getGXHTTPStringRequest

      protected org.gcube.common.gxhttp.request.GXHTTPStringRequest getGXHTTPStringRequest()
      Creates and configures a new HTTP request with authorization headers and custom headers.
      Returns:
      A configured GXHTTPStringRequest instance ready for use
    • isPolymorphic

      public boolean isPolymorphic()
      Whether ResourceRegistryQueryTemplateClient.run(java.lang.String) executes a query template's underlying query polymorphically (including subtypes). Default: true.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses().

      Specified by:
      isPolymorphic in interface ResourceRegistryQueryTemplateClient
      Returns:
      the currently configured polymorphic flag
    • setPolymorphic

      public void setPolymorphic(boolean polymorphic)
      Configures whether ResourceRegistryQueryTemplateClient.run(java.lang.String) executes a query template's underlying query polymorphically (including subtypes).

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses().

      Specified by:
      setPolymorphic in interface ResourceRegistryQueryTemplateClient
      Parameters:
      polymorphic - true to include subtypes (default), false for exact type match only
    • all

      public List<org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate> all() throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Retrieves all query templates from the Resource Registry.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(), including RFC 8288 pagination Link headers and X-Warning. Request options configured via ResourceRegistryRequestOptions may specify pagination (limit, offset) and metadataPolicy.

      Specified by:
      all in interface ResourceRegistryQueryTemplateClient
      Returns:
      List of all query templates accessible to the current user, or an empty list if none exist
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - If an error occurs during query template retrieval
    • createOrUpdate

      public org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate createOrUpdate(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Creates a new query template, or updates the existing one with the same name (versioned upsert). The name is taken from the given QueryTemplate, whose version and changelog are sent as they are.

      The server creates the template when the name is absent, updates it when the submitted version is higher than the persisted one, and leaves it untouched when the same version carries an identical definition. Every successful outcome returns the persisted representation.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Request options configured via ResourceRegistryRequestOptions may specify metadataPolicy.

      This method is a type-safe wrapper that delegates to createOrUpdate(String) for implementation details.
      Specified by:
      createOrUpdate in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplate - the query template to create or update; must not be null and must have a non-blank name
      Returns:
      the created/updated query template, as returned by the server
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateAlreadyPresentException - if the submitted definition conflicts with the persisted one (same version with a different definition, lower or insufficiently advanced version, altered changelog history, different id)
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the template definition is invalid or the operation fails
    • createOrUpdate

      public String createOrUpdate(String queryTemplate) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Creates a new query template, or updates the existing one with the same name (versioned upsert), from its JSON representation, which is sent as it is. The name is taken from the JSON name property. See ResourceRegistryQueryTemplateClient.createOrUpdate(QueryTemplate) for the outcomes.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Request options configured via ResourceRegistryRequestOptions may specify metadataPolicy.

      Specified by:
      createOrUpdate in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplate - JSON representation of the query template to create or update; must not be null or blank
      Returns:
      JSON representation of the created/updated query template, as returned by the server
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateAlreadyPresentException - if the submitted definition conflicts with the persisted one (same version with a different definition, lower or insufficiently advanced version, altered changelog history, different id)
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the template definition is invalid or the operation fails
    • exist

      public boolean exist(String queryTemplateName) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Checks if a query template exists in the Resource Registry using template name.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses().

      Specified by:
      exist in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplateName - The name of the query template to check for existence; must not be null or blank
      Returns:
      true if the query template exists and is accessible, false if not found
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - If an error occurs during the existence check
    • exist

      public boolean exist(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate) throws org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Checks if a query template exists in the Resource Registry.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses().

      This method is a type-safe wrapper that delegates to exist(String) for implementation details.
      Specified by:
      exist in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplate - The query template to check for existence; must not be null and must have a valid name
      Returns:
      true if the query template exists and is accessible, false if not found
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - If an error occurs during the existence check
    • read

      public org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate read(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Reads an existing query template from the Resource Registry using a provided template object.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Request options configured via ResourceRegistryRequestOptions may specify metadataPolicy.

      This method is a type-safe wrapper that delegates to read(String) for implementation details.
      Specified by:
      read in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplate - Template object containing at least the name; must not be null
      Returns:
      The complete query template from the Resource Registry
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - If no query template is found with the specified name
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - If an error occurs during template retrieval
    • read

      public org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate read(String queryTemplateName) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Reads an existing query template from the Resource Registry by its name.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(), including canonical Content-Location, Link: rel="collection", and X-Warning. Request options configured via ResourceRegistryRequestOptions may specify metadataPolicy.

      This method is a type-safe wrapper that delegates to readAsString(String) for implementation details.
      Specified by:
      read in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplateName - The name of the query template to read; must not be null or blank
      Returns:
      The complete query template from the Resource Registry
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - If no query template is found with the specified name
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - If an error occurs during template retrieval
    • readAsString

      public String readAsString(String queryTemplateName) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Reads an existing query template from the Resource Registry as JSON string.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(), including canonical Content-Location, Link: rel="collection", and X-Warning. Request options configured via ResourceRegistryRequestOptions may specify metadataPolicy.

      Specified by:
      readAsString in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplateName - The name of the query template to read; must not be null or blank
      Returns:
      JSON representation of the complete query template from the Resource Registry
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - If no query template is found with the specified name
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - If an error occurs during template retrieval
    • runGetString

      public String runGetString(String name) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes the named query template with no parameters and returns the results as a JSON array string.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Client options and ResourceRegistryRequestOptions configure polymorphic, hierarchicalMode, contextsPolicy, membershipScope, metadataPolicy, limit, and offset.

      This method is a convenience wrapper that delegates to run(String, String) with empty parameters for implementation details.
      Specified by:
      runGetString in interface ResourceRegistryQueryTemplateClient
      Parameters:
      name - the name of the query template to execute; must not be null or blank
      Returns:
      JSON array string containing the query results, or empty array string "[]" if no results match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - if no query template with the given name exists
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the execution fails
    • run

      public <E extends org.gcube.informationsystem.model.reference.ERElement> List<E> run(String name) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes the named query template with no parameters. See ResourceRegistryQueryTemplateClient.runGetString(String) for the underlying contract.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Client options and ResourceRegistryRequestOptions configure polymorphic, hierarchicalMode, contextsPolicy, membershipScope, metadataPolicy, limit, and offset.

      This method is a type-safe wrapper that delegates to runGetString(String) for implementation details.
      Specified by:
      run in interface ResourceRegistryQueryTemplateClient
      Type Parameters:
      E - the expected Information System element type
      Parameters:
      name - the name of the query template to execute; must not be null or blank
      Returns:
      the query results, deserialized, or an empty list if no results match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - if no query template with the given name exists
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the execution fails
    • run

      public <E extends org.gcube.informationsystem.model.reference.ERElement> List<E> run(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes the query template with no parameters; the name is taken from the given QueryTemplate. See ResourceRegistryQueryTemplateClient.runGetString(String) for the underlying contract.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Client options and ResourceRegistryRequestOptions configure polymorphic, hierarchicalMode, contextsPolicy, membershipScope, metadataPolicy, limit, and offset.

      This method is a type-safe wrapper that delegates to run(String) for implementation details.
      Specified by:
      run in interface ResourceRegistryQueryTemplateClient
      Type Parameters:
      E - the expected Information System element type
      Parameters:
      queryTemplate - the query template to execute (only its name is used); must not be null
      Returns:
      the query results, deserialized, or an empty list if no results match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - if no query template with the given name exists
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the execution fails
    • run

      public String run(String name, String params) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes the named query template, substituting the given JSON parameter values into its template variables. See ResourceRegistryQueryTemplateClient.runGetString(String) for the underlying contract.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Client options and ResourceRegistryRequestOptions configure polymorphic, hierarchicalMode, contextsPolicy, membershipScope, metadataPolicy, limit, and offset.

      Specified by:
      run in interface ResourceRegistryQueryTemplateClient
      Parameters:
      name - the name of the query template to execute; must not be null or blank
      params - JSON object with parameter values for template substitution, or null/empty for defaults; parameters omitted fall back to their declared default value, if any
      Returns:
      JSON array string containing the query results, or empty array string "[]" if no results match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - if no query template with the given name exists
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the execution fails
    • run

      public <E extends org.gcube.informationsystem.model.reference.ERElement> List<E> run(String name, org.gcube.com.fasterxml.jackson.databind.JsonNode jsonNode) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes the named query template, substituting the given parameter values. See ResourceRegistryQueryTemplateClient.run(String, String) for the underlying contract.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Client options and ResourceRegistryRequestOptions configure polymorphic, hierarchicalMode, contextsPolicy, membershipScope, metadataPolicy, limit, and offset.

      This method is a type-safe wrapper that delegates to run(String, String) for implementation details.
      Specified by:
      run in interface ResourceRegistryQueryTemplateClient
      Type Parameters:
      E - the expected Information System element type
      Parameters:
      name - the name of the query template to execute; must not be null or blank
      jsonNode - parameter values for template substitution, or null for defaults
      Returns:
      the query results, deserialized, or an empty list if no results match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - if no query template with the given name exists
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the execution fails
    • run

      public <E extends org.gcube.informationsystem.model.reference.ERElement> List<E> run(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate, org.gcube.com.fasterxml.jackson.databind.JsonNode jsonNode) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes the query template, substituting the given parameter values; the name is taken from the given QueryTemplate. See ResourceRegistryQueryTemplateClient.run(String, String) for the underlying contract.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Client options and ResourceRegistryRequestOptions configure polymorphic, hierarchicalMode, contextsPolicy, membershipScope, metadataPolicy, limit, and offset.

      This method is a type-safe wrapper that delegates to run(String, JsonNode) for implementation details.
      Specified by:
      run in interface ResourceRegistryQueryTemplateClient
      Type Parameters:
      E - the expected Information System element type
      Parameters:
      queryTemplate - the query template to execute (only its name is used); must not be null
      jsonNode - parameter values for template substitution, or null for defaults
      Returns:
      the query results, deserialized, or an empty list if no results match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - if no query template with the given name exists
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the execution fails
    • delete

      public boolean delete(org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate queryTemplate) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Deletes an existing query template from the Resource Registry.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses().

      This method is a type-safe wrapper that delegates to delete(String) for implementation details.
      Specified by:
      delete in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplate - The query template to delete (must have a valid name); must not be null
      Returns:
      true if the query template was successfully deleted
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - If no query template is found with the specified name
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - If an error occurs during template deletion
    • delete

      public boolean delete(String queryTemplateName) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Deletes an existing query template from the Resource Registry by its name.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses().

      Specified by:
      delete in interface ResourceRegistryQueryTemplateClient
      Parameters:
      queryTemplateName - The name of the query template to delete; must not be null or blank
      Returns:
      true if the query template was successfully deleted
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.templates.QueryTemplateNotFoundException - If no query template is found with the specified name
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - If an error occurs during template deletion
    • jsonQuery

      public String jsonQuery(String query) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes a JSON Query against the Query Template collection itself (e.g. by name), as opposed to ResourceRegistryQueryTemplateClient.run(String), which executes a named template's own stored query.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Request options configured via ResourceRegistryRequestOptions may specify pagination (limit, offset) and metadataPolicy.

      Specified by:
      jsonQuery in interface ResourceRegistryQueryTemplateClient
      Parameters:
      query - JSON object describing the Query Template structure to search for; must not be null or blank
      Returns:
      JSON array string of matching query template definitions, or empty array string "[]" if none match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException - if the query syntax is invalid
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the lookup fails
    • jsonQuery

      public List<org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate> jsonQuery(org.gcube.com.fasterxml.jackson.databind.JsonNode jsonNode) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes a JSON Query against the Query Template collection itself and deserializes the matching definitions. See ResourceRegistryQueryTemplateClient.jsonQuery(String) for the underlying contract.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Request options configured via ResourceRegistryRequestOptions may specify pagination (limit, offset) and metadataPolicy.

      This method is a type-safe wrapper that delegates to jsonQuery(String) for implementation details.
      Specified by:
      jsonQuery in interface ResourceRegistryQueryTemplateClient
      Parameters:
      jsonNode - JsonNode describing the Query Template structure to search for; must not be null
      Returns:
      the matching query template definitions, or an empty list if none match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException - if the query syntax is invalid
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the lookup fails
    • query

      public List<org.gcube.informationsystem.queries.templates.reference.entities.QueryTemplate> query(String query) throws org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException, org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException
      Executes a JSON Query against the Query Template collection itself and returns the matching definitions.

      Convenience alias delegating to ResourceRegistryQueryTemplateClient.jsonQuery(String) followed by deserialization to a list of QueryTemplate entities.

      Invocation-specific options and immutable response metadata are available through RequestInfo.serverResponses(). Request options configured via ResourceRegistryRequestOptions may specify pagination (limit, offset) and metadataPolicy.

      Specified by:
      query in interface ResourceRegistryQueryTemplateClient
      Parameters:
      query - JSON Query-By-Example string describing the Query Template structure to search for; must not be null or blank
      Returns:
      a list of matching query templates, or an empty list if no query templates match
      Throws:
      org.gcube.informationsystem.resourceregistry.api.exceptions.queries.InvalidQueryException - if the query syntax is invalid
      org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException - if the lookup fails or an error occurs during retrieval