Generatoroptionen

Einleitung

Faktor-IPS bietet viele Möglichkeiten, den Java-Code, der aus dem Modell generiert wird, an die eigenen Bedürfnisse anzupassen. Diese werden über den Abschnitt IpsArtefactBuilderSetConfig in der .ipsproject-Konfigurationsdatei bzw. über die Projekteinstellungen auf der Seite "Faktor-IPS Code Generator" konfiguriert:

<IpsArtefactBuilderSetConfig>

   <!--Generiert JAXB-Annotationen in Vertragsklassen.-->
   <Property name="generateJaxbSupport" value="false"/>

   <!--Generiert nur Implementierungsklassen (false) oder auch Published Interfaces (true)-->
   <Property name="generatePublishedInterfaces" value="false"/>

   <!--Hier können die qualifizierten Namen für zusätzliche Annotationen eingestellt werden, die an alle generierten Methoden angehängt werden (z.B. org.faktorips.runtime.annotation.IpsGenerated (um generierten Code von der Analyse durch SonarQube/JaCoCo auszuschließen) / java.lang.SuppressWarnings / edu.umd.cs.findbugs.annotations.SuppressFBWarnings). Mehrere Annotationen werden mit Strichpunkt getrennt.-->
   <Property name="additionalAnnotations" value="org.faktorips.runtime.annotation.IpsGenerated"/>

   <!--Konstantennamen für Camel-Case-Properties mit Unterstrich trennen.-->
   <Property name="camelCaseSeparated" value="true"/>

   <!--Qualifizierter Name der Basisklasse für Vertragsklassen. Falls ein leerer String angegeben wird, wird die Defaultbasisklasse benutzt.-->
   <Property name="baseClassPolicyComponent" value=""/>

   <!--Der Logging Konnektor der im generierten Code verwendet werden soll. Wenn "None" ausgewählt ist, wird kein Logging generiert. Im Standard sind die Konnektoren "org.faktorips.devtools.core.javaUtilLoggingConnector" und "org.faktorips.devtools.core.log4jLoggingConnector" enthalten. Neue Konnektoren werden mit dem Extension Point "org.faktorips.devtools.core.loggingFrameworkConnector" registriert.-->
   <Property name="loggingFrameworkConnector" value="None"/>

   <!--Nicht mergebare Ressourcen als abgeleitet markieren.-->
   <Property name="markNoneMergeableResourcesAsDerived" value="false"/>

   <!--Hier können die Namen für Annotationen eingestellt werden, die, wenn manuell hinzugefügt, an generierten Methoden nicht entfernt werden (z.B. Override). Mehrere Annotationen werden mit Strichpunkt getrennt. Wird die Annotation qualifiziert verwendet (z.B. weil es mehrere Annotationen mit gleichem unqualifiziertem Namen gibt) muss der Name hier qualifiziert angegeben werden, ansonsten unqualifiziert.-->
   <Property name="retainAnnotations" value=""/>

   <!--Legt fest wohin Formeln kompiliert werden.-->
   <Property name="formulaCompiling" value="Both"/>

   <!--Die Sprache in der Code und Dokumentation generiert werden. Derzeit werden die Werte de und en unterstützt.-->
   <Property name="generatorLocale" value="de"/>

   <!--Generiert toXml()-Methoden in Produktbaustein und -generationsklassen.-->
   <Property name="toXMLSupport" value="false"/>

   <!--Generiert copy-Methoden in Vertagsklassen.-->
   <Property name="generateCopySupport" value="true"/>

   <!--Generiert Unterstützung für das Visitor-Pattern in allen Vertragsklassen.-->
   <Property name="generateVisitorSupport" value="true"/>

   <!--Der Persistence-Provider, der zur Generierung herstellerspezifischen Codes verwendet wird. Derzeit werden die Provider 'EclipseLink 1.1', 'EclipseLink 2.5', 'Generic JPA 2.0', 'Generic JPA 2.1' und 'Jakarta Persistence 2.2' unterstützt.-->
   <Property name="persistenceProvider" value="$IPS-PersistenceDatabase$"/>

   <!--Generiert einen Mechanismus zur Ermittelung von Modell-Unterschieden.-->
   <Property name="generateDeltaSupport" value="true"/>

   <!--Qualifizierter Name der Basisklasse für Produktklassen. Falls ein leerer String angegeben wird, wird die Defaultbasisklasse benutzt.-->
   <Property name="baseClassProductComponent" value=""/>

   <!--Generiert nur die nötigsten Javadoc-Kommentare wie @generated, sowie Dokumentation aus dem Modell. Um überflüssige Leerzeilen in den Kommentaren zu vermeiden, muss die Option "Entferne leere Zeilen" im Java-Formatierungsprogramm der Projekteinstellungen aktiviert werden. Noch kompakter werden die Kommentare, wenn die Option "/** and */ on separate lines" deaktiviert wird.-->
   <Property name="minimalJavadoc" value="false"/>

   <!--Generiert Getter-Methoden für Produkt-Attribute in produktkonfigurierten Vertragsklassen.-->
   <Property name="generateConvenienceGetters" value="false"/>

   <!--Hier kann die Variante der DatatypeHelper definiert werden, die für die Local* Datatypes (LocalDate, LocalDateTime, LocalTime) verwendet wird. Möglich sind Joda oder Java8-->
   <Property name="localDateDatatypeHelperVariant" value="java8"/>

   <!--Builder vereinfachen den Aufbau von Teststrukturen.-->
   <Property name="builderClasses" value="All"/>

   <!--Generiert Unterstützung für das Listener-Pattern in allen Vertragsklassen.-->
   <Property name="generateChangeListener" value="false"/>

   <!--Lässt alle generierten Klassen Serializable implementieren.-->
   <Property name="serializablePolicyCmpts" value="false"/>

   <!--Legt fest ob die ValueSet-Methoden für alle ValueSet-Implementierungen vereinheitlicht werden sollen oder wie ursprünglich ihren Typ im Methodennamen widerspiegeln sollen. Wird ein Manifest verwendet sollte diese Einstellung auch dort gepflegt werden.-->
   <Property name="valueSetMethods" value="Unified"/>
</IpsArtefactBuilderSetConfig>
Dieser Teil der Dokumentation ist noch im Aufbau. Wir beginnen damit, neue Features zu dokumentieren und ergänzen nach und nach die bestehenden Features.