You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

754 lines
41 KiB

/*==============================================================================
Copyright (c) 2003-2005 UGS Corporation
Unpublished - All Rights Reserved
==============================================================================*/
/**
@file
This file contains Query ITK for general public.
*/
/* */
#ifndef QRY_H
#define QRY_H
#include <unidefs.h>
#include <property/propdesc.h>
#include <pom/pom/pom_tokens.h>
#include <qry/libqry_exports.h>
/**
@defgroup QRY Query
The query ITK module provides user methods to ask and set query attributes,
find a specific query with a specified name, find all queries in the database,
ask for a list of user entries of a query, execute a query, set query search mode,
and set query's display name mode.
@warning The constants defined below specify the size of variables.
Do not write more than this number of bytes into the buffers.
<b>Common Return Values</b>
<br/>#QRY_invalid_query - Specified tag is not that of a saved query object.
<br/>#QRY_invalid_search_domain - Specified search domain is not valid.
@{
*/
/**
Define the symbol QRY_puid which is an attribute type supported in saved query clauses.
*/
#define QRY_puid (POM_MAX_type_token + 3)
typedef enum QRY_domain_e {
QRY_DOMAIN_LOCAL,
QRY_DOMAIN_REMOTE
/** @if DOX_IGNORE
QRY_DOMAIN_LOCAL_TYPE
@endif */
} QRY_domain_t;
typedef enum QRY_where_run_e {
QRY_RUN_BY_TC, /**< A standard query */
QRY_RUN_BY_USER_EXIT, /**< Calls #USER_query_execute and displays text results */
QRY_RUN_BY_USER_QUERY, /**< Calls #USER_execute_saved_query and displays returned objects */
QRY_RUN_BY_KEYWORD_SEARCH, /**< Calls user exit code that configures and uses search engine */
QRY_RUN_BY_EINT_EXIT, /**< Exit similar to user exit which belongs to eIntegrator */
QRY_RUN_BY_BOM_REP, /**< Calls internal ITKs to generate BOM report */
QRY_RUN_BY_USAGEWC, /**< Calls USAGEWC ITKs to return proxy objects from TcBOM */
QRY_RUN_BY_TC_PLUS_PROCESS, /**< A standard query plus post process results */
QRY_RUN_BY_USER_EXIT_BO, /**< Query which returns business objects, this is user exit query but does not return runtime ( external ) objects */
QRY_CREATED_BY_CALLBACK /**< Calls POM enquiry created by callback */
} QRY_where_run_t;
/**
Defines the supported values for the "search_automatic_wildcard" preference
*/
typedef enum QRY_append_wildcard_pref_e {
QRY_no_automatic_wildcards, /**< Do not append wildcards */
QRY_suffix_wild_card, /**< Append suffix wildcard */
QRY_prefix_wild_card, /**< Append prefix wildcard */
QRY_prefix_and_suffix_wild_cards /**< Append prefix and suffix wildcards */
} QRY_append_wildcard_pref_t;
/**
Defines the supported attribute types for Saved Query clauses
*/
typedef enum QRY_attribute_type_e
{
QRY_attribute_char = POM_char, /**< Value is a single character */
QRY_attribute_date = POM_date, /**< Value is a date */
QRY_attribute_double = POM_double, /**< Value is a double */
QRY_attribute_float = POM_float, /**< Value is a float */
QRY_attribute_int = POM_int, /**< Value is an integer */
QRY_attribute_logical = POM_logical, /**< Value is a logical */
QRY_attribute_short = POM_short, /**< Value is a short */
QRY_attribute_string = POM_string, /**< Value is a character string */
QRY_attribute_typed_reference = POM_typed_reference, /**< Value is a typed reference */
QRY_attribute_untyped_reference = POM_untyped_reference, /**< Value is an untyped reference */
QRY_attribute_external_reference = POM_external_reference, /**< Value is an external reference */
QRY_attribute_note = POM_note, /**< Value is a note */
QRY_attribute_relationship = PROP_typed_relation, /**< Value is a typed relation */
QRY_attribute_puid = QRY_puid /**< Value is a puid */
} QRY_attribute_type_t;
/**
See user_query.c for the user-exit functions that use this structure
*/
typedef struct QRY_user_query_row_s {
struct QRY_user_query_row_s* next; /**< NULL if this is the last row */
char* object_string;
logical might_map_to_tc; /**< True does not promise it will map */
char* values[1];
} QRY_user_query_row_t;
/**
@name Define attribute size
@{
*/
#define QRY_name_size_c 128
#define QRY_desc_size_c 512
#define QRY_class_size_c 32
#define QRY_clause_size_c 240
#define QRY_uid_name_size_c 32
/** @} */
/**
@name Sort Order
@{
*/
#define OrderAscending 1
#define OrderDescending 2
/** @} */
#ifdef __cplusplus
extern "C"{
#endif
/**
Retrieves the name of the specified query.
*/
extern QRY_API int QRY_ask_name2(
tag_t query, /**< (I) Tag of the saved query */
char **qname /**< (OF) Name of the saved query */
);
/**
Sets the name of the specified query.
<br/>It is not saved to the database until an explicit call to #AOM_save occurs.
@note The query name must be unique and the maximum length is 128 characters.
*/
extern QRY_API int QRY_set_name2(
tag_t query, /**< (I) Tag of the saved query */
const char *qname /**< (I) Name of the query to be saved */
);
/**
Retrieves the description of the specified query.
*/
extern QRY_API int QRY_ask_description2(
tag_t query, /**< (I) Tag of the saved query */
char **qdesc /**< (OF) Description of the saved query */
);
/**
Sets the description of the specified query.
<br/>It is not saved to the database until an explicit call to #AOM_save occurs.
@note Maximum length is 512 characters.
*/
extern QRY_API int QRY_set_description2(
tag_t query, /**< (I) Tag of the saved query */
const char *qdesc /**< (I) Description of the query to be saved */
);
/**
Retrieves the search class of the specified query.
*/
extern QRY_API int QRY_ask_class2(
tag_t query, /**< (I) Tag of the saved query */
char **qclass /**< (OF) Search class of the saved query */
);
/**
Sets the search class of the specified query.
<br/>It is not saved to the database until an explicit call to #AOM_save occurs.
@note Maximum length is 32 characters. Ensure that query clauses or the attribute-value pairs of the
query are still valid for the new search class. Otherwise, this query can be invalidated.
*/
extern QRY_API int QRY_set_class2(
tag_t query, /**< (I) Tag of the saved query */
const char *qclass /**< (I) Search class of the query to be saved */
);
/**
Retrieves the query clauses of a specified query
<br/><br/>@p qclauses is a concatenated string consisting of multiple query criteria clauses defined in the Query Builder
@returns
<ul>
<li>#ITK_ok on success
<li>#QRY_invalid_query if the query tag is invalid
</ul>
*/
extern QRY_API int QRY_ask_clauses(
tag_t query, /**< (I) Tag of the saved query */
char** qclauses /**< (OF) Search clauses of the query */
);
/**
Sets the clauses of the specified query
<br/>The change is not saved to the database until an explicit call to #AOM_save occurs
<br/><br/>@p qclauses is a concatenated string consisting of multiple query criteria clauses. To obtain a sample valid string, export the saved query through the Query Builder in the rich client or use #QRY_ask_clauses.
@note @p qclauses will be verified to make sure it's valid clauses
@returns
<ul>
<li>#ITK_ok on success
<li>#QRY_invalid_query if @p qclauses is invalid
</ul>
*/
extern QRY_API int QRY_set_clauses(
tag_t query, /**< (I) Tag of the saved query. */
const char* qclauses /**< (I) Search clauses of the query to be saved. */
);
/**
Performs a case sensitive search for the specified query name and returns its tag.
*/
extern QRY_API int QRY_find2(
const char *name, /**< (I) Name of the query */
tag_t* query /**< (O) Tag of the saved query */
);
/**
Retrieves the number of saved queries and a list of saved query tags.
*/
extern QRY_API int QRY_extent(
int* query_count, /**< (O) Number of the saved queries or the size of the array */
tag_t** queries /**< (OF) query_count List of saved query tags */
);
/**
Finds all user entries of the specified query.
*/
extern QRY_API int QRY_find_user_entries(
tag_t query, /**< (I) Tag of the saved query */
int* n_entries, /**< (O) Number of user entries in this query */
char*** entries, /**< (OF) n_entries Array of user entries */
char*** values /**< (OF) n_entries Array of default values for the user entries.
<br/>Each array element, values[n], specifies the default value of entries[n].
<br/>A values[n] can be an empty string if there is no default value defined. */
);
/**
Executes the saved query with the specified user entries and returns the number of found objects and object tags.
<br/>Use #QRY_find_user_entries to get a list of user entries.
<br/>You do not have to have all the user entries in your entries array for execution.
The entries array can be equal or less than the user entries found by #QRY_find_user_entries ITK.
However, the size of the values array should be the same as the entries array so that each entry is matched with a value.
<br/>This ITK does not check read privileges on the results.
*/
extern QRY_API int QRY_execute(
tag_t query, /**< (I) Tag of the saved query */
int n_entries, /**< (I) Number of user entries in this query */
char** entries, /**< (I) n_entries Array of user entries */
char** values, /**< (I) n_entries Array of values for the user entries. Each array element, values[n],
specifies the value of entries[n]. */
int* n_found, /**< (O) Number of found objects */
tag_t** results /**< (OF) n_found Found objects. */
);
/**
Executes the saved query with the specified user entries and returns the number of found objects and
object tags of those objects in the database that are also in the limit_list.
<br/>If the limit_list is null, or the limit_list_count is 0,
the objects returned are exactly the same as those returned by #QRY_execute.
<br/>Use #QRY_find_user_entries to get a list of user entries.
<br/>You do not have to have all the user entries in your entries array for execution.
The entries array can be equal or less than the user entries found by #QRY_find_user_entries ITK.
However, the size of the values array should be the same as the entries array so that each entry is matched with a value.
<br/>This ITK does not check read privileges on the results.
<b>Restrictions:</b>
This function does not work with user_exit_queries.
*/
extern QRY_API int QRY_execute_on_list(
tag_t query, /**< (I) Tag of the saved query */
int n_entries, /**< (I) Number of user entries in this query */
char** entries, /**< (I) n_entries Array of user entries */
char** values, /**< (I) n_entries Array of values for the user entries. Each array element, values[n],
specifies the value of entries[n]. */
int n_limits, /**< (I) The number of objects used to limit the search. */
tag_t* limits, /**< (I) n_limits The objects to limit the search */
int* n_found, /**< (O) The number of objects found */
tag_t** results /**< (OF) n_found The objects found in the database
intersected with @p limits tags. */
);
extern QRY_API int QRY_execute_user_exit_query(
tag_t query, /**< (I) */
int n_entries, /**< (I) */
char** entries, /**< (I) n_entries */
char** values, /**< (I) n_entries */
int* n_columns, /**< (O) */
char*** results, /**< (OF) n_columns */
QRY_user_query_row_t** rows /**< (OF) */
);
/**
Executes the saved query at the specified site.
@returns
<ul>
<li>#ITK_ok on success
<li>#ODS_no_such_site if @p site_id is not a valid or not an ODS (Object Directory Services) capable site.
<li>Potentially any other error codes in case of failure
</ul>
*/
extern QRY_API int QRY_execute_at_site(
int site_id, /**< (I) ID of the remote site where the query will executed. The site needs to be ODS capable.
<br/>If zero, the query will be executed at the default ODS site.*/
tag_t query, /**< (I) Tag of the saved query */
int n_entries, /**< (I) Number of user entries in this query */
char** entries, /**< (I) n_entries Array of user entries */
char** values, /**< (I) n_entries Array values for the user entries. Each array element, values[n],
specifies the value of entries[n]. */
int* n_found, /**< (O) Number of objects found */
tag_t** results /**< (OF) n_found List of found objects */
);
/**
Retrieves the objects that meet the given search criteria.
<br/>The order of the objects in the returned array is determined according to the given sort criteria.
<br/>This ITK does not check read privileges on the results.
@returns
<ul>
<li>#ITK_ok on success.
<li>#QRY_enquiry_not_available if the query is invalid.
<li>#QRY_not_a_number if a string is found when a number was expected.
<li>Potentially other errors.
</ul>
*/
extern QRY_API int QRY_execute_with_sort(
tag_t query, /**< (I) The tag of a saved query object */
int n_entries, /**< (I) The number of the user entries */
char** entries, /**< (I) n_entries The array of the user entry names */
char** values, /**< (I) n_entries The array of the values. Each user name in the "entries" array must
have a corresponding value in the "values" array. */
int n_to_sort, /**< (I) The number of the class attributes to be sorted */
char** keys, /**< (I) n_to_sort The array of the names of the attributes that the found objects
are to be sorted against. An attribute must be from the query target class. */
int* orders, /**< (I) The array of the sort orders.
The possible values of a sort order are:
<ul><li>1 (Ascending Order)
<li>2 (Descending Order)
</ul> */
int* n_found, /**< (O) The number of the found objects */
tag_t** results /**< (OF) n_found The found objects */
);
/**
Retrieves the objects that meet the given search criteria and that are in the given limit list.
<br/>The order of the objects in the returned array is determined according to the given sort criteria.
<br/>This ITK does not check read privileges on the results.
For other arguments, please see #QRY_execute_with_sort
*/
extern QRY_API int QRY_execute_on_list_with_sort(
tag_t query, /**< (I) The tag of a saved query object */
int n_entries, /**< (I) The number of the user entries */
char** entries, /**< (I) n_entries The array of the user entry names */
char** values, /**< (I) n_entries The array of the values. Each user name in the "entries" array must have
a corresponding value in the "values" array. */
int n_limits, /**< (I) The length of the limit_list array */
tag_t* limits, /**< (I) n_limits The tag array of the objects */
int n_to_sort, /**< (I) The number of the class attributes to be sorted */
char** keys, /**< (I) n_to_sort The array of the names of the attributes that the found objects are
to be sorted against. An attribute must be from the query target class. */
int* orders, /**< (I) The array of the sort orders.
The possible values of a sort order are:
<ul>
<li>1 (Ascending Order)
<li>2 (Descending Order)
</ul> */
int* n_found, /**< (O) The number of the found objects */
tag_t** results /**< (OF) n_found The found objects */
);
/**
Executes the query at the given site.
<br/>The published objects that meet the given search criteria are retrieved.
<br/>The order of the objects in the returned array is determined according to the given sort criteria.
@returns
<ul>
<li>#ITK_ok on success
<li>#QRY_enquiry_not_available if the query is invalid.
<li>#QRY_not_a_number if a string is found when a number was expected.
<li>Potentially other query error codes.
</ul>
*/
extern QRY_API int QRY_execute_at_site_with_sort(
int site_id, /**< (I) The site id */
tag_t query, /**< (I) The tag of a remote query object */
int n_entries, /**< (I) The number of the user entries */
char** entries, /**< (I) n_entries The array of the user entry names */
char** values, /**< (I) n_entries The array of the values. Each user name in the "entries" array must have
a corresponding value in the "values" array. */
int n_sorting_keys, /**< (I) The number of the PublicationRecord class attributes to be sorted */
char** sorting_keys, /**< (I) n_sorting_keys The array of the names of the attributes that the found objects are to be
sorted against. An attribute must be from the PublicationRecord class. */
int* orders, /**< (I) The array of the sort orders.
The possible values of a sort order are:
<ul>
<li>1 (Ascending Order)
<li>2 (Descending Order)
</ul> */
int* n_found, /**< (O) The number of the found objects */
tag_t** results /**< (OF) n_found The found objects */
);
/**
Sets the name mode of the specified query to display real property names or to display presentation names.
<br/>Default name mode is presentation mode. Set name_mode to TRUE for real property name,
and set name_mode to FALSE for presentation name.
*/
extern QRY_API int QRY_set_name_mode(
tag_t query, /**< (I) Tag of the saved query */
logical name_mode /**< (I) @c true for real property name, and @c false for presentation name */
);
/**
Sets the domain of a saved query to specified search domain.
<b>Restrictions:</b> Remote queries can be executed only in a D-Teamcenter environment.
*/
extern QRY_API int QRY_set_search_domain(
tag_t query, /**< (I) Tag of the saved query */
QRY_domain_t search_domain /**< (I) Search domain to set for the specified query.
<br/>The search domain value can be one of the following:
<ul>
<li>#QRY_DOMAIN_LOCAL: the query will be executed at the local site against the local database.
<li>#QRY_DOMAIN_REMOTE: the query will be executed at a remote site against a remote database.
</ul> */
);
/**
Retrieves the current search domain of the specified saved query.
<b>Restrictions:</b> Remote queries can only be executed in a D-Teamcenter environment.
*/
extern QRY_API int QRY_ask_search_domain(
tag_t query, /**< (I) Tag of the saved query */
QRY_domain_t* search_domain /**< (O) Current search domain of the specified saved query.
<br/>The search domain value can be one of the following:
<ul>
<li>#QRY_DOMAIN_LOCAL: the query will be executed at the local site against the local database.
<li>#QRY_DOMAIN_REMOTE: the query will be executed at a remote site against a remote database.
</ul> */
);
extern QRY_API int QRY_set_where_run(
tag_t query, /**< (I) */
QRY_where_run_t where_run /**< (I) */
);
extern QRY_API int QRY_ask_where_run(
tag_t query, /**< (I) */
QRY_where_run_t* where_run /**< (O) */
);
/**
Retrieves full details (i.e. full details of each clause in string lists) of the specified query.
<br/>This ITK is primarily used by Teamcenter-PC where the details are used to reconstruct a query form.
*/
extern QRY_API int QRY_describe_query(
tag_t query, /**< (I) Tag of the saved query */
int* n_clauses, /**< (O) Number of clauses in this query */
char*** attr_names, /**< (OF) n_clauses List of attribute names.
Number of list elements is the same as num_clauses. */
char*** entry_names, /**< (OF) n_clauses List of user entry names.
Number of list elements is the same as num_clauses.
For fixed entry clause, that entry name element will be a NULL string. */
char*** logical_ops, /**< (OF) n_clauses List of logical operators */
char*** math_ops, /**< (OF) n_clauses List of math operators */
char*** values, /**< (OF) n_clauses List of default values.
Each value corresponds to each attribute.
If there is no default value defined for a particular clause,
that value element will be a NULL string. */
tag_t** lovs, /**< (OF) n_clauses List of LOV tags.
If there is no LOV that corresponds to the attribute,
that @p lovs element will be 0. */
int** attr_types /**< (OF) n_clauses List of attribute types */
);
/**
Retrieves full details for each clause of a specified query.
<br/><br/>Each clause is a search criteria entry defined in Query Builder in the rich client.
@returns
<ul>
<li>#ITK_ok on success
<li>#QRY_invalid_query if @p qclauses is invalid
</ul>
*/
extern QRY_API int QRY_details(
tag_t query, /**< (I) The query tag */
logical substitute_keyword, /**< (I) Flag of substituting keyword with real value */
int* n_clauses, /**< (O) Number of clauses */
char*** attribute_names, /**< (OF) n_clauses Attribute names.
<br/>The array is packed, which means that only the container needs to be deallocated using #MEM_free */
char*** entry_names, /**< (OF) n_clauses Entry L10N keys.
<br/>The array is packed, which means that only the container needs to be deallocated using #MEM_free */
char*** entry_names_display, /**< (OF) n_clauses Entry display names.
<br/>The array is packed, which means that only the container needs to be deallocated using #MEM_free */
char*** logical_operators, /**< (OF) n_clauses Logical operators.
<br/>The array is packed, which means that only the container needs to be deallocated using #MEM_free */
char*** math_operators, /**< (OF) n_clauses Math operators.
<br/>The array is packed, which means that only the container needs to be deallocated using #MEM_free */
char*** values, /**< (OF) n_clauses Display values.
<br/>The array is packed, which means that only the container needs to be deallocated using #MEM_free */
tag_t** lovs, /**< (OF) n_clauses LOV tags */
int** attached_specifiers, /**< (OF) n_clauses The attached specifiers for the LOVs */
int*** dependent_indexes, /**< (OF) n_clauses Dependent indexes.
<br/>The first dimension is num_clauses clauses, the second dimension is 2 indexes of clauses each
clause depends on.
<br/>The returned array is not packed, which means that both the elements and the container need to be deallocated using #MEM_free.*/
int** key_lov_ids, /**< (OF) n_clauses IDs of the key LOVs */
int** attribute_types /**< (OF) n_clauses Types of the attributes. Possible values are defined in #QRY_attribute_type_e */ );
/**
Sets the TC_ignore_case_on_search preference for the current ITK session.
<br/>This ITK does not set the value in the preference file.
*/
extern QRY_API int QRY_ignore_case_on_search(
logical ignore_case /**< (I) Flag for case insensitive or sensitive search.
If @c true, searching will be case insensitive.*/
);
extern QRY_API int QRY_compute_sort_preference_names(
tag_t query, /**< (I) */
char** key_name, /**< (OF) */
char** order_name, /**< (OF) */
char** pkey_name, /**< (OF) */
char** porder_name /**< (OF) */
);
/**
Executes the saved query with the specified user entries, limited by the limit_list.
<br/>If @p limits is null, or @p n_limits is 0, the limit list is ignored and the
query is run against all data in the database.
Returned is a list of object tags organized as tuples (subsets). The list is
num_rows * num_cols long. Each tuple subset corresponds to one result, comprising of
qualifying objects from multiple levels of the queried object hierarchy. The classes of
objects that are selected to be part of the tuple subset are determined by the class names
in the query criteria.
<br/><br/>Example 1:
If the query is: Find all Items where the Item Revisions have a Specification Dataset
with name = "xyz1",
then each tuple subset will contain: Item, qualifying Item Revision and qualifying Dataset.
<br/>The num_cols return value will be 3. The result list will contain Item tag 0,
Item Revision tag 0, Dataset tag 0, Item tag 1, Item Revision tag 1, Dataset tag 1
and so on... for as many entries in the database that satisfy the query.
<br/><br/>Example 2:
If the query is: Find all Item Revisions that have a Specification Dataset with name = "xyz1"
AND Form of type Item Revision Master with user_data_1 = "xyz2",
then each tuple subset will contain: Item Revision, qualifying Dataset, qualifying Form and
qualifying Item Revision Master. The num_cols return value will be 4. The result list
will contain Item Revision tag 0, Dataset tag 0, Form tag 0, Item Revision Master tag 0,
Item Revision tag 1, Dataset tag 1, Form tag 1, Item Revision Master tag 1 and so on... for
as many entries in the database that satisfy the query.
<br/>Use #QRY_find_user_entries to get a list of user entries.
You do not have to have all the user entries in your entries array for execution.
The entries array can be equal or less than the user entries found by #QRY_find_user_entries ITK.
However, the size of the values array should be the same as the entries array so that each entry is matched with a value.
<b>Restrictions:</b> This function does not work with user_exit_queries.
*/
extern QRY_API int QRY_execute_tuples(
tag_t query, /**< (I) Tag of the saved query */
int n_entries, /**< (I) Number of user entries in this query */
char** entries, /**< (I) n_entries Array of user entries */
char** values, /**< (I) n_entries Array of values for the user entries. Each array element, values[n],
specifies the value of entries[n]. */
int n_limits, /**< (I) The number of tags in the limit_list */
tag_t* limits, /**< (I) n_limits The list of object tags used to limits the search */
int* n_rows, /**< (O) The number of tuples found */
int* n_cols, /**< (O) The number of objects in each tuple */
tag_t** results /**< (OF) n_rows*n_cols The objects found in the
database intersected with @p limits tags. Its size is @c num_rows*num_cols long. */
);
/**
Retrieves the objects that meet the given search criteria and that are in the given limit list.
<br/>This API also takes into account any sort preferences, where-run, and search domain, when executing
the search.
*/
extern QRY_API int QRY_execute_query(
tag_t query, /**< (I) The saved query to execute */
int n_entries, /**< (I) Number of user entries in this query */
char** entry_names, /**< (I) n_entries Array of user entries */
char** entry_values, /**< (I) n_entries Array of values for the user entries. Each array element, value[n],
specifies the value of entries[n] */
int n_limites, /**< (I) Number of tags in the limit_list */
tag_t* limits, /**< (I) n_limits List of object tags used to limit the search scope */
int results_type, /**< (I) An integer specifying the results type:
<ul>
<li>0 (flat),
<li>1 (hierarchical)
</ul> */
int* n_components, /**< (O) Number of objects found */
int** hierarchical_map, /**< (O) If the results type is specified as "hierarchical", this integer
array acts as a map for the found objects to be presented in a
hierarchical fashion */
tag_t** components /**< (OF) n_components Array of found objects */
);
extern QRY_API int QRY_writeToFile(
tag_t query, /**< (I) */
char* file_name /**< (I) */
);
extern QRY_API int QRY_readFromFile(
char* file_name, /**< (I) */
char** query_name /**< (OF) */
);
/**
Updates / deletes the FTS index of the given object.
<br/>It will index the object only if it is mentioned as a Type under the preference @c TC_fts_indexed_types.
*/
extern QRY_API int QRY_update_fts_index(
tag_t object, /**< (I) The tag of the object whose FTS index you want to update. */
logical delete_index /**< (I) Indicates whether to delete the FTS index of the given object. */
);
extern QRY_API int QRY_execute_query_with_cancel_option(
char* query_request_id, /**< (I) A string representing the execute operation request */
tag_t query, /**< (I) Tag of saved query to execute */
int n_entries, /**< (I) Number of user entries in this query */
char** entry_names, /**< (I) n_entries Array of user entries */
char** entry_values, /**< (I) n_entries Array of values for the user entries. Each array element, value[n],
specifies the value of entries[n] */
int n_limits, /**< (I) Number of tags in the limit_list */
tag_t* limits, /**< (I) n_limits List of object tags used to limit the search scope */
int results_type, /**< (I) An integer specifying the results type:
<ul>
<li>0 (flat),
<li>1 (hierarchical)
</ul>*/
int* n_components, /**< (O) Number of objects found */
int** hierarchical_map, /**< (O) If the results type is specified as "hierarchical", this integer
array acts as a map for the found objects to be presented in a
hierarchical fashion */
tag_t** components /**< (OF) n_components Array of found objects */
);
/**
Finds the objects of the input class with the specified attributes & values.
<br/><br/>Example: If the query is:
Find all Items where object_name = "x*z1;x*z2" AND object_type="Document",
<b>Restrictions:</b> At present operations supports = operation.
In future this will be extened for other operations too
<br/>This function designed to work for local queries only.
*/
extern QRY_API int QRY_find_objects_based_on_attributes_and_values(
char* class_name, /**< (I) primiary class to find the objects */
int n_attributes, /**< (I) Number of user entries in this query */
char** names, /**< (I) n_attributes Array of attribute names */
char** operations, /**< (I) n_attributes Array of operations */
char** values, /**< (I) n_attributes Array of values for attribute names and operations
<br/>Each array element, values[n], specifies the value
of entries[n]. */
char** clauses_rules, /**<(I) Array of values to club different clauses.
<br/>For example AND,OR etc. At present AND is assumed.
<br/>For future use only. Right now pass NULL */
int* n_found, /**< (O) The number of objects found */
tag_t** results /**< (OF)n_found The list of objects found
in the database. */
);
/**
Executes business object query.
@returns
<ul>
<li>#ITK_ok on success
<li>#QRY_no_create if any attribute passed to @p entry_names is invalid.
<li>#TYPE_no_find_type if @p type_tag is an invalid type.
<li>Other potential error codes.
</ul>
*/
extern QRY_API int QRY_execute_bus_obj_query(
char* request_id, /**< (I) A string representing the execute operation request */
tag_t type, /**< (I) Target business object type to search*/
int n_entries, /**< (I) Number of user entries in this query */
char** entry_names, /**< (I) n_entries List of property names */
char** entry_values, /**< (I) n_entries List of property values */
char** entry_math_operators, /**< (I) n_entries List of math operators */
char** entry_logic_operators, /**< (I) n_entries List of logical operators */
int* n_components, /**< (O) Number of objects found */
tag_t** components /**< (OF) n_components List of objects found */
);
/**
Executes business object query with sorting attributes.
@returns
<ul>
<li>#ITK_ok on success
<li>#QRY_no_create if failed to create the business object query.
<li>#QRY_enquiry_not_available if any attribute passed to @p sort_attrs is invalid.
<li>#TYPE_no_find_type if @p type is an invalid type.
<li>Other potential error codes.
</ul>
*/
extern QRY_API int QRY_execute_bus_obj_query_common(
const char* request_id, /**< (I) A string representing the execute operation request */
const tag_t type, /**< (I) Target business object type to search */
const tag_t operation_input, /**< (I) Generic Operation Input object providing name-value input. */
const int n_entries, /**< (I) Number of user entries in this query */
const char** entry_names, /**< (I) n_entries List of property names */
const char** entry_values, /**< (I) n_entries List of property values */
const char** entry_math_opertors, /**< (I) n_entries List of math operators */
const char** entry_logic_opertors, /**< (I) n_entries List of logical operators */
const int n_sort_attrs, /**< (I) The number of the sorting attributes */
const char** sort_attrs, /**< (I) n_sort_attrs List of sorting attributes. The attributes must be from the target @p type. */
const int* sort_orders, /**< (I) n_sort_attrs List of sort orders.
The possible values of a sort order are: <br/>
1 (Ascending Order) <br/>
2 (Descending Order) */
int* n_found, /**< (O) Number of objects found */
tag_t** results /**< (OF) n_found List of object found. */
);
#ifdef __cplusplus
}
#endif
/** @} */
#include <qry/libqry_undef.h>
#endif