Version 20.12.0

Neues in Version 20.12

Faktor-IPS 20.12 bietet einige Performanceverbesserungen, insbesondere durch optimierte Validierungen.

Tabelleninhalte als CSV speichern

Tabelleninhalte können nun im CSV Format gespeichert werden, um Speicherplatz zu sparen. Dazu wurde das Projekt-Setting tableContentFormat eingeführt. Gültige Werte sind XML und CSV.
Um alle Tabelleninhalte eines Projekts gleichzeitig auf den neuen CSV Typ umzuschreiben, muss die Einstellung tableContentFormat vor dem Anwenden der Migration in der .ipsproject Datei unter AdditionalSettings auf CSV umgestellt werden:

<Setting name="tableContentFormat" value="CSV"/>

Die Migration wird dann alle Tabelleninhalte in das CSV Format übersetzen. Wenn das Format nachträglich geändert wird, müssen die Tabellen zum überschreiben einzeln neu gespeichert werden.

Zur Laufzeit wird zum Lesen der CSV-Daten die Bibliothek OpenCSV zusätzlich benötigt, sie wird von faktorips-runtime als optional definiert:

<dependency>
<!-- Needed only when table contents are saved as CSV -->
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>3.3</version>
<optional>true</optional>
</dependency>

Mehrspaltige Filter im Tabelleneditor

Im Suchfeld des Tabelleneditors können jetzt mit dem Trennzeichen „|“ Suchbegriffe für mehrere Spalten voneinander getrennt werden, so dass wie im Screenshot zu sehen z.B. alle Zeilen gefunden werden, bei denen in einer Spalte der Suchbegriff „200?“ zutrifft, in einer der folgenden Spalten dann „25*“.

Getrennte Validierungsklassen

Um den Umfang der generierten Klassen zu reduzieren und handgeschriebenen Validierungscode besser abzutrennen, ist es nun möglich, auf der Seite „Verhalten“ für einen PolicyCmptType zu definieren, dass dieser getrennte Validierungsklassen erzeugen soll. In den AdditionalSettings der .ipsproject-Konfigurationsdatei kann diese Einstellung für neu angelegte Vertragsklassen vorbelegt werden:

<Setting name="generateValidatorClassDefault" value="true"/>

Ist die Einstellung für eine Vertragsklasse aktiv, wird z.B. zur Java-Klasse HausratVertrag eine zusätzliche Klasse HausratVertragValidator angelegt, welche dann alle Validierungs- und createMessage-Methoden enthält. In der Vertragsklasse gibt es neue Methoden, um einen solchen Validator zu erzeugen und abzurufen, welche in validateSelf genutzt werden.
Eine Migration findet nicht statt. Handgeschriebener Code muss bei einer Änderung der Einstellung an einer bestehenden Klasse also von Hand übertragen und angepasst werden. Zugriffe auf Attribute/Beziehungen der Vertragsklasse müssen aus den Methoden des Validators heraus um get(). ergänzt werden.

Weniger Kommentare generieren

Manchen Nutzern ist das von Faktor-IPS generierte Javadoc zu „geschwätzig“. Deshalb kann der Codegenerator jetzt angewiesen werden, nur noch das minimal nötige Javadoc zu generieren. Es bleiben dann nur noch @generated&Co, sowie Beschreibungen die im Modell angegeben wurden.

<Setting name="minimalJavadoc" value="true"/>

Die Default-Einstellung bleibt unverändert. Um das Javadoc weiter zu reduzieren, können im Projekt die Eclipse-Java-Formatter-Einstellungen für Kommentare die Optionen „Entferne leere Zeilen“ aktiviert und „/** and */ on separate lines“ deaktiviert werden.

Bugs

  • Add IPS Nature: fehlende deutsche Übersetzung Persistence Support (FIPS-1388)
  • Marker-Auswahl ohne Validation Rule führt zu NPE (FIPS-5625)
  • Target Role Name = Component Type Name führt zu doppelter Methode in Anpassungsstufe (FIPS-6551)
  • ValueSets sollen immer mit Derived überschrieben werden können (FIPS-6978)
  • Wertebereich „String Length“ deaktiviert die Option, Wertebereich und Default in Produktkonfiguration festzulegen. (FIPS-6980)
  • Produktkonfigurierbarkeit der Relevanz funktioniert nicht gemeinsam mit String Length Constraint (FIPS-6981)
  • Warnung nach Umbenennen einer Produktinstanz inkl. RuntimeId (FIPS-6985)
  • NPE wenn Datentyp im Attribut-Dialog nicht gefunden wird (FIPS-7107)
  • MessageInvalidObjectMatcher matcht nicht richtig (FIPS-7181)
  • Keine Neugenerierung bei Datentypänderung von abgeleiteten Attributen (FIPS-7186)
  • Migration 20.12 sollte auch PolicyCmptTypes neu bauen (FIPS-7210)
  • Enums aus DetachedContentRuntimeRepositories haben keine Werte mehr (FIPS-7227)
  • ValueSet eines durch eine Produktmethode berechneten Vertragsattribut ist null (FIPS-7251)
  • ExtensionPoint-Schemata von ui und stdbuilder fehlen in Source Build (FIPS-7271)

New Features

  • Validierungen in eigene Klasse auslagern (FIPS-6659)
  • Syntax-Highlighting im Formeleditor (FIPS-6662)
  • Produktinfo-DB Finetuning (FIPS-7135)

Tasks

Improvements

  • AddIpsNature: Default Einstellungen für generierte XML-Files bei Modellprojekten ändern (FIPS-774)
  • Filter im Tabellen Editor spaltenübergreifend (FIPS-5524)
  • Typo: Edit Table Usage -> Rolename (FIPS-6548)
  • Tabellen als CSV statt XML (FIPS-6656)
  • Weniger Kommentare generieren (FIPS-6657)
  • FIPS-Compare-Editor für Vorlagenbaustein (FIPS-6754)
  • Fehlermeldung bei bestehendem Parent verbessern (FIPS-6755)
  • file.exists() wo möglich vermeiden (FIPS-6825)
  • Map aller Links in ProductCmptLinkCollection cachen (FIPS-6827)
  • Validierung der Summe aller Kardinalitäten läuft zu oft (FIPS-6829)
  • Ineffiziente Reflection für IpsSrcFileContent#getPropertyFromIpsObject(String) (FIPS-6830)
  • Validierung auf doppelte RuntimeIDs ist ineffizient (FIPS-6831)
  • Target für Eclipse 2020-09 (FIPS-6944)
  • Unnötig scharfe Validierung der Kardinalitäten bei überschriebenen Beziehungen (FIPS-6974)
  • Target für Eclipse 2020-12 (FIPS-7074)