HOWTO d�veloppement Sashipa

 

 Trucs et astuces en Sashipa.

 

Externaliser les infos de connexions

Lorsque l'on cr�e une application, le fichier source XML est inclus dans le fichier jar g�n�r�. C'est pratique : on ne risque plus de perdre le code source. Mais c'est aussi dangereux puisque ce fichier contient en clair les informations de connexion. Le mieux est donc d'externaliser les �l�ments sensibles, puis d'y faire r�f�rence depuis le fichier XML principal.

Cela se fait simplement en utilisant la technique des entit�s XML. On cr�e tout d'abord un fichier XML, appelons-le demo_connexion.xml. Voici son contenu :

  <?xml version='1.0' encoding='ISO-8859-1' ?>

  <user>theLogin</user>
  <password>thePassword</password>

Puis nous revenons � notre fichier source principal. En t�te de fichier nous ajoutons le nouveau fichier comme une entit� :

  <?xml version='1.0' encoding='ISO-8859-1' ?>

  <!DOCTYPE application SYSTEM 'resources/sashipa.dtd' [
    <!ENTITY br '&#xA;'>
    <!ENTITY nbsp '&#x20;'>
    <!ENTITY frenchDefinition SYSTEM 'resources/SashipaFrench.xml'>
    <!ENTITY englishDefinition SYSTEM 'resources/SashipaEnglish.xml'>
    <!ENTITY germanDefinition SYSTEM 'resources/SashipaGerman.xml'>
    <!ENTITY demoConnexion SYSTEM 'demo_connexion.xml'>
  ]>

Il ne nous reste plus qu'� utiliser cette entit� dans notre �l�ment dbConnection :

  <dbConnection type='odbc' dbmsType='MySQL'>
    <dbConnectionString>DsnDemo</dbConnectionString>
    &demoConnexion;
  </dbConnection>

Le m�canisme des entit�s XML est similaire � une inclusion par copier/coller au moment du parsing (de la lecture) du fichier XML.

 

Notez cependant que cette op�ration n'est qu'une forme de r�partition du code source. Si vous changez les informations de connexion, �a ne vous dispense pas de recompiler.

De plus, il faut savoir que le login et le mot de passe sont aussi en clair dans le fichier compil� Java (.class) qui s'occupe des acc�s � la base de donn�es. Dans le cas d'une architecture de type client-database on ne peut pas y faire grand chose. En revanche, avec une architecture client-servlet-database, vous pouvez d�zipper le fichier jar, retirer les deux fichiers de la servlet (XXXServlet.class, XXXServletAnalyser.class), puis reconstruire le fichier jar (cf commande en ligne 'jar' dans le J2SDK).

 

Param�tres par d�faut des champs.

On d�finit les param�tres par d�faut des champs dans l'�l�ment defaultParameterSet. Pour chaque type de param�tre, on d�finit une valeur applicable � tous (applyOn='field') et/ou � tous les fk-fields (applyOn='fkField'). De plus, on peut pr�ciser une valeur pour chaque champ en particulier (exemple : applyOn='comboBoxFkField').

Lorsque un champ cherche sa valeur par d�faut, il prend la valeur la plus pr�cise qu'il puisse trouver. Par exemple, un comboBoxFkField qui cherche sa taille, (type='size') va prendre celle d�finie dans applyOn='comboBoxFkField'. Si elle n'existe pas, il prendra celle de applyOn='fkField' et � d�faut, celle de applyOn='field'.

Les couleurs se d�finissent dans les param�tres par d�faut, au format RGB (Rouge Vert Bleu) en hexad�cimal. On d�finit une couleur par ses composantes dans ces trois couleurs, entre 0 et ff.

Le composant textAreaField (applyOn='textAreaField') supporte un param�tre qui lui est sp�cifique pour passer � la ligne automatiquement : wordWrap. La valeur est de type bool�enne.

 

D�finir des fichiers journaux.

