Version 3.20.0

Neues in Faktor-IPS 3.20.0

In Version 3.20 wurden insbesondere der benötigte Speicherplatz der Produktdaten überarbeitet sowei ein paar kleinere Verbesserungen des API durchgeführt.

Speicherplatzoptimierung für Faktor-IPS Produktdaten

Version 3.20 entfernt die bisher verwendeten UUIDs aus Tabellen und Runtime-XMLs, um gerade in umfangreichen Projekten Speicherplatz zu sparen.

Message-Marker

Das mit Version 3.13 eingeführte Interface IMarker zur Markierung von Messages wurde um zwei Methoden erweitert. Diese geben Auskunft, ob:

  • der Marker eine Nachricht markiert, die eine fehlende Plicht-Information beschreibt (z.B. Pflichtfeld nicht gefüllt), oder
  • die Verletzung einer technischen Einschränkung beschreibt (z.B. String ist länger, als vom Datenbankschema erlaubt)

MessageList

Die Schnittstelle der MessageList wurde überarbeitet:

  • getMessageByCode und getMessagesByCode unterstützen jetzt auch Messages ohne Message-Code und die Abfrage mit null um diese zu finden
  • add(Message) wirft keine NullPointerException mehr, wenn null übergeben wird, sondern ignoriert dieses
  • Analog zu getMessagesByCode gibt es jetzt zwei Methoden getMessagesByMarker, die als Parameter entweder einen IMarker oder ein IPredicate annehmen um Messages mit passenden Markern zu finden
  • Um die (erste) Nachricht mit der höchsten Severity zu finden wurde die Methode getMessageWithHighestSeverity eingeführt

Migration

Beim Umstieg auf Faktor-IPS 3.20 muss eine automatisierte Migration durchgeführt werden. Bei dieser Migration werden alle Faktor-IPS Produktbausteine sowie Aufzählungs- und Tabelleninhalte neu geschrieben, um nicht mehr benötigte UUIDs zu entfernen.

Vereinzelt kann es nach der Installation der neuen Version zu Validierungsfehlern am IPS Projekt kommen, wenn die TOC Datei nicht eindeutig ist. Die Validierung wurde bisher nur für Produktdefinitionsprojekte durchgeführt obwohl sie eigentlich auch für Modellprojekte notwendig ist. Mit der neuen Version werden also auch Modellprojekte validiert.

Generierter Code und Runtime

Zu jeder Tabellenverwendung an einem Produktbausteintyp wird in der zugehörigen Java-Klasse eine Membervariable generiert. Die Sichtbarkeit dieser Variablen wurde von protected zu private geändert.

Release Notes – Faktor-IPS – Version 3.20.0

Bugs

  • Unnötige Leerzeilen in der Codegenerierung (FIPS-1436)
  • NullpointerException MessageList (FIPS-1563)
  • NewProductDefinitionWizard – Unhandled event loop exception (FIPS-1565)
  • Ordner die „import“ im Namen haben führen zu Compilefehlern im generierten Code (FIPS-3327)
  • Drag & Drop von Produktbausteinen funktioniert nicht mehr (FIPS-4097)
  • Überflüssiges TODO bei abgleitetem Attribut mit Berechnungsmethode ohne Parameter (FIPS-4726)
  • Beschreibung zu „Neue Produktklasse“ im Quick Access ist falsch (FIPS-4782)
  • Keine Validierung der TableStructure/EnumType beim Export von TableContent/EnumContent (FIPS-4865)
  • Für Tabellenverwendungen werden „protected“-Membervariablen generiert (FIPS-4941)
  • (Völlig) Falsches JavaDoc für interne setter-Methoden bei Produktbausteinen (FIPS-5142)
  • Bei Associationen wird die Dokumentation nichts in JavaDoc übernommen (FIPS-5163)
  • Implementierung von isDiscrete an DefaultRange fehlerhaft (FIPS-5175)
  • javadoc in MessageList#add falsch (FIPS-5322)
  • Typo in ‚Local date datetype helper variant‘ (FIPS-5323)
  • Einfügen/löschen von Zeilen in einer Tabelle führt zu falschen Compare (FIPS-5326)
  • Javadoc zu Versicherungsbuilder.from enthält Typo (FIPS-5332)
  • Beschreibungen von DeltaFix Entries korrigieren (FIPS-5337)
  • Keine Validierung beim Anlegen eines TableContents ohne Name (FIPS-5339)
  • Fix Differences fehlt in der Produktdefinitionsperspektive (FIPS-5345)
  • Icons für ProblemView im Faktor-IPS Produkt (FIPS-5352)
  • API Break in IIpsProjectMigrationOperationFactory (FIPS-5382)

Improvements

  • Entfernen der Part-IDs aus dem XML (FIPS-683)
  • Beziehungen – Rollenname Plural==Singular erlauben (FIPS-4129)
  • MessageList sollte um die Methode getMessagesByMessageMarker erweitert werden (FIPS-4316)
  • JPA Version 2.1 unterstützen (FIPS-4383)
  • MessageList.add(Message msg) sollte nichts tun, wenn null übergeben wird. (FIPS-4854)
  • Methoden in IMarker Interface bereitstellen (FIPS-4964)
  • Die Methode setProductComponent() sollte an IConfigurableModelObject verfügbar sein (FIPS-5001)
  • Wizard zum Anlegen neuer Bausteine sollte mit langen Labels umgehen können (FIPS-5386)
  • Das Anlegen von Produktbausteinen und TableContents sollte auch in Projekten möglich sein, die nur als Modellprojekt gekennzeichnet sind (FIPS-5387)
  • Textvergleich im TabellenCompare fixen (FIPS-5429)