Sébastien Pertus
Olymars : Industrialisation
Comment utiliser Olymars et l’intégrer en tant que process d’intégration continue lors de la réalisation d’un prototype.
Par Sébastien Pertus publié le 24/11/2008 à 17:18, lu 3103 fois, 6 pages
 3 | Coder votre template grâce à Visual Studio
Une des nouveautés majeur de cette version est la possibilité, moyennant un petit effort, de directement coder vos templates dans Visual studio, en disposant de toute la puissance de l’IDE : coloration syntaxique, indentation, intellisense etc …
Le principe est donc de transporter notre template de l’éditeur d’Olymars vers celui de Visual Studio 2008 :
 
/content/a5af2720-8219-479d-bd0a-7db32c20c3e3/image2.jpeg
 
Pour ce faire, vous disposez d’un pré-template Olymars pour commencer votre développement.
Une capture d’écran où nous appelons une méthode provenant directement du SDK Olymars :
 
/content/a5af2720-8219-479d-bd0a-7db32c20c3e3/image3.jpeg
 
Dans notre cas, nous avons écris l’ensemble des templates de toutes nos couches, que ce soit SQL, Business (WCF) et interface utilisateur.
Nous avons donc créé un projet web, comprenant l’ensemble des nos templates :
 
/content/a5af2720-8219-479d-bd0a-7db32c20c3e3/image4.jpeg
 
Nous avons écris les templates pour toute sorte de code :
  • Procédures stockées.
  • Classes entités, interfaces, services et proxies.
  • Designer de formulaires.
  • Fichiers de configuration XML (pour WCF notamment)
Les références utilisées sont biensur d’une part l’assembly d’Olymars : SQLCodeGenDotNet et d’autre part une assembly personnalisée : Bewise.Poc.OlyExtensions.
En effet, nous avons essayé au maximum d’alléger les templates en faisant appel à une assembly où l’ensemble des méthodes complexes, les méthodes globales et communes sont écrites :
 
/content/a5af2720-8219-479d-bd0a-7db32c20c3e3/image5.png
 
Un exemple de code contenu dans la classe OlyCommon.cs :

/// <summary>

/// Génère l'ensemble des accesseurs et des propriétés privée

/// </summary>

/// <example>

///     protected Guid clientId;

///     [DataObjectField(true, false, false)]

///     [DataMember]

///     public virtual Guid ClientId

///       {

///           get { return this.clientId; }

///           set

///           {

///             if (this.clientId != value)

///               {

///                   this.clientId = value;

///                   this.SendPropertyChanged("ClientId");

///               }

///           }

///       }

/// </example>

public static string GeneratePrivateFieldsAndAccessors(StoredProcedure storedProcedure, int indentLevel)

{

    CustomColumn[] columns = OlyExtendedProperties.GetColumnsTypeMapping(storedProcedure);

 

    System.Text.StringBuilder response = new System.Text.StringBuilder();

    for (int i = 0; i < columns.Length; i++)

    {

        response.Append(GenerateFieldAndAccessor(storedProcedure, columns[i], indentLevel));

 

        if (i != (columns.Length - 1))

            response.AppendLine();

    }

    return response.ToString();

}

Notre template devient très clair :
 
/content/a5af2720-8219-479d-bd0a-7db32c20c3e3/image6.jpeg
 
 
» Démarrer une discussion