Il est possible de d�finir des fichiers journaux, qui seront mis � jour par la partie serveur de votre application. On les d�finit dans l'�l�ment dbAccessStage de la partie architecture du fichier source.

  ...
  </dbConnection>

  <dbAccessLog>
    <filenameLogMain>/Melba_Demo_Main.log</filenameLogMain>
    <filenameLogUpdate>/Melba_Demo_Update.log</filenameLogUpdate>
    <filenameLogSelect>/Melba_Demo_Select.log</filenameLogSelect>
  </dbAccessLog>

Il y en a trois, chacun est facultatif :

  • Le log Main historise les informations d'ouverture et de fermeture de sessions (ie. de lancement/fermeture des applications clientes). Notez que dans le cas d'une configuration client-servlet-database, les informations journalis�es dans ce fichier, le sont aussi dans le journal de votre container de servlets (Tomcat ou autre).

  • Le log Update historise les requ�tes de mise � jour : les requ�tes SQL de type INSERT, UPDATE et DELETE.

  • Le log Select historise les requ�tes SQL de s�lection (type SELECT). Ce log est tr�s pratique - pour ceux qui ma�trisent le SQL - pour d�boguer et v�rifier que les requ�tes g�n�r�es sont correctes. En revanche, je ne recommande pas de le laisser en production.

 

Cr�er une application insensible � la casse.

Vous pouvez sp�cifier que votre application transforme (et affiche !) l'int�gralit� de son contenu en majuscules ou en minuscules. Cela se fait simplement en modifiant un param�tre par d�faut :

  <defaultParameter applyOn='textFormat' type='modifier'>upperCase</defaultParameter>

Vous avez le choix entre les valeurs lowerCase, upperCase et nothing (par d�faut).

 

En compl�ment (ou ind�pendamment), vous pouvez aussi faire en sorte que les comparaisons pour les crit�res de recherche soient insensibles � la casse :

  <defaultParameter applyOn='textSchemaColumn' type='criteriaCaseSensitive'>no</defaultParameter>

 

G�n�rer une application en lecture-seule.

Si l'application que vous d�veloppez est une application en lecture-seule, vous retirerez dans le source les boutons d'ajout dans les menus, les requ�tes de mise � jour dans les cardForm (cardSchemaTableRef ... queries='s'), les boutons d'ajout des listForm (l'�l�ment insertScreen) et ceux des fkFields.

Pas de probl�mes...

En revanche, si vous avez d�velopp� une application compl�te, peut-�tre que vous appr�cierez de pouvoir la reg�n�rer dans une version en lecture-seule, sans pour autant modifier le code source.

Cette op�ration se fait le plus simplement du monde en passant un param�tre de plus � la commande melbabuild :

  melbabuild democontact democontact_consult readonly

Le deuxi�me param�tre est le nom du fichier � g�n�rer (sans l'extension .jar), il est libre mais obligatoire. Le param�tre readonly doit venir en troisi�me et est pass� au programme Sashipa2Melba, qui g�n�re alors du code Java sans impl�menter les mises � jour.

Notez que dans le cas d'une architecture client-servlet-database, la servlet g�n�r�e n'autorise pas les requ�tes de mises � jour. Si vous mettez en production votre application sous sa forme normale et sous sa forme en lecture-seule, alors il faut utiliser la servlet g�n�r�e par la commande de g�n�ration normale. Pas celle en lecture seule qui est brid�e.

Derni�re info qui a son importance : les applications g�n�r�es en lecture-seule n�cessite le JRE (ou JDK) 1.4 ou sup�rieur. Elles ne sont plus compatibles JRE 1.3 .

 

D�finir un bouton 'quitter' ou 'revenir' dans un menu.

Voil� un bout de code g�n�r� automatiquement par Database2Sashipa, mais �a n'emp�che pas de le comprendre :

  <screen name='SMMain'>
    <title>Base D�mo</title>
    <formSet>
      <menuForm>
        <menuTitle height='70'>Base D�mo</menuTitle>
        <firstButtonLocation x='100' y='150' />
        <buttonSize w='400' h='36' verticalGap='18' />
        <menuButtonList>
          ...
        </menuButtonList>
        <menuComeBackButton />
      </menuForm>
    </formSet>
    <screenComeBackButton enable='no' />
  </screen>

Tout d'abord il faut savoir que chaque �cran dispose d'un bouton comeBack, sauf lorsqu'on pr�cise le contraire (comme ici : screenComeBackButton enable='no').

Le libell� du bouton est "Quitter" pour le premier �cran de l'application et "Revenir" pour tous les autres. Ces deux libell�s sont d�finis - comme tous les autres libell�s - dans le fichier de langage (<melbalab-home>/src_xml/resources/SashipaXXX.xml).

Un menuForm peut afficher un bouton 'comeBack' en derni�re position. Il suffit pour ce d'ajouter l'�l�ment vide menuComeBackButton. Ce bouton prendra sa valeur selon le m�me principe que le bouton comeBack de l'�cran.

 

Ajouter un nouveau langage

Vous pouvez ais�ment ajouter un nouveau langage � la technologie Sashipa-Melba, sans d�velopper quoi que ce soit.

1) Traduire un des fichier de langage.

