@Override
    public void run() {
      if (files.isEmpty()) {
        message = Localization.lang("No PDF linked") + ".\n";
      } else {
        int written = 0;
        int error = 0;
        for (File file : files) {
          if (!file.exists()) {
            if (files.size() == 1) {
              message = Localization.lang("PDF does not exist");
            }
            error++;

          } else {
            try {
              XMPUtil.writeXMP(file, entry, panel.getDatabase(), Globals.prefs.getXMPPreferences());
              if (files.size() == 1) {
                message = Localization.lang("Wrote XMP-metadata");
              }
              written++;
            } catch (IOException | TransformerException e) {
              if (files.size() == 1) {
                message = Localization.lang("Error while writing") + " '" + file.getPath() + "'";
              }
              error++;
            }
          }
        }
        if (files.size() > 1) {
          StringBuilder sb = new StringBuilder();
          sb.append(
              Localization.lang(
                  "Finished writing XMP-metadata. Wrote to %0 file(s).", String.valueOf(written)));
          if (error > 0) {
            sb.append(' ')
                .append(Localization.lang("Error writing to %0 file(s).", String.valueOf(error)));
          }
          message = sb.toString();
        }
      }
    }