Class 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
    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 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 BDD
        statement - Requête
        Returns:
        Nombre de lignes affectées (Insert/ Update / Delete)
        Throws:
        SQLException - Erreur sql
      • 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.