Package io.vertigo.basics.task
Class AbstractTaskEngineSQL
- java.lang.Object
-
- io.vertigo.datamodel.task.model.TaskEngine
-
- io.vertigo.basics.task.AbstractTaskEngineSQL
-
- Direct Known Subclasses:
TaskEngineInsertWithGeneratedKeys
,TaskEngineProc
,TaskEngineProcBatch
,TaskEngineSelect
public abstract class AbstractTaskEngineSQL extends TaskEngine
Fournit des méthodes de haut niveau pour les services de type SQL.
Un Service SQL est composé de paramètre de type primitif, DTO ou DTC, en IN, OUT ou INOUT et d'une requête SQL sous forme de texte. La requête est parsée puis préparée pour replacer les paramètres dynamo par des variables bindées. Grammaire des requêtes :
#
: paramètre IN#
%
: paramètre OUT%
@
: paramètre INOUT@
oùest :
"primitif" : LON_IDENTIFIANT_ID ou DAT_DATE_SAISIE
"champ de dto" :. : DTO_PERSONNE.NOM ou encore DTO_PERSONNE.PER_ID
"champ de dtc" :. . : DTC_PERSONNE.2.NOM ou encore DTC_PERSONNE.0.PER_ID
Les DTO et DTC n'ont pas besoin d'être en OUT ou en INOUT pour être mutées.
Intérêt de gérer des paramètres DTC : il existe maintenant un moyen d'accéder aux champs d'une DTC, qui peut être utilisé pour créer des ServiceProviderSQL pseudo-dynamiques (ajout de mots clefs dans la requête SQL du KSP pour gérer des itérations sur DTC par ex).
Exemple de requête :
SELECT TOTO_ID, NOM
FROM TOTO
WHERE TOTO_ID = #LON_TOTO_ID#
AND NOM like #DTO_FILTRE.NOM#||'%'
AND TYPE_ID IN (#DTC_TYPE.0.TYPE_ID#,#DTC_TYPE.1.TYPE_ID#,#DTC_TYPE.2.TYPE_ID#)
De plus permet de créer du SQL dynamiquement interprété. Les paramètres IN de la tache peuvent être invoqués pour construire la requête SQL. Exemple : request = " Select * From PRODUIT <%if (dtoProduitCritere.getPrdLibelle()!=null) {%> Where PRD_LIBELLE like #DTO_PRODUIT_CRITERE.PRD_LIBELLE#||'%%' <%}%> order by <%=1%>";- Author:
- pchretien, npiedeloup
-
-
Field Summary
Fields Modifier and Type Field Description static io.vertigo.commons.transaction.VTransactionResourceId<SqlConnection>
SQL_MAIN_RESOURCE_ID
Identifiant de ressource SQL par défaut.static String
SQL_ROWCOUNT
Nom de l'attribut recevant le nombre de lignes affectées par un Statement.
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractTaskEngineSQL(io.vertigo.commons.script.ScriptManager scriptManager, io.vertigo.commons.transaction.VTransactionManager transactionManager, SqlManager sqlManager, SmartTypeManager smartTypeManager)
Constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract OptionalInt
doExecute(SqlStatement sqlStatement, SqlConnection connection)
Exécution de la requête.void
execute()
protected SqlConnectionProvider
getConnectionProvider()
Il est possible de surcharger la configuration SQL d'un service.protected SqlManager
getDataBaseManager()
protected SmartTypeManager
getModelManager()
protected String
getSqlQuery()
Retourne la Query qui sera parsée Par défaut il s'agit de la request définie sur le serviceprotected io.vertigo.commons.transaction.VTransactionResourceId<SqlConnection>
getVTransactionResourceId()
protected String
preProcessQuery(String sqlQuery)
Permet de créer du SQL dynamiquement interprété.protected void
setNamedParameters(SqlStatementBuilder sqlStatementBuilder)
-
Methods inherited from class io.vertigo.datamodel.task.model.TaskEngine
getContextProperties, getContextProperty, getTaskDefinition, getValue, process, setResult
-
-
-
-
Field Detail
-
SQL_MAIN_RESOURCE_ID
public static final io.vertigo.commons.transaction.VTransactionResourceId<SqlConnection> SQL_MAIN_RESOURCE_ID
Identifiant de ressource SQL par défaut.
-
SQL_ROWCOUNT
public static final String SQL_ROWCOUNT
Nom de l'attribut recevant le nombre de lignes affectées par un Statement. Dans le cas des Batchs ce nombre correspond à la somme de toutes les lignes affectées par le batch.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractTaskEngineSQL
protected AbstractTaskEngineSQL(io.vertigo.commons.script.ScriptManager scriptManager, io.vertigo.commons.transaction.VTransactionManager transactionManager, SqlManager sqlManager, SmartTypeManager smartTypeManager)
Constructor.- Parameters:
scriptManager
- Manager de traitment de scripts
-
-
Method Detail
-
doExecute
protected abstract OptionalInt doExecute(SqlStatement sqlStatement, SqlConnection connection) throws SQLException
Exécution de la requête.- Parameters:
connection
- Connexion BDDstatement
- Requête- Returns:
- Nombre de lignes affectées (Insert/ Update / Delete)
- Throws:
SQLException
- Erreur sql
-
execute
public void execute()
- Specified by:
execute
in classTaskEngine
-
getSqlQuery
protected String getSqlQuery()
Retourne la Query qui sera parsée Par défaut il s'agit de la request définie sur le service- Returns:
- Chaine de configuration
-
preProcessQuery
protected final String preProcessQuery(String sqlQuery)
Permet de créer du SQL dynamiquement interprété. Les paramètres IN de la tache peuvent être invoqués pour construire la requête SQL. Exemple : request = " Select * From PRODUIT <%if (dtoProduitCritere.getPrdLibelle()!=null) {%> Where PRD_LIBELLE like #DTO_PRODUIT_CRITERE.PRD_LIBELLE#||'%%' <%}%> order by <%=1%>";- Parameters:
sqlQuery
- Requete à évaluer- Returns:
- Requete évaluée
-
setNamedParameters
protected void setNamedParameters(SqlStatementBuilder sqlStatementBuilder)
-
getVTransactionResourceId
protected io.vertigo.commons.transaction.VTransactionResourceId<SqlConnection> getVTransactionResourceId()
- Returns:
- Id de la Ressource Connexion SQL dans la transaction
-
getDataBaseManager
protected final SqlManager getDataBaseManager()
- Returns:
- Manager de base de données
-
getModelManager
protected final SmartTypeManager getModelManager()
- Returns:
- Manager du modèle
-
getConnectionProvider
protected SqlConnectionProvider getConnectionProvider()
Il est possible de surcharger la configuration SQL d'un service.- Returns:
- Configuration SQL.
-
-