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 io.vertigo.datamodel.task.model.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" : .invalid input: '<'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 invalid input: '<'%if (dtoProduitCritere.getPrdLibelle()!=null) {%> Where PRD_LIBELLE like #DTO_PRODUIT_CRITERE.PRD_LIBELLE#||'%%' invalid input: '<'%}%> order by invalid input: '<'%=1%>";
Author:
pchretien, npiedeloup
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final io.vertigo.commons.transaction.VTransactionResourceId<io.vertigo.database.sql.connection.SqlConnection>
    Identifiant de ressource SQL par défaut.
    static final String
    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, io.vertigo.database.sql.SqlManager sqlManager, io.vertigo.datamodel.smarttype.SmartTypeManager smartTypeManager, io.vertigo.core.analytics.AnalyticsManager analyticsManager)
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract OptionalInt
    doExecute(io.vertigo.database.sql.statement.SqlStatement sqlStatement, io.vertigo.database.sql.connection.SqlConnection connection)
    Exécution de la requête.
    void
    protected io.vertigo.database.sql.connection.SqlConnectionProvider
    Il est possible de surcharger la configuration SQL d'un service.
    protected final io.vertigo.datamodel.smarttype.SmartTypeManager
     
    protected final io.vertigo.database.sql.SqlManager
     
    protected String
    Retourne la Query qui sera parsée Par défaut il s'agit de la request définie sur le service
    protected io.vertigo.commons.transaction.VTransactionResourceId<io.vertigo.database.sql.connection.SqlConnection>
     
    protected final String
    Permet de créer du SQL dynamiquement interprété.
    protected void
    setNamedParameters(io.vertigo.database.sql.statement.SqlStatementBuilder sqlStatementBuilder)
     

    Methods inherited from class io.vertigo.datamodel.task.model.TaskEngine

    getContextProperties, getContextProperty, getTaskDefinition, getValue, process, setResult

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • SQL_MAIN_RESOURCE_ID

      public static final io.vertigo.commons.transaction.VTransactionResourceId<io.vertigo.database.sql.connection.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, io.vertigo.database.sql.SqlManager sqlManager, io.vertigo.datamodel.smarttype.SmartTypeManager smartTypeManager, io.vertigo.core.analytics.AnalyticsManager analyticsManager)
      Constructor.
      Parameters:
      scriptManager - Manager de traitment de scripts
  • Method Details

    • doExecute

      protected abstract OptionalInt doExecute(io.vertigo.database.sql.statement.SqlStatement sqlStatement, io.vertigo.database.sql.connection.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 io.vertigo.datamodel.task.model.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 invalid input: '<'%if (dtoProduitCritere.getPrdLibelle()!=null) {%> Where PRD_LIBELLE like #DTO_PRODUIT_CRITERE.PRD_LIBELLE#||'%%' invalid input: '<'%}%> order by invalid input: '<'%=1%>";
      Parameters:
      sqlQuery - Requete à évaluer
      Returns:
      Requete évaluée
    • setNamedParameters

      protected void setNamedParameters(io.vertigo.database.sql.statement.SqlStatementBuilder sqlStatementBuilder)
    • getVTransactionResourceId

      protected io.vertigo.commons.transaction.VTransactionResourceId<io.vertigo.database.sql.connection.SqlConnection> getVTransactionResourceId()
      Returns:
      Id de la Ressource Connexion SQL dans la transaction
    • getSqlManager

      protected final io.vertigo.database.sql.SqlManager getSqlManager()
      Returns:
      Manager de base de données
    • getSmartTypeManager

      protected final io.vertigo.datamodel.smarttype.SmartTypeManager getSmartTypeManager()
      Returns:
      Manager du modèle
    • getConnectionProvider

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