Skip to content

Commit

Permalink
better messages and docs
Browse files Browse the repository at this point in the history
  • Loading branch information
SteffenHankiewicz committed Nov 28, 2024
1 parent cc18450 commit eae2562
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 108 deletions.
58 changes: 11 additions & 47 deletions docs/index_de.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,53 +46,17 @@ Dieses Plugin wird in den Workflow so integriert, dass es automatisch ausgeführ
## Konfiguration
Die Konfiguration für das Plugin erfolgt innerhalb der zentralen Konfigurationsdatei. Sie sieht beispielhaft wie folgt aus:

```xml
<config_plugin>
<config>
<project>*</project>
<step>*</step>
<!-- folders to validate, can be multiple one (e.g. master, main etc. -->
<folder>master</folder>
<openStepOnError>Scanning</openStepOnError>
<lockAllStepsBetween>true</lockAllStepsBetween>
<jhoveConfiguration>/opt/digiverso/goobi/config/jhove/jhove.conf</jhoveConfiguration>
<namespace uri="http://www.loc.gov/mix/v20" name="mix" />
<namespace uri="http://hul.harvard.edu/ois/xml/ns/jhove" name="jhove" />
<!--Counter check -->
<check>
<xpath>count(//jhove:repInfo/jhove:format)</xpath>
<wanted>1.0</wanted>
<error_message>Check for image format count: Image: "${image}" Wanted value: "${wanted}"\, found value: "${found}".</error_message>
</check>
<check>
<xpath>string(//jhove:repInfo/jhove:format)</xpath>
<wanted>TIFF</wanted>
<error_message> Check for image format: Image: "${image}" Wanted value: "${wanted}"\, found value: "${found}".</error_message>
</check>
<!--Check if the image is well-formed and valid -->
<check>
<xpath>//jhove:repInfo/jhove:status</xpath>
<wanted>Well-Formed and valid</wanted>
<error_message> Check for image status: Image: "${image}" Wanted value: "${wanted}"\, found value: "${found}".</error_message>
</check>
<!--Check for resolution (number or range) -->
<integrated_check name="resolution_check">
<mix_uri>http://www.loc.gov/mix/v20</mix_uri>
<wanted>100.0-899.23</wanted>
<error_message> Check for resolution: Image: "${image}" Wanted value: "${wanted}"\, found value: "${found}".</error_message>
</integrated_check>
</config>
</config_plugin>
```

{{CONFIG_CONTENT}}

{{CONFIG_DESCRIPTION_PROJECT_STEP}}

Die Parameter innerhalb der zentralen Konfigurationsdatei des Plugins haben folgende Bedeutungen:

| Wert | Beschreibung |
| :--- | :--- |
| `project` | Dieser Parameter legt fest, für welches Projekt der aktuelle Block `<config>` gelten soll. Verwendet wird hierbei der Name des Projektes. Dieser Parameter kann mehrfach pro `<config>` Block vorkommen. |
| `step` | Dieser Parameter steuert, für welche Arbeitsschritte der Block `<config>` gelten soll. Verwendet wird hier der Name des Arbeitsschritts. Dieser Parameter kann mehrfach pro `<config>` Block vorkommen. |
| `folder` | Mit diesem Parameter können Verzeichnisse festgelegt werden, deren Inhalte validiert werden sollen. Dieser Parameter kann wiederholt vorkommen. Mögliche Werte hierfür sind z.B. `master`, `media` oder auch individuelle Ordner wie `photos` und `scans`. |
| `openStepOnError` | Dieser Parameter legt fest, welcher Arbeitsschritt des Workflows erneut geöffnet werden soll, wenn ein Fehler innerhalb der Validierung auftritt. Wird dieser Parameter nicht verwendet, so aktiviert das Plugin stattdessen einfach den vorherigen Arbeitsschritt des Validierungsschritts. |
| `lockAllStepsBetween` | Mit diesem Parameter wird festgelegt, ob die Arbeitsschritte des Workflows zwischen dem Validierungsschritt und demjenigen, der innerhalb des Parameters `openStepOnError` angegeben wurde, wieder auf auf den Status gesperrt gesetzt werden sollen, so dass diese Arbeitsschritte ein erneutes Mal durchlaufen (`true`) werden müssen. Wird der Wert hingegen auf `false` gesetzt, so wird der Status der dazwischen liegenden Schritte nicht verändert, so dass die Arbeitsschritte auch nicht noch einmal durchlaufen werden. |
| `jhoveConfiguration` | Mit diesem Parameter wird angegeben, wo sich die Konfigurationsdatei für JHove befindet. |
| `check` | Innerhalb eines jeden Elements check wird festgelegt, was JHove genau validieren soll. Hier wird beispielsweise festgelegt, welches Dateiformat erwartet wird. Zugehörig ist hierbei ebenso, welche Fehlermeldung im Falle einer fehlerhaften Validierung ausgegeben werden soll. In der Fehlermeldung können folgende Variablen genutzt werden: `${wanted}` für den Inhalt aus dem Feld `<wanted>`, `${exected}` für den erwarteten Wert, `${found}` für den gefundenen Wert und `${image}` für den Dateinamen. |
Parameter | Erläuterung
------------------|----------------------------------------
`folder` | Mit diesem Parameter können Verzeichnisse festgelegt werden, deren Inhalte validiert werden sollen. Dieser Parameter kann wiederholt vorkommen. Mögliche Werte hierfür sind z.B. `master`, `media` oder auch individuelle Ordner wie `photos` und `scans`.
`openStepOnError` | Dieser Parameter legt fest, welcher Arbeitsschritt des Workflows erneut geöffnet werden soll, wenn ein Fehler innerhalb der Validierung auftritt. Wird dieser Parameter nicht verwendet, so aktiviert das Plugin stattdessen einfach den vorherigen Arbeitsschritt des Validierungsschritts.
`lockAllStepsBetween` | Mit diesem Parameter wird festgelegt, ob die Arbeitsschritte des Workflows zwischen dem Validierungsschritt und demjenigen, der innerhalb des Parameters `openStepOnError` angegeben wurde, wieder auf auf den Status gesperrt gesetzt werden sollen, so dass diese Arbeitsschritte ein erneutes Mal durchlaufen (`true`) werden müssen. Wird der Wert hingegen auf `false` gesetzt, so wird der Status der dazwischen liegenden Schritte nicht verändert, so dass die Arbeitsschritte auch nicht noch einmal durchlaufen werden.
`jhoveConfiguration` | Mit diesem Parameter wird angegeben, wo sich die Konfigurationsdatei für JHove befindet.
`check` | Innerhalb eines jeden Elements check wird festgelegt, was JHove genau validieren soll. Hier wird beispielsweise festgelegt, welches Dateiformat erwartet wird. Für den erwarteten Wert kann innerhalb des Elements `<wanted>` eine direkte Eingabe auch als Bereich erfasst werden. Ebenso ist es hier auch möglich, eine Variable zu verwenden, die durch den Variablen-Replacer ersetzt wird (z.B. `{process.Resolution}`. Zugehörig ist hierbei ebenso, welche Fehlermeldung im Falle einer fehlerhaften Validierung ausgegeben werden soll. In der Fehlermeldung können folgende Variablen genutzt werden: `${wanted}` für den exakten Inhalt aus dem Feld `<wanted>`, `${expected}` für den aufgelösten erwarteten Wert, `${found}` für den gefundenen Wert und `${image}` für den Dateinamen.
59 changes: 10 additions & 49 deletions docs/index_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,54 +46,15 @@ This plugin is integrated into the workflow in such a way that it is executed au
## Configuration
The configuration for the plugin is done within the central configuration file. It looks like the following example:

```xml
<config_plugin>
<config>
<project>*</project>
<step>*</step>
<!-- folders to validate, can be multiple one (e.g. master, main etc. -->
<folder>master</folder>
<openStepOnError>Scanning</openStepOnError>
<lockAllStepsBetween>true</lockAllStepsBetween>
<jhoveConfiguration>/opt/digiverso/goobi/config/jhove/jhove.conf</jhoveConfiguration>
<namespace uri="http://www.loc.gov/mix/v20" name="mix" />
<namespace uri="http://hul.harvard.edu/ois/xml/ns/jhove" name="jhove" />
<!--Counter check -->
<check>
<xpath>count(//jhove:repInfo/jhove:format)</xpath>
<wanted>1.0</wanted>
<error_message>Check for image format count: Image: "${image}" Wanted value: "${wanted}"\, found value: "${found}".</error_message>
</check>
<check>
<xpath>string(//jhove:repInfo/jhove:format)</xpath>
<wanted>TIFF</wanted>
<error_message> Check for image format: Image: "${image}" Wanted value: "${wanted}"\, found value: "${found}".</error_message>
</check>
<!--Check if the image is well-formed and valid -->
<check>
<xpath>//jhove:repInfo/jhove:status</xpath>
<wanted>Well-Formed and valid</wanted>
<error_message> Check for image status: Image: "${image}" Wanted value: "${wanted}"\, found value: "${found}".</error_message>
</check>
<!--Check for resolution (number or range) -->
<integrated_check name="resolution_check">
<mix_uri>http://www.loc.gov/mix/v20</mix_uri>
<wanted>100.0-899.23</wanted>
<error_message> Check for resolution: Image: "${image}" Wanted value: "${wanted}"\, found value: "${found}".</error_message>
</integrated_check>
</config>
</config_plugin>
```
{{CONFIG_CONTENT}}

{{CONFIG_DESCRIPTION_PROJECT_STEP}}

The parameters within the plugin's central configuration file have the following meanings:

| Wert | Beschreibung |
| :--- | :--- |
| `project` | This parameter determines for which project the current block `<config>` is to apply. The name of the project is used here. This parameter can occur several times per `<config>` block. |
| `step` | This parameter controls for which work steps the block &lt;config&gt; should apply. The name of the work step is used here. This parameter can occur several times per `<config>` block. |
| `folder` | This parameter can be used to specify directories whose contents are to be validated. This parameter can occur repeatedly. Possible values are `master`, `media` or individual folders like `photos` and `scans`. |
| `openStepOnError` | This parameter determines which step of the workflow should be reopened if an error occurs within the validation. If this parameter is not used, the plugin simply activates the previous step of the validation step instead. |
| `lockAllStepsBetween` | This parameter is used to determine whether the work steps of the workflow between the validation step and the one specified within the parameter openStepOnError are to be set back to the status locked so that these work steps have to be run through again (`true`). If, on the other hand, the value is set to `false`, the status of the steps in between is not changed, so that these steps are not run through again. |
| `jhoveConfiguration` | This parameter specifies where the configuration file for JHove is located. |
| `check` | Within each element check is defined what exactly JHove should validate. For example, here you define which file format is expected. Also included is which error message should be issued in case of an incorrect validation. The following variables can be used in the error message: `${wanted}` for the content from the `<wanted>` field, `${exected}` for the expected value, `${found}` for the found value and `${image}` for the file name.|
Parameter | Explanation
------------------|----------------------------------------
`folder` | This parameter can be used to specify directories whose contents are to be validated. This parameter can occur repeatedly. Possible values are `master`, `media` or individual folders like `photos` and `scans`.
`openStepOnError` | This parameter determines which step of the workflow should be reopened if an error occurs within the validation. If this parameter is not used, the plugin simply activates the previous step of the validation step instead.
`lockAllStepsBetween` | This parameter is used to determine whether the work steps of the workflow between the validation step and the one specified within the parameter openStepOnError are to be set back to the status locked so that these work steps have to be run through again (`true`). If, on the other hand, the value is set to `false`, the status of the steps in between is not changed, so that these steps are not run through again.
`jhoveConfiguration` | This parameter specifies where the configuration file for JHove is located.
`check` | Within each element check is defined what exactly JHove should validate. For example, here you define which file format is expected. For the expected value, a direct input can also be entered as a range within the `<wanted>` element. It is also possible to use a variable here, which is replaced by the variable replacer (e.g. `{process.Resolution}`. Also included is which error message should be issued in case of an incorrect validation. The following variables can be used in the error message: `${wanted}` for the exact content from the `<wanted>` field, `${expected}` for the resolved expected value, `${found}` for the found value and `${image}` for the file name.

12 changes: 6 additions & 6 deletions install/plugin_intranda_step_tif_validation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,36 +13,36 @@
<check>
<xpath>count(//jhove:repInfo/jhove:format)</xpath>
<wanted>1.0</wanted>
<error_message>Check format count for "${image}": Expected value "${exected}", but found value "${found}".</error_message>
<error_message>Check format count for "${image}": Expected value "${expected}", but found value "${found}".</error_message>
</check>
<check>
<xpath>string(//jhove:repInfo/jhove:format)</xpath>
<wanted>TIFF</wanted>
<error_message> Check format for "${image}": Expected value "${exected}", but found value "${found}".</error_message>
<error_message> Check format for "${image}": Expected value "${expected}", but found value "${found}".</error_message>
</check>
<!--Check if the image is well-formed and valid -->
<check>
<xpath>//jhove:repInfo/jhove:status</xpath>
<wanted>Well-Formed and valid</wanted>
<error_message> Check status for "${image}": Expected value "${exected}", but found value "${found}".</error_message>
<error_message> Check status for "${image}": Expected value "${expected}", but found value "${found}".</error_message>
</check>
<!--Check the color profile -->
<check>
<xpath>string(//mix:iccProfileName)</xpath>
<wanted>Adobe RGB (1998)</wanted>
<error_message> Check color profile for "${image}": Expected value "${exected}", but found value "${found}".</error_message>
<error_message> Check color profile for "${image}": Expected value "${expected}", but found value "${found}".</error_message>
</check>
<!--Check color depth -->
<check>
<xpath>string(//mix:bitsPerSampleValue[1])</xpath>
<wanted>16</wanted>
<error_message> Check color depth for "${image}": Expected value "${exected}", but found value "${found}".</error_message>
<error_message> Check color depth for "${image}": Expected value "${expected}", but found value "${found}".</error_message>
</check>
<!--Check for resolution (number or range) -->
<integrated_check name="resolution_check">
<mix_uri>http://www.loc.gov/mix/v20</mix_uri>
<wanted>100.0-899.23</wanted>
<error_message> Check resolution for "${image}": Expected value "${exected}", but found value "${found}".</error_message>
<error_message> Check resolution for "${image}": Expected value "${expected}", but found value "${found}".</error_message>
</integrated_check>
</config>
</config_plugin>
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ public PluginReturnValue run() {
if (configuration.getFolders() == null || configuration.getFolders().isEmpty()) {
// nothing to validate, continue

Helper.addMessageToProcessJournal(process.getId(), LogType.ERROR, "No folder configured to be validated with TIF validation.", "");
Helper.addMessageToProcessJournal(process.getId(), LogType.ERROR, "No folder configured to be validated with TIF validation.",
"Image Validation");

return PluginReturnValue.ERROR;
}
Expand Down Expand Up @@ -156,7 +157,7 @@ public PluginReturnValue run() {
}

Helper.setMeldung("Tif validation finished.");
Helper.addMessageToProcessJournal(process.getId(), LogType.INFO, "The image validation finished successfully.", "");
Helper.addMessageToProcessJournal(process.getId(), LogType.INFO, "The image validation finished successfully.", "Image Validation");

return PluginReturnValue.FINISH;
}
Expand Down Expand Up @@ -217,7 +218,7 @@ private void openConfiguredTask(String errorMessage) throws DAOException {
StepManager.saveStep(stepToOpen);

Helper.addMessageToProcessJournal(process.getId(), LogType.DEBUG, "Open task " + stepToOpen.getTitel() + " because of validation errors.",
"");
"Image Validation");

}

Expand All @@ -226,12 +227,13 @@ private void openConfiguredTask(String errorMessage) throws DAOException {
}

private void handleValidationError(String message) {
Helper.addMessageToProcessJournal(process.getId(), LogType.ERROR, message, "");
Helper.addMessageToProcessJournal(process.getId(), LogType.ERROR, message, "Image Validation");
}

private void handleException(Exception e) {
log.error(e);
Helper.addMessageToProcessJournal(process.getId(), LogType.ERROR, "The image validation failed with an error. " + e.getMessage(), "");
Helper.addMessageToProcessJournal(process.getId(), LogType.ERROR, "The image validation failed with an error. " + e.getMessage(),
"Image Validation");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public static String validateXPath(String path) {

private void createReplaceMap() {
this.replaceMap = new HashMap<>();
this.replaceMap.put("exected", this.expectedValue);
this.replaceMap.put("expected", this.expectedValue);
}

@Override
Expand Down

0 comments on commit eae2562

Please sign in to comment.