Datentypen & Aufzählungen in Faktor-IPS

Verwendung vordefinierter Datentypen

Faktor-IPS enthält standardmäßig Datentypen für die meisten primitiven Typen von Java und deren Wrapperklassen sowie für String, Date und GregorianCalendar. Darüber hinaus gibt es einen Datentyp Money zum Abbilden von Geldbeträgen und eine spezielle Decimal-Implementierung.

Welche dieser Datentypen in einem Projekt verwendet werden können, wird in der „.ipsproject“-Datei festgelegt. Bevor wir einen Blick in die Datei werfen können, benötigen wir ein neues Faktor-IPS Projekt. Wie man dieses anlegt ist ausführlich im Einführungstutorial beschrieben.

Öffnen Sie nun die „.ipsproject“-Datei. Wenn Sie diese nicht direkt sehen, liegt das daran, dass der Package-Explorer standardmäßig keine Dateien anzeigt, die mit einem Punkt beginnen. Im unteren Teil des XMLs finden Sie das Element <Datatypes>, mit dem die im Projekt erlaubten Datentypen festgelegt werden. Bei der Anlage eines neuen Projektes werden zunächst alle vordefinierten Datentypen als im Projekt verwendbar eingetragen. Möchte man bestimmte Datentypen ausschließen, zum Beispiel weil man bei Berechnungen Fließkommazahlen nicht zulassen möchte, so kann man einfach die entsprechenden Einträge entfernen.

<Datatypes>
    <UsedPredefinedDatatypes>
        <Datatype id="Double"/>
        <Datatype id="Long"/>
        <Datatype id="Money"/>
        <Datatype id="Decimal"/>
        <Datatype id="Date"/>
        <Datatype id="String"/>
        ...
    </UsedPredefinedDatatypes>
    <DatatypeDefinitions/>
</Datatypes>

Um das zu veranschaulichen, legen Sie zunächst eine neue Vertragsklasse an und ein neues Attribut mit dem Namen beitrag. Wenn Sie nun im Dialog zur Bearbeitung des Attributes auf den Browse…​ Button neben dem Datatype Feld klicken, sehen Sie die verfügbaren Datentypen.

Dialog zur Auswahl eines Datentyps
Figure 1. Dialog zur Auswahl eines Datentyps

Wählen Sie Double aus, schließen die Dialoge und speichern die Klasse. Löschen Sie nun in der „ipsproject“-Datei die Zeile, die die Verwendung des vordefinierten Datentyps Double im Projekt erlaubt. Speichern Sie die „.ipsproject“-Datei. Das Attribut beitrag wird nun als fehlerhaft markiert. Wenn Sie den Dialog mit den Datentypen erneut öffnen, wird dort Double nicht mehr aufgeführt.

In diesem Kapitel haben wir bisher immer von den in Faktor-IPS vordefinierten Datentypen gesprochen. Dies ist nur die halbe Wahrheit. Tatsächlich verwendet Faktor-IPS den Eclipse Extension Point Mechanismus zur Definition von Datentypen. Das heißt andere PlugIns können ebenfalls (Faktor-IPS) Datentypen definieren. Hat ein Entwickler neben Faktor-IPS auch solch ein weiteres PlugIn installiert, so kann er auch die von diesem PlugIn definierten Datentypen verwenden. Aus Sicht des Entwicklers gibt es dann letztendlich keinen Unterschied zwischen einem von Faktor-IPS vordefinierten Datentype und einem Datentyp, welcher durch ein anderes PlugIn zur Verfügung gestellt wird. Die Verwendung dieses Mechanismus setzt natürlich Kenntnisse über die Entwicklung von Eclipse-PlugIns voraus. Da die Einführung eines neuen Datentyps in diesem Szenario immer mit dem Rollout des PlugIns verbunden ist, lohnt es sich nur, wenn es sich um grundlegende Datentypen handelt, die unternehmensweit in mehreren Projekten eingesetzt werden oder wenn Faktor-IPS zur Entwicklung von Standardsoftware eingesetzt wird [5]. In einem einzelnen Projekt geht es einfacher mit dem im folgenden Kapitel beschriebenen Verfahren.


5 Da die Faktor-IPS eigenen Datentypen ebenfalls über den Mechanismus registriert werden, können sich Entwickler die Definition der entsprechenden Extensions im PlugIn „org.faktorips.devtools.model“ ansehen. Der Extension Point hat die ID „datatypeDefinition“.