ignored fields (see DataSourceField.ignore
in the SmartClient reference)
DataSourceField.includeFrom
in the SmartClient reference). multiple fields (DataSourceField.multiple
in the SmartClient reference) depending on the DataSource type, this will also exclude fields that are configured to be fetched in any kind of custom way. For example for the SQLDataSource
built-in DataSource implementation this will include only fields selected from the main SQL table (DataSource.tableName
in the SmartClient reference), and will exclude fields using features like customSQL
, includeSummaryFunction
, customSelectExpression
etc
In addition to locally declared fields, this will include inherited fields (for more details look for DataSource.inheritsFrom
in the SmartClient reference), but will exclude:
DataSourceField.ignore
in the SmartClient reference) related fields fetched from another DataSource (DataSourceField.includeFrom
in the SmartClient reference). fieldName
- the name of the field whose definition you want For example, an "ItemSearch" might return metadata along with the set of <Item>
elements that one might want to display in a grid. The XPath expression to retrieve just the <Item>
elements in this case might be "//Item", which would select all <Item>
elements anywhere in the returned document.
operationType
- the operation type to checkSee client-side docs for DataSourceField.multipleStorage for possible behaviors. This transformation is performed in DataSource.execute(), before operationType-specific methods like executeFetch or executeUpdate() are called.
req
- the DSRequest to be transformed.See client-side docs for DataSourceField.multipleStorage for possible behaviors. This transformation is performed in DataSource.execute(), after operationType-specific methods like executeFetch or executeUpdate() are called.
res
- the DSResponse to be transformed.req
- the associated DSRequest, for contexttransformMultipleFields(DSRequest)
and transformMultipleFields(DSResponse)
.req
- The DSRequest object representing this operationException
- if an error occurs during request executionDataSource
.DataSource
.DataSource
.DataSource
.DataSource
.DataSource
.DataSource
.DataSource
.DataSource
.DataSource
. When DataSourceField.valueXPath is set, the valueXPath is treated as a Jakarta JXPath expression. If some intervening objects in a JXPath are nulls
, this method attempts to create missing objects if possible - see JXPathContextObjectFactory
documentation for details.
Entries in the "properties" Map where there is no same-named DataSource field are discarded.
This method can be used to recursively populate an object graph of Beans and Collections, using multiple DataSources to define rules for how subobjects are populated. Specifically, if the "properties" Map has entries whose values are Maps, if the corresponding field on the DataSource is declared as being of a DataSource type (ie, the type property is set to the ID of some valid DataSource), these properties will be applied via a recursive call to DataSource.setProperties() using the indicated DataSource. This will also occur for a Collection within the "properties" Map if the target bean has a corresponding property of Collection type.
When the type to use is ambiguous (for example, a property on the target bean is declared as a base type with many sub-types, or is an abstract type like List) the DataSourceField properties javaClass, javaCollectionClass and javaKeyClass can be used to specify a concrete type - see the client-side reference docs for further details.
Ultimately, this method calls DataTools.setProperties(Map, Object, DataSource)
- see the documentation of these method for details of treatment of object vs primitive type, Java Generics, Enums, and other cases.
properties
- Map of DataSource fieldName -> valuetarget
- Target object to which the values are to be appliedlist
- The List of objects that is mined for values.dropExtraFields
parameter controls whether or not values specified for fieldNames that are not declared in the datasource on which this method is being called are discarded.list
- The List of objects that is mined for values.dropExtraFields
- If true, values specified for fieldNames that are not declared in the datasource on which this method is being called are discarded, otherwise they are kept.dropIgnoredFields
- If true, values specified for fieldNames that are declared in the datasource on which this method is being called with the property ignore: true are are discarded; otherwise they are keptobj
- The object that is mined for values.dropExtraFields
parameter controls whether or not values specified for fieldNames that are not declared in the datasource on which this method is being called are discarded.obj
- The object that is mined for values.dropExtraFields
- If true, values specified for fieldNames that are not declared in the datasource on which this method is being called are discarded, otherwise they are kept.dropIgnoredFields
- If true, values specified for fieldNames that are declared in the datasource on which this method is being called with the property ignore: true are are discarded; otherwise they are keptobj
- The object that is mined for values.propsToKeep
- specifies an explicit list of properties to retain the datasource on which this method is being called are discarded, otherwise they are kept.data
- Map of DataSource fieldName -> valuereportMissingRequiredFields
- for operations like update or fetch/filter only partial fields may be specified by the user. In those cases you want to ignore missing required fields.Exception
- if an exception occurs during validationdata
- Map of DataSource fieldName -> valuereportMissingRequiredFields
- for operations like update or fetch/filter only partial fields may be specified by the user. In those cases you want to ignore missing required fields.context
- ValidationContext
to use during validation; if null
is passed, then new ValidationContext
will be created. NOTE that if passing validationContext, outer code is responsible to call validationContext.freeResources()
;Exception
- if an exception occurs during validationdata
- the data to validateerrors
- the error report to populate with validation errorsException
- if an error occurs during validationerrors
parameter and return complete ErrorReport
object or null
if there were no errors. Implementing this method is the right way to introduce whole-record validation behavior that applies to all operationTypes that perform validation ("validate", "add", "update" and possible future types) as well as other contexts where validation is performed, such as the BatchUploader or mass import of records.
Note this method has no default behavior.
data
- Map of DataSource fieldName -> valueerrors
- ErrorReport
with validation errors reported by validators on this datasource, or null
if there were no errors.context
- ValidationContext
, where record is validated, see ValidationContext
javadocs for details.null
if there were no errors.Exception
- if an exception occurs during validation.req
- The DSRequest object representing this operationException
- if an error occurs during the fetch operationreq
- The DSRequest object representing this operationException
- if an error occurs during the remove operationreq
- The DSRequest object representing this operationException
- if an error occurs during the add operationreq
- The DSRequest object representing this operationException
- if an error occurs during the update operationreq
- The DSRequest object representing this operationException
- if an error occurs during the custom operationreq
- The DSRequest object representing this operationException
- if an error occurs during the client export operationThe actual operation to be performed is indicated by the request's operationType
. The operationType
may be one of the following:
DSResponse
appropriate for a "fetch" operation, using the fileName, fileType, fileFormat and tenantId (or other criteria) provided by the DSRequest
. Only include the fileContents in the outputs for the "getFile" operationType.oldValues
, since they may be primary keys (so that providing only the new values would not be sufficient).In each case, the fileName, fileType, fileFormat, tenantId and fileContents are provided in the DSRequest using those field names. The default implementation uses getFileNameField()
, getFileTypeField()
, getFileFormatField()
, getFileTenantIdField()
and getFileContentsField()
to construct the appropriate sub-request to access the real fields of the DataSource.
In constructing a DSResponse, you must use the field names fileName, fileType, fileFormat, tenantId and fileContents rather than the real fields of the DataSource.
The default implementation issues a sub-request of type "fetch", "add", "remove" or "update", with an operationId equal to the operationType provided here, and with field names translated according the DataSource configuration. Therefore, you can customize the sub-request operationTypes, by checking for the relevant operationId.
Note that the "renameFile" operationId is implemented, by default, to perform an "update" operation, unless the fileNameField, fileFormatField, fileTypeField or tenantIdField are primary keys. If one of those fields is a primary key, then "renameFile" is instead implemented as a "remove" followed by an "add", since there can be difficulties updating primary keys.
req
- The DSRequest object representing this operation.Exception
- if an error occurs during the file source operationThis allows fileSource operations to always use "fileName" as a field name, no matter where this DataSource stores the fileName.
The default implementation works as follows:
fileNameField
, fileTypeField
, fileFormatField
. or fileTenantIdField
.fileSpec
- A specifier for the file.Exception
- if an error occurs while retrieving the filefileSpec
- A specifier for the file.Exception
- if an error occurs while retrieving the filefileSpec
- A specifier for the file.Exception
- if an error occurs while retrieving the filefileSpec
- A specifier for the file.Exception
- if an error occurs while checking for the filefileSpec
- A specifier for the file. A fileName is always required. Some DataSources will require that the fileType, fileFormat, and tenantId be specified.contents
- The contents of the file.Exception
- if an error occurs while saving the filecriteria
- Criteria to apply. References to fileName
, fileContents
and fileType
will be translated to the native field names configured for this DataSource.context
- DSRequest which provides the security context in which this method should run.fileName
, fileType
, fileFormat
, and potentially the tenantId
fields populated, but not the fileContents
field. (You can use getFile()
to get the fileContents
).Exception
- if an error occurs while listing filescriteria
- Criteria to apply. References to fileName
, fileContents
and fileType
will be translated to the native field names configured for this DataSource.fileName
, fileType
, fileFormat
, and potentially the tenantId
fields populated, but not the fileContents
field. (You can use getFile()
to get the fileContents
).Exception
- if an error occurs while listing filestype
- The file type (e.g. "ds")format
- The file format (e.g. "xml" or "js")context
- DSRequest which provides the security context in which this method should run.fileName
, fileType
, fileFormat
, and potentially the tenantId
fields populated, but not the fileContents
field. (You can use getFile()
to get the fileContents
).Exception
- if an error occurs while listing filestype
- The file type (e.g. "ds")format
- The file format (e.g. "xml" or "js")tenantId
- The file tenant ID for loading multi-tenant DataSourcescontext
- DSRequest which provides the security context in which this method should run.fileName
, fileType
, fileFormat
and potentially the tenantId
fields populated, but not the fileContents
field. (You can use getFile()
to get the fileContents
).Exception
- if an error occurs while listing filestype
- The file type (e.g. "ds")format
- The file format (e.g. "xml" or "js")fileName
, fileType
, fileFormat
, and potentially the tenantId
fields populated, but not the fileContents
field. (You can use getFile()
to get the fileContents
).Exception
- if an error occurs while listing filestype
- The file type (e.g. "ds")format
- The file format (e.g. "xml" or "js")tenantId
- The file tenant ID for loading multi-tenant DataSourcesfileName
, fileType
, fileFormat
and potentially the tenantId
fields populated, but not the fileContents
field. (You can use getFile()
to get the fileContents
).Exception
- if an error occurs while listing filesoldSpec
- The original fileSpec.newSpec
- The new fileSpec.fileName
, fileType
, fileFormat
, and potentially the tenantId
fields populated, but not the fileContents
field.Exception
- if an error occurs while renaming the filefileSpec
- A specifier for the file.fileName
, fileType
, fileFormat
, and potentially the tenantId
fields populated, but not the fileContents
field.Exception
- if an error occurs while removing the filecriteria
- The criteria to use for the fetch operationList
with retrieved data.Exception
- if an error occurs during the fetch operationkey
- The criterion keyvalue
- The criterion valueList
with retrieved data.Exception
- if an error occurs during the fetch operationcriteria
- The criteria to use for the filter operationList
with retrieved data.Exception
- if an error occurs during the filter operationkey
- The criterion keyvalue
- The criterion valueList
with retrieved data.Exception
- if an error occurs during the filter operationvalues
- The values to use for the add operationlong
number of affected rows.Exception
- if an error occurs during the add operationvalues
- The values to use for the add operationrpc
- The RPCManager to use for this operationlong
number of affected rows.Exception
- if an error occurs during the add operationcriteria
- The criteria to use for the update operationvalues
- The values to use for the update operationlong
number of affected rows.Exception
- if an error occurs during the update operationcriteria
- The criteria to use for the update operationvalues
- The values to use for the update operationrpc
- The RPCManager to use for the update operationlong
number of affected rows.Exception
- if an error occurs during the update operationcriteria
- The criteria to use for the remove operationlong
number of affected rows.Exception
- if an error occurs during the remove operationNote that this method expects the specified criterion to result in a single result, and will throw an exception if the multiple records match the request.
key
- The criterion keyvalue
- The criterion valueMap
of retrieved object properties.Exception
- if an error occurs during the fetch operationNote that this method expects the specified criteria to result in a single result, and will throw an exception if the multiple records match the request.
criteria
- The criteria to use for the fetch operationMap
of retrieved object properties.Exception
- if an error occurs during the fetch operationThis method is part of the Automatic Transactions feature, which is effective only in Power edition and above.
req
- The DSRequest for which to get the transaction objectException
- if an error occurs while getting the transaction objectnull
. SQLDataSource
:Connection conn = DataSource.getTransactionObject(req, SQLTransaction.CONNECTION_ATTR + dbName);where
dbName
is name of database as configured in server.properties file. Returned conn
is instance of java.sql.Connection
to specified data base.HibernateDataSource
:Transaction tx = DataSource.getTransactionObject(req, HibernateTransaction.TRANSACTION_ATTR); Session session = HibernateTransaction.getTransactionSession(tx);
session
and tx
instances of hibernate session and transaction object used by HibernateDataSource
.JPADataSource
:JPAConnectionHolder holder = DataSource.getTransactionObject(req, EMF.TRANSACTION_ATTR);
JPAConnectionHolder
instance contains references to entity manager and transaction object used by JPADataSource
instances. Transaction is started by first execution of corresponding data source implementation. Following operations should retrieve transaction object and use it but should never commit/rollback. Overall commit/rollback will be issued by RPCManager
and will be handled by data source object which started transaction.
This method is part of the Automatic Transactions feature, which is effective only in Power edition and above.
req
- DSRequest
transactionObjectKey
- String
Name of transaction object key.shortTransactionObjectKey
- String
Name of short transaction object key.Object
containing connection/transaction. Actual type of instance depends on passed parameter transactionObjectKey
. null
is returned if specified request does not contain reference to RPCManager
or specified object is not set.Exception
- if provided DSRequest
is null
.columnName
- The columnName to use in the search criteriavalue
- The value to look for in the search criteriaException
- if an error occurs during the searchcriteria
- A Map containing the search criteriaException
- if an error occurs during the searchfetchById(Object, RPCManager)
, without the optional RPCManager parameterid
- The primary key value to match, or a set of primary key values in a MapException
- if an error occurs during the fetchfetchById(Object, RPCManager, List)
, without the optional outputs parameterid
- The primary key value to match, or a set of primary key values in a Maprpc
- An optional RPCManager to apply to the DSRequest we generate to implement the fetch. If provided, this gives access to the RPCManager's shared state. For example, it may allow the fetch to share a database transaction or give it access to an HttpSessionException
- if an error occurs during the fetchid
- The primary key value to match, or a set of primary key values in a Maprpc
- An optional RPCManager to apply to the DSRequest we generate to implement the fetch. If provided, this gives access to the RPCManager's shared state. For example, it may allow the fetch to share a database transaction or give it access to an HttpSessionoutputs
- An optional list of outputs to limit the set of fields to fetchException
- if an error occurs during the fetchsetEnumTranslateStrategy(String)
for details of valid translate strategiesenum.toString()
newValue
- A String containing the new enum translate strategynewValue
- The new ordinal property namenewValue
- The new constant value property namemyNewProperty="some useful value"to the
<DataSource>
tag in your .ds.xml
definition file, calling this method with a parameter of "myNewProperty"
will return "some useful value"
- the value you assigned in the DataSource definition. Note, this API is implemented on DataSource
, but is only meaningful on instances of BasicDataSource
and its subclasses. DataSource
is a base class: every implementation that is configured with a .ds.xml
file - in reality, every real-world implementation - is a BasicDataSource
. Therefore, we implement this method and other similar ones on DataSource
as a convenience, so code that retrieves a DataSource
from one of the SmartClient APIs does not have to cast it to BasicDataSource
to use this API. The behavior if you call this API on a DataSource
that is not a BasicDataSource
is undefined.
key
- The key to look upCustom XML is transformed to Strings or Java collections by the following rules:
Sample XML:
<DataSource>
<mapCustomProperty key1="value1" key2="value2" />
</DataSource>
<DataSource>
<listCustomProperty>ListElement1</listCustomProperty>
<listCustomProperty>ListElement2</listCustomProperty> </DataSource>
<DataSource>
<mapCustomProperty key1="value1" key2="value2" />
<mapCustomProperty key1="value1" key2="value2" />
</DataSource>
Note, this API is implemented on DataSource
, but is only meaningful on instances of BasicDataSource
and its subclasses. DataSource
is a base class: every implementation that is configured with a .ds.xml
file - in reality, every real-world implementation - is a BasicDataSource
. Therefore, we implement this method and other similar ones on DataSource
as a convenience, so code that retrieves a DataSource
from one of the SmartClient APIs does not have to cast it to BasicDataSource
to use this API. The behavior if you call this API on a DataSource
that is not a BasicDataSource
is undefined.
Also note, the returned Object should be considered read-only: changing it may affect some parts of the framework and not others.
key
- the name of the element(s) Note, this API is implemented on DataSource
, but is only meaningful on instances of BasicDataSource
and its subclasses. DataSource
is a base class: every implementation that is configured with a .ds.xml
file - in reality, every real-world implementation - is a BasicDataSource
. Therefore, we implement this method and other similar ones on DataSource
as a convenience, so code that retrieves a DataSource
from one of the SmartClient APIs does not have to cast it to BasicDataSource
to use this API. The behavior if you call this API on a DataSource
that is not a BasicDataSource
is undefined.
Also note, the returned List should be considered read-only: changing items within it may affect some parts of the framework and not others, leading to undefined behavior
key
- the name of the attributeClassCastException
- if requested property is not instanceof List Note, this API is implemented on DataSource
, but is only meaningful on instances of BasicDataSource
and its subclasses. DataSource
is a base class: every implementation that is configured with a .ds.xml
file - in reality, every real-world implementation - is a BasicDataSource
. Therefore, we implement this method and other similar ones on DataSource
as a convenience, so code that retrieves a DataSource
from one of the SmartClient APIs does not have to cast it to BasicDataSource
to use this API. The behavior if you call this API on a DataSource
that is not a BasicDataSource
is undefined.
Also note, the returned Map should be considered read-only: changing properties within it may affect some parts of the framework and not others.
key
- the name of the attributeClassCastException
- if requested property is not instanceof MapYour overriding method is passed the name of the property we are trying to populate, the raw value we are going to use to populate it, and the DSField object associated with the property. It is envisaged that this will be sufficient context to dynamically decide on a Class to use. For example, if the raw Map passed in contains a given property, your code might decide to use Class B rather than the normal Class A.
Note that whatever class you return from this method will be used as the parameter type for the corresponding setter on the bean we are populating. This means that this method (and indeed the declarative "javaClass" property) is only useful if your Javabean property type is a supertype of whatever class you return from this method. Examples of valid use cases would include things like your Javabean property is of an interface or abstract type, or of a general base type like Object.
propertyName
- Name of the property we are trying to populate, for contextfield
- The associated DSField
value
- The raw value we are trying to assign to this property. Note this will ordinarily be a Map or a List of MapsDataSourceField.javaClass
)Exception
- if an error occurs while determining the Java classconvertRelativeDates(com.isomorphic.criteria.AdvancedCriteria, java.util.Date)
this method will assume that the relative point in time to convert against is now.advancedCriteria
- the AdvancedCriteria for which to convert relative dates.advancedCriteria
- the AdvancedCriteria for which to convert relative dates.baseDate
- the relative point in time to convert dates against.
In order for the client to automatically send relative dates to the server you need to set DataSource.autoConvertRelativeDates to false.
If you want to store a client side criteria containing relative dates for later parsing server side you need to use the LOGICAL_DATE_CONSTRUCTOR mode of JSONEncoder when encoding the criteria on the client and then use AdvancedCriteria.decodeClientCriteria(String)
to decode the criteria on the server.
In such case you would have to serialize the critiera on the client before sending it to the server.
var encodedCriteria = isc.JSON.encode(criteria, {dateFormat: 'logicalDateConstructor'}); // Add the encoded criteria to your datasource. overnightReports.addData({ storedCriteria: encodedCriteria });
final JSONEncoder jsonEncoder = new JSONEncoder(); jsonEncoder.setDateFormat(JSONDateFormat.LOGICAL_DATE_CONSTRUCTOR); // Encode the criteria using the above JSONEncoder. final String encodedCriteria = JSON.encode(criteria, jsonEncoder); // Add the encoded criteria to your datasource. final Record newRecord = new Record(); newRecord.setAttribute("storedCriteria", encodedCriteria); overnightReports.addData(newRecord);
criterion
- the criterion to convert relative dates for.criterion
- the criterion to convert relative dates for.baseDate
- the relative point in time to convert dates against.ds
- the DataSource applicable to this criterion. Pass null if you do not have access to the dataSource, but be aware that this may lead to inaccurate handling of date values (because we are unable to distinguish between "date" and "datetime" fields, we treat all values as datetimes)This API can potentially use the client's timezone to determine what is meant by concepts such as "the start of today" or "the end of tomorrow", if the client supplies its timezone in the relativeDate definition (this happens in SmartClient versions from 11.1 onwards, Smart GWT versions 6.1 onwards). However, please note that the client actually sends up its current offest from UTC, not a real timezone identifier; this is unavoidable, as it is not possible to reliably detect the actual timezone identifier from Javascript.
The offset from GMT/UTC is usually adequate to correctly convert datetimes, but without real timezone information we get subtle errors in cases where a date range straddles the changeover to or from daylight savings time (DST); because we don't really know the timezone, we don't know how DST applies to it.
For example, consider a user in the US Pacific timezone who specifies a date range of "$yesterday" to "$tomorrow" at local midday on 13 March 2016. On that date, the US Pacific timezone switches from "Pacific Standard Time" to "Pacific Daylight Time" at 1am. Therefore PDT, which is UTC-07:00, is in force, and this is what is sent to the server. However, "$yesterday" should correctly be resolved as local midday on the previous day, March 12. On March 12, the US Pacific timezone was on PST, so the correct UTC start time is 2016-03-12 20:00:00 UTC. But the server doesn't know about the DST changeover because it doesn't know that the client is in US Pacific; it only knows that the offset from UTC is -07:00. Therefore, the start time will be incorrectly calculated as 2016-03-12 19:00:00 UTC.
criterion
- the criterion to convert relative dates for.baseDate
- the relative point in time to convert dates against.ds
- the DataSource applicable to this criterion. Pass null if you do not have access to the dataSource, but be aware that this may lead to inaccurate handling of date values (because we are unable to distinguish between "date" and "datetime" fields, we treat all values as datetimes)useEmbeddedTZ
- If true, uses the timezone offset embedded in a relativeDate definition, if one is present. If this parameter is false, or there is no embedded timezone, the server timezone is used. Note, no embedded timezone information is sent from the client in versions earlier than 11.1 / 6.1 (SmartClient / Smart GWT)convertRelativeDates(com.isomorphic.criteria.Criterion)
, but for the simple criteria. Generally the result would be simple criteria as well, although if relative date value would use RelativeDateShortcut.TODAY
, RelativeDateShortcut.YESTERDAY
or RelativeDateShortcut.TOMORROW
against the field of "datetime" builtin type, then simple criteria would be converted to the AdvancedCriteria
and the condition replaced with DateRangeCriterion
using "betweenInclusive" operator and start of the day and end of the day as minValue and maxValue.
criteria
- simple criteria to convert relative dates forrequest
- request used to convert simple criteria to advanced criteria if neededgetRelatedDisplayRecord(String, Object, DSRequest)
is the one that you must override if you want to customize the behavior.fieldName
- the field name for which to get the related display recorddisplayValue
- the display value to matchException
- if an error occurs while retrieving the related display recordincludeFrom
field on the same DataSource that the foreignKey declaration targetsNow assume that the Colors dataSource contains these records:
{id: 1, name:"Cyan"} {id: 2, name:"Magenta"} {id: 3, name:"Yellow"}Now, calling
getRelatedDisplayRecord("color", "Yellow")
on an instance of the "Widgets" dataSource will return{id: 3, name:"Yellow"}The framework uses this method during data import, to map display values provided in import datasets like CSV files, to their proper corresponding key values
fieldName
- The name of the field to obtain the related display record fordisplayValue
- The display value to use for looking up the related display recorddsRequest
- The DSRequest for contextException
- if an error occurs while retrieving the related display recordtransformImportValue(String, Object, String, DSRequest)
is the one that you must override if you want to customize the behavior.fieldName
- the field name for which to transform the import valuerawValue
- the raw value to transformdefaultStrategy
- the default import strategy to useException
- if an error occurs during value transformationdata import
, immediately before values are translated to an appropriate data type and validated. The base implementation transforms display values in the import dataset to their underlying key values, for fields that have a "related display record". See getRelatedDisplayRecord(String, Object)
for more details. You can add any transformations you require by overriding this method, but if you require the built-in displayValue-to-key transformation described above, be sure to invoke the super-method.
Transformed values are cached during import process in a DataImport
instance. All builtin tools use new DataImport
instance, so this makes no effect on import results, except optimizing performance. But, if you end up using DataImport directly and want to use it for multiple imports, keep in mind that transformed values are cached and may affect the results.
fieldName
- The name of the field for which are performing a transformationrawValue
- The value to transformdefaultStrategy
- The importStrategy ("display" or "key") to use if this field declares an importStrategy of "auto", or does not declare an importStrategy. See the client-side FieldImportStrategy
docs for detailsdsRequest
- the DSRequest for contextnull
if the concept of a related display record is not applicable to the supplied field, or if no related display record is found: untransformed original rawValue
for "display" importStrategy or null
for "displayRequired" importStrategy.Exception
- if an error occurs during value transformation If you prefer a script-based approach, search the client-side documentation for "transformResponseScript". Note, if you override this method AND provide a transformResponseScript
, this method runs first, and any transformations it makes will be visible to the script
untransformed
- the list of response data to transformctxReq
- the DSRequest for contextctxResp
- the DSResponse for contextException
- if an error occurs during response transformationDSRequest
. This is an operation level equivalent of the DataSource-level API, getObjectProperty(String)
. Please read the docs for that API - all the notes also apply to this API.
request
- DSRequest that indicates the operation to usepropertyName
- the name of the element(s)defaultValue
- A default valueException
- if an error occurs while getting the propertyone-to-many Relation Field
on this DataSourcefieldName
- name of the field to checkmany-to-many Relation Field
on this DataSourcefieldName
- name of the field to checkone-to-many
or many-to-many
Relation FieldfieldName
- name of the field to checkone-to-many
Relation Fields on this DataSourcemany-to-many
Relation Fields on this DataSourceone-to-many
and many-to-many
one-to-many
Relation Fieldmany-to-many
Relation Fieldone-to-many
or many-to-many
Relation Fieldone-to-many
or many-to-many
Relation Field, returns the name of the related DataSourcefieldName
- the name of the field to checkone-to-many
or many-to-many
Relation Field, returns the name of the related DataSourcefield
- the DSField to checkmany-to-many
Relation Field on this DataSource, returns the name of the join DataSource - ie the third dataSource "in the middle" of the relationshipfieldName
- the name of the field to checkmany-to-many
Relation Field on this DataSource, returns the name of the join DataSource - ie the third dataSource "in the middle" of the relationshipfield
- the DSField to check
validateRecord(Map, ErrorReport, ValidationContext)
instead.