Tous les messages et libell�s sont d�finis dans un unique fichier de langage. Aussi, fa�te une copie d'un des fichiers <melbalab>/src_xml/resources/SashipaXxx.xml puis �ditez la copie. Prenez garde � l'encodage. Traduisez tous les contenus de balises dans le nouveau langage. Mais attention � ne pas modifier un nom de balise ou d'attribut, ni une valeur d'attribut ! Traduisez uniquement le contenu des balises.

Ensuite, il y a une (seule) valeur d'attribut � changer, il faut donner un nom au premier �l�ment:

  <languageDefinition name='yourNewLanguage'>

2) Dans l'application Sashipa: ajouter le langage comme une entit�.

Dans votre application Sashipa, en d�but de fichier, vous ajoutez votre nouveau fichier de langage :

  <?xml version='1.0' encoding='ISO-8859-1' ?>

  <!DOCTYPE application SYSTEM 'resources/sashipa.dtd' [
    <!ENTITY br '&#xA;'>
    <!ENTITY nbsp '&#x20;'>
    <!ENTITY frenchDefinition SYSTEM 'resources/SashipaFrench.xml'>
    <!ENTITY englishDefinition SYSTEM 'resources/SashipaEnglish.xml'>
    <!ENTITY germanDefinition SYSTEM 'resources/SashipaGerman.xml'>
    <!ENTITY yourNewLanguageDefinition SYSTEM 'resources/SashipaYourNewLanguage.xml'>
  ]>

2) Dans l'application Sashipa: utiliser le nouveau fichier de langage.

Dans votre application Sashipa, dans la partie architecture, vous pouvez maintenant utiliser la nouvelle entit�:

  <architecture>
    ...

    <languageDefinitionSet mainLanguageDefinition='yourNewLanguage'>
      &yourNewLanguageDefinition;
    </languageDefinitionSet>
  </architecture>

 

NB : Pour ajouter un nouveau langage au programme Database2Sashipa, il est encore n�cessaire de modifier un fichier source Java (databasesashipa/Database2Sashipa.java) et de recompiler. D�sol�...

Important : une fois que vous avez traduit le fichier de langage dans un nouveau langage, partagez votre travail pour les autres utilisateurs svp. Envoyez-moi le fichier par email ou posez un lien pour le t�l�chargez depuis le forum.

 

Porter Sashipa-Melba vers un autre syst�me d'exploitation

Tous les composants de la technologie Sashipa-Melba sont �crits en Java. Donc la technologie fonctionnera sur tout syst�me d'exploitation disposant d'un kit de d�veloppement Java. En revanche pour g�n�rer une application, vous avez besoin d'un script Shell (<melbalab>/melbabuild[.bat]) qui lui est sp�cifique � votre syst�me. Il ne vous reste plus qu'� le r�-�crire...

Important : une fois que vous avez traduit le script melbabuild dans un nouveau langage de Shell, partagez votre travail pour les autres utilisateurs svp. Envoyez-moi le fichier par email ou posez un lien pour le t�l�chargez depuis le forum.

 

© Copyright 2003 Sashipa-Melba Team. Ce document de la technologie Sashipa-Melba est sous licence GNU FDL Vous pouvez le copier et modifier librement les copies tant que cette mention appara�t clairement.