Class AbstractTaskEngineSQL

java.lang.Object
io.vertigo.datamodel.task.model.TaskEngine
io.vertigo.basics.task.AbstractTaskEngineSQL
Direct Known Subclasses:
TaskEngineInsert, TaskEngineInsertBatch, 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
est :
"primitif" : LON_IDENTIFIANT_ID ou DAT_DATE_SAISIE
"champ de dto" : . : DTO_PERSONNE.NOM ou encore DTO_PERSONNE.PER_ID
"champ de dtc" : .<n°_de_ligne>. : 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 Details

    • 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:
  • Constructor Details

    • 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 Details

    • doExecute

      protected abstract OptionalInt doExecute(SqlStatement sqlStatement, SqlConnection connection) throws SQLException
      Exécution de la requête.
      Parameters:
      connection - Connexion BDD
      Returns:
      Nombre de lignes affectées (Insert/ Update / Delete)
      Throws:
      SQLException - Erreur sql
    • execute

      public void execute()
      Specified by:
      execute in class TaskEngine
    • 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
    • getSqlManager

      protected final SqlManager getSqlManager()
      Returns:
      Manager de base de données
    • getSmartTypeManager

      protected final SmartTypeManager getSmartTypeManager()
      Returns:
      Manager du modèle
    • getConnectionProvider

      protected SqlConnectionProvider getConnectionProvider()
      Il est possible de surcharger la configuration SQL d'un service.
      Returns:
      Configuration SQL.