Un modèle définit un fichier, class, répertoire... à sélectionner par l'utilisateur qui peut être de type :
Un modèle est requis dans le cas :
Le modèle est constitué d'élements model qui permettent de définir les fichiers requis (pour le template ou le XUL dynamique) et oblige ainsi l'utilisateur à sélectionner les fichiers requis.
Nom attribut | Description | Obligatoire ? |
type | xml: dans le cas ou un document XML doit être chargé. class: dans le cas ou une classe JAVA doit être chargé. properties: dans le cas ou un fichier de propriétés doit être chargé. folder: dans le cas ou un répertoire java.io.File doit être chargé. | Oui |
key | Clé utilisé dans le template ou dans le XUL dynamique. | Oui |
useIntoOutput | true si le fichier est utilisé dans le template. | Non |
useIntoInput | true si le fichier est utilisé dans le XUL dynamique. | Non |
omitDocumentType | true si la DTD/Schéma XML doit être ignorés lors du chargement d'un fichier XML (type=xml). | Non |
path | renseigne le chemin d'un fichier ou d'un répertoire (folder) à utiliser dans le modèle pour éviter de sélectionner un fichier dans le cas où le fichier/folder est toujous le même (voir section path pour plus d'informations). | Non |
Un modèle de type xml permet d'utiliser un fichier xml avec un moteur de template (Freemarker, XSL,..).
Voici un exemple de défintion d'un modèle de type xml utilisé dans le template avec la clé doc :
<models> <!-- This component requires selection of XML File which is used into Template context (Output) --> <model type="xml" key="doc" useIntoOutput="true" omitDocumentType="true" /> </models>
Voici un exemple de template Freemarker qui utilise ce modèle de type xml enregistré avec la clé doc :
<#assign classElement = doc["hibernate-mapping"].class /> <#list classElement.property as item> private ${item.@type} ${item.@name}; </#list>
Un modèle de type properties permet d'utiliser un fichier properties avec un moteur de template (Freemarker, XSL,..).
Voici un exemple de défintion d'un modèle de type properties utilisé dans le template avec la clé prop :
<models> <!-- This component requires selection of properties File which is used into Template context (Output) --> <model type="properties" key="prop" useIntoOutput="true" /> </models>
Voici un exemple de template Freemarker qui utilise ce modèle de type properties enregistré avec la clé prop :
<#assign properties = prop.properties /> <#list properties?keys as key> key : ${key} value : ${properties[key]} </#list>
Voici un exemple de défintion d'un modèle de type class JAVA utilisé dans le template avec la clé pojo :
<models> <!-- This component requires selection of Java class which is used into Template context (Output) --> <model type="class" key="pojo" useIntoOutput="true" /> </models>
Voici un exemple de template Freemarker qui utilise le modèle de type class JAVA enregistré avec la clé pojo :
<#list pojo.fields as f> <property name="${f.elementName}" type="${f.typeSignature?substring(1)}" column="${f.elementName}" /> </#list>
Le modèle de type folder permet d'utiliser un répertoire de type java.io.File dan le modèle. Ce type de modèle peut être utile lorsque vous voulez naviguer dans un répertoire et générer un XUL dynamique en fonction des fichiers/répertoires du folder spécifié.
Voici un exemple de défintion d'un modèle de type folder utilisé dans le template avec la clé dir :
<models> <model type="folder" key="dir" useIntoInput="true" /> </models>
Voici un exemple de template Freemarker avec une syntaxe square bracket qui utilise le modèle de type folder enregistré avec la clé dir :
... [#list dir.listFiles() as f] <treeitem checked="true" > <treerow> [#assign isDirectory = f.isDirectory() /] [#if isDirectory] <treecell label="DIRECTORY : ${f.name}" /> [#else] <treecell label="FILE : ${f.name}" /> [/#if] </treerow> </treeitem> [/#list] ...
Lorsque le fichier xml, properties,... ou le répertoire folder à utiliser dans un modèle du XML component est connu quelque soit le projet, il est intéréssant de renseigner l'attribut path de l'élement model. Le path renseigné permettra d'éviter de sélectionner le fichier model à chaque ouverture du XML component.
Par exemple dans un projet J2EE, le fichier web.xml existe toujours, et est souvent stocké dans le répertoire web/WEB-INF du projet. Si vous avez un XML component qui requiert ce fichier en tant que modèle, il peut être intéressant de renseigner l'attribut path comme ceci :
<models> ... <model type="xml" key="webxml" useIntoOutput="true" omitDocumentType="true" path="project:/web/WEB-INF/web.xml" /> ... </models>
Comme vous avez pu le remarquer, path commence par project:/, ce qui signifie que le répertoire racine est le projet Eclipse auquel le catalogue est associé. project:/ n'est pas obligatoire, vous pouvez renseigner path comme ceci :
<models> ... <model type="xml" key="webxml" useIntoOutput="true" omitDocumentType="true" path="web/WEB-INF/web.xml" /> ... </models>
path peut commencer par :
path="catalogue:/myDataFile.xml"
fait référence au fichier myDataFile.xml stocké dans le répertoire de base du catalogue.
path="file:/C:/myDataFile.xml"
fait référence au fichier myDataFile.xml stocké dans le répertoire C:/.
Vous pouvez utiliser les patterns :
Par exemple, vous pouvez renseigner le path comme ceci :
path="web/*/struts-config.xml"