Format Erkennung im Ladevorgang

Verständnis und Optimierung des Ladevorgangs bzw. der automatischen Formaterkennung

Hintergrund

jadice bietet eine breite Unterstützung verschiedener Anzeigeformate. Jedes dieser unterstützten Formate wird innerhalb von jadice durch eine Instanz des Typs com.levigo.jadice.document.Format repräsentiert. Sie stellt dem Integrator allgemeine Informationen, wie beispielsweise den gültigen MIME-Type oder typische Dateiendungen, zur Verfügung. Weiterhin bietet diese Klasse einen formattypischen Reader, der ein spezifischen Ladevorgang ermöglicht. 

Während des Ladevorgangs eines Dokuments, kann der Integrator das zu dem Dokument passende Datenformat angeben. Dies macht insbesondere Sinn, wenn formatspezifische Konfigurationen vorgenommen werden sollen. Wird dies nicht benötigt, kann ein Ladevorgang auch ohne Angabe eines spezifischen Formats vollzogen werden. In diesem Fall nutzt jadice die Klasse com.levigo.jadice.document.FormatRegistry, um vor dem eigentlichen Ladevorgang eine Formaterkennung auszuführen. In dieser Registry sind alle von jadice unterstützen Formate registriert.

Zur Formaterkennung werden alle in der FormatRegistry registierten Formate nach einander befragt, ob sie den gegebenen Datenstrom unterstützen. Ist ein passendes Format gefunden, wird der eigentliche Ladevorgang mit Hilfe dieses Formats ausgeführt. 

Wie und in welcher Reihenfolge werden Formate in der FormatRegistry registriert?

Die Reihenfolge der Formate in der FormatRegistry bestimmt die Abfolge, die während eines Ladevorgangs zur Formatermittlung genutzt wird. Je früher ein Format in dieser Reihenfolge ist, um so schneller wird das Format erkannt. In Integrationen, die vorrangig nur bestimmte Formate nutzen, kann das Wissen und eine Anpassung der Abfolge von Vorteil sein.

Die Bestimmung der Abfolge findet auf unterschiedlichen Wegen statt. Dabei ist zunächst zu unterscheiden, zwischen der Verwendung einzelner jadice Artefakte/Libraries und der All-In-One Distribution.

jadice Artefakte

Bei Initalisierung analysiert die FormatRegistry einmalig den gegebenen Klassenpfad und sucht ServiceProvider des Typs com.levigo.jadice.document.Format. Die gefundenen Formate werden in der Reihenfolge ihres Auffindens auf dem Klassenpfad der Registry hinzugefügt.

All-In-One Distribution

Bei der Verwendung der All-In-One Distribution sind alle Formate Teil des jadice-documentplatform-dist-all-<<Version>>.jar. Die Reihenfolge der Formate anhand des Klassenpfads ist damit nicht mehr eindeutig gegeben. In diesem Fall wird eine vorgegebene Reihung der Formate angenommen. 

Die Aufeinanderfolge ist definiert durch

  1. com.levigo.jadice.format.modca.AFPFormat
  2. com.levigo.jadice.format.modca.IocaFormat
  3. com.levigo.jadice.format.modca.ModcaFormat
  4. com.levigo.jadice.format.pdf.PDFFormat
  5. com.levigo.jadice.format.tiff.TIFFFormat
  6. com.levigo.jadice.format.fn.FileNetImageFormat
  7. com.levigo.jadice.format.fnpc.FileNetPCFormFormat
  8. com.levigo.jadice.format.bmp.BMPFormat
  9. com.levigo.jadice.format.imageio.ImageIOFormat (JPEG, PNG,..etc.)
  10. com.levigo.jadice.format.jpeg2000.JPEG2000Format
  11. com.levigo.jadice.format.text.TextFormat

Priorisierung gewünschter Formate

 In Integrationen, die vorrangig nur bestimmte Formate nutzen, kann es wünschenswert sein, diese Formate vorrangig zu platzieren. Im nachfolgenden Abschnitt sind verschiedenen Möglichkeiten aufgezeigt, diese Anforderung in der eigenen Integration umzusetzen.

Nutzung von jadice Artefakten mit vorgebenen Klassenpfad

In Anwendungen, die jadice Artefakte nutzen, kann die Reihenfolge der Formate durch die Reihenfolge der Libraries in dem Klassenpfad bestimmt werden. Dazu können die benutzen *.bat, *.cmd oder *.sh Dateien entsprechend angepasst werden.

All-In-One Distribution oder jadice Artefakte ohne vorgebenen Klassenpfad

In dieser Konstellation steht ein konfigurativer und ein programmatischer Weg zur Verfügung

Konfiguration via jadice.properties

Die Priorisierung kann über die Einstellungsdatei Jadice.properties vorgenommen werden. Diese Konfiguration befindet sich im Default Package der jadice Library. Die möglichen Einstellungen sind direkt in der Datei dokumentiert.

Programmatische Konfiguration

Die FormatRegistry erlaubt einen Einfluß auf die Reihenfolge der Formate vorzugeben. Dazu kann bestimmten Formaten eine Priorisierung gesetzt werden.

Die Höhe der Priorisierung bestimmt die Aufeinanderfolge. Formate mit niedrigeren Prioritäten werden nach denen mit höheren Werten ausprobiert. Der zulässiger Wertebereich geht von 0 (minimale Priorität) bis 100 (maximal). Die Standardpriorität und die von den meisten Formaten standardmäßig verwendete Priorität ist 50. Formate mit negativer Priorität werden nicht berücksichtigt. Dies kann verwendet werden ein Dateiformat deaktivieren.

Zur Umsetzung kann folgende Methode verwendet werden.

Format Priorisierung
com.levigo.jadice.document.FormatRegistry.setPriority(Format, int gewünschtePriorität)

Es ist ausreichend diese Priorisierung einmalig bei Anwendungsstart, vor dem ersten Ladevorgang, zu vergeben.

Nicht benötigte Formate entfernen

Werden bestimmte Formate nicht genutzt, können sie aus der Formaterkennung ausgenommenen werden. Folgende Möglichkeiten stehen für diesem Zweck zur Verfügung.

Nutzung von jadice Artefakten mit vorgebenen Klassenpfad

Formatspezifische jadice Artifakte von Formaten, die nicht zur Anwendung kommen sollen, können aus dem Klassenpfad entfernt werden. Damit stehen sie der laufenden Anwendung nicht zur Verfügung und sind somit auch nicht Teil der automatisierten Formaterkennung.  

All-In-One Distribution oder jadice Artefakte ohne vorgebenen Klassenpfad

In diesem Fall kann wie in den Abschnitten Konfiguration via Jadice.properties oder Programmatische Konfiguration vorgegangen werden. Um Formate zu ignorieren muss die zu setzende Priorität einen negativen Wert haben.

Verwandte Artikel