MENU

  /   Class

Met een class wordt een java class gedefinieerd.
Het name attribuut is verplicht en geeft de naam van de class aan. Dit is de syntax:

<?xml version="1.0" encoding="UTF-8"?>
<pattern xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://www.firstbase.nl/xsd/personaliom/pattern"
         xsi:schemaLocation="http://www.firstbase.nl/xsd/personaliom/pattern
                             http://www.firstbase.nl/xsd/personaliom/pattern.xsd">

  ...
    <class  name=""
            visibility=""
            abstract="true|false"
            final="true|false"
            enum="true|false"
            foreach="package|object|attribute|reference"
            condition=""
            package=""
            object=""
            var0=""
            var1=""
            var2=""
            var3=""
            var4=""
            var5="">
      <generic></generic>
      <apicomment></apicomment>
      <developercomment></developercomment>
      <libraries>
        <library></library>
        <library></library>
        ...
        <library></library>
      </libraries>
      <annotation></annotation>
      <inherits condition="" foreach="package|object|attribute" package=""></inherits>
      <implements condition=""></implements>
      <enumConstants></enumConstants>
      <attribute></attribute>
      <operation></operation>
    </class>
  ...
</pattern>

attributen van <class/>:

Naam Betekenis
name De naam van de java class die gemaakt wordt
visibility Geeft de zichtbaarheid van de class aan. Mogelijke waardes zijn public, protected en private
abstract true of false. Geeft aan of de class abstract gedefinieerd moet worden of niet.
final true of false. Geeft aan of de class final gemaakt moet worden of niet.
enum true of false. Geeft aan of een enum of een normale java class gemaakt moet worden. Default is false. Bij true moet via het subelement enumConstants de enum waardes worden opgegeven.
vb:

  ...
  <class name="Color" visibility="public" enum="true">
    <enumConstants>WHITE, BLACK, RED, YELLOW, BLUE</enumConstants>
    ...
    

Hiermee wordt de volgende java enum class gemaakt:

public enum Color {
 WHITE, BLACK, RED, YELLOW, BLUE;
}    

In de praktijk worden enum classes in model.xml beschreven. Via metadata in het model (properties) moet dan worden aangegeven of van het model object een enum of een class gemaakt moet worden:

  <class name="${pattern.property.model.implementation.class}" visibility="public" enum="${model.property.object.enum}" foreach="object">
    <libraries>
    </libraries>
    <enumConstants condition="${model.property.object.enum}==true">${fmsnippet.java.pojo.enum.enumConstants}</enumConstants>

en met een model.xml waarin een object (in dit geval RelationType) de metadata enum=true en de metadata voor enumConstants heeft:

<?xml version="1.0" encoding="UTF-8"?>
<model 	xmlns="http://www.firstbase.nl/xsd/personaliom/model"
				xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
				xsi:schemaLocation="http://www.firstbase.nl/xsd/personaliom/model http://www.firstbase.nl/xsd/personaliom/model.xsd">
  <package name="domain_model">
	...
    <object name="RelationType">
      <properties>
        <enum>true</enum>
        <enum.constants>Private,Business</enum.constants>
        <serialVersionUID>1</serialVersionUID>
      </properties>
    </object>
...
  </package>
</model>
foreach Geeft aan of er geïtereerd moet worden over het model. Mogelijke waarden: package, object, attribute, reference
condition Een expression die uitkomt op true of false. Indien er true uitkomt wordt het package (pattern) ook daadwerkelijk gemaakt, maar als er false uit komt niet.
vb:

condition="${object.name}=Person"

De class wordt in dit geval alleen gemaakt indien het huidige model object de naam Person heeft. Dit werkt alleen indien er geïtereerd wordt over alle model objecten (foreach=”object”).

package Naam van het package in het model (model.xml) wat gebruikt moet worden voor het uitvoeren van het foreach attribuut
object Naam van het object in het model (model.xml) wat gebruikt moet worden voor het uitvoeren van het foreach attribuut
var0 Waarde die je wil opslaan in de voorgedefinieerde variabele met naam var0. Naar deze waarde kan later worden gerefereerd d.m.v. ${var0}. Dit kan zowel in het pattern als in een snippet worden gebruikt.
var1 Waarde die je wil opslaan in de voorgedefinieerde variabele met naam var1. Naar deze waarde kan later worden gerefereerd d.m.v. ${var1}. Dit kan zowel in het pattern als in een snippet worden gebruikt.
var2 Waarde die je wil opslaan in de voorgedefinieerde variabele met naam var2. Naar deze waarde kan later worden gerefereerd d.m.v. ${var2}. Dit kan zowel in het pattern als in een snippet worden gebruikt.
var3 Waarde die je wil opslaan in de voorgedefinieerde variabele met naam var3. Naar deze waarde kan later worden gerefereerd d.m.v. ${var3}. Dit kan zowel in het pattern als in een snippet worden gebruikt.
var4 Waarde die je wil opslaan in de voorgedefinieerde variabele met naam var4. Naar deze waarde kan later worden gerefereerd d.m.v. ${var4}. Dit kan zowel in het pattern als in een snippet worden gebruikt.
var5 Waarde die je wil opslaan in de voorgedefinieerde variabele met naam var5. Naar deze waarde kan later worden gerefereerd d.m.v. ${var5}. Dit kan zowel in het pattern als in een snippet worden gebruikt.

subelementen van <class/>:

Naam Betekenis Aantal
generic Maakt de class generic (java 1.5 of hoger). 0 of 1
apicomment Javadoc dat wordt toegevoegd aan deze class. 0 of 1
developercomment Commentaar dat aan deze class wordt toegevoegd. 0 of 1
libraries Alle libary elementen onder library worden als import statement toegevoegd aan de class. 0 of 1 (library 0 of meer)
annotation Annotation die aan de class wordt toegevoegd. 0 of meer
inherits De class waar deze class van afgeleid is. 0 of meer (java ondersteunt hooguit 1)
implements De interface die door deze class wordt geïmplementeerd. 0 of meer
enumConstants De enum waardes (bv. Private,Business) 0 of 1
attribute attributen die deze class bevat. Met het attribute element wordt zowel het veld als eventueel de bijbehorende getters en setters gedefinieerd (afhankelijk van het access attribuut (rw|ro|wo). 0 of meer
operation methodes die deze class bevat . 0 of meer