Package de.sub.goobi.export.dms

Source Code of de.sub.goobi.export.dms.ExportDms_CorrectRusdml

package de.sub.goobi.export.dms;

/**
* This file is part of the Goobi Application - a Workflow tool for the support of mass digitization.
*
* Visit the websites for more information.
*         - http://www.goobi.org
*         - http://launchpad.net/goobi-production
*         - http://gdz.sub.uni-goettingen.de
*       - http://www.intranda.com
*       - http://digiverso.com
*
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59
* Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions
* of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to
* link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and
* distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and
* conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this
* library, you may extend this exception to your version of the library, but you are not obliged to do so. If you do not wish to do so, delete this
* exception statement from your version.
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;

import ugh.dl.DigitalDocument;
import ugh.dl.DocStruct;
import ugh.dl.DocStructType;
import ugh.dl.Fileformat;
import ugh.dl.Metadata;
import ugh.dl.MetadataType;
import ugh.dl.Person;
import ugh.dl.Prefs;
import ugh.exceptions.DocStructHasNoTypeException;
import ugh.exceptions.MetadataTypeNotAllowedException;
import ugh.exceptions.PreferencesException;
import de.sub.goobi.beans.Prozess;
import de.sub.goobi.helper.BeanHelper;
import de.sub.goobi.helper.exceptions.ExportFileException;
import de.sub.goobi.helper.exceptions.UghHelperException;

public class ExportDms_CorrectRusdml {
  private Prefs myPrefs;
  private List<DocStruct> docStructsOhneSeiten;
  private Prozess myProzess;
  private DigitalDocument mydocument;
  BeanHelper bhelp = new BeanHelper();
  private static final Logger logger = Logger.getLogger(ExportDms_CorrectRusdml.class);

  public ExportDms_CorrectRusdml(Prozess inProzess, Prefs inPrefs, Fileformat inGdzfile) throws PreferencesException {
    myPrefs = inPrefs;
    mydocument = inGdzfile.getDigitalDocument();
    myProzess = inProzess;
  }

  /* =============================================================== */

  public String correctionStart() throws DocStructHasNoTypeException, MetadataTypeNotAllowedException, ExportFileException, UghHelperException {
    String atsPpnBand;
    DocStruct logicalTopstruct = mydocument.getLogicalDocStruct();
    docStructsOhneSeiten = new ArrayList<DocStruct>();

    /*
     * -------------------------------- Prozesseigenschaften ermitteln
     * --------------------------------
     */
    atsPpnBand = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "ATS") + bhelp.WerkstueckEigenschaftErmitteln(myProzess, "TSL") + "_";
    String ppn = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "PPN digital");
    if (!ppn.startsWith("PPN")) {
      ppn = "PPN" + ppn;
    }
    atsPpnBand += ppn;
    String bandnummer = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "Band");
    if (bandnummer != null && bandnummer.length() > 0) {
      atsPpnBand += "_" + bhelp.WerkstueckEigenschaftErmitteln(myProzess, "Band");
    }

    /*
     * -------------------------------- DocStruct rukursiv durchlaufen und
     * die Metadaten prüfen --------------------------------
     */
    RusdmlDocStructPagesAuswerten(logicalTopstruct);
    RusdmlPathImageFilesKorrigieren(mydocument.getPhysicalDocStruct(), "./" + atsPpnBand + "_tif");
    RusdmlAddMissingMetadata(logicalTopstruct, myProzess);

    return atsPpnBand;
  }

  /* =============================================================== */

  /**
   * alle Strukturelemente rekursiv durchlaufen und den Elternelementen die
   * Seiten der Kinder zuweisen
   *
   * @param inStruct
   * @throws MetadataTypeNotAllowedException
   * @throws DocStructHasNoTypeException
   */
  private void RusdmlDocStructPagesAuswerten(DocStruct inStruct) throws DocStructHasNoTypeException, MetadataTypeNotAllowedException {
    RusdmlDropMetadata(inStruct);
    RusdmlDropPersons(inStruct);
    RusdmlUmlauteDemaskieren(inStruct);
    RusdmlCheckMetadata(inStruct);

    /* hat das Docstruct keine Bilder, wird es in die Liste genommen */
    if (inStruct.getAllToReferences().size() == 0 && !inStruct.getType().isAnchor()) {
      docStructsOhneSeiten.add(inStruct);
    }

    /* alle Kinder des aktuellen DocStructs durchlaufen */
    if (inStruct.getAllChildren() != null) {
      for (Iterator<DocStruct> iter = inStruct.getAllChildren().iterator(); iter.hasNext();) {
        DocStruct child = iter.next();
        RusdmlDocStructPagesAuswerten(child);
      }
    }
  }

  /* =============================================================== */

  /**
   * alle nicht benötigten Metadaten des RUSDML-Projektes rauswerfen
   *
   * @param inStruct
   * @throws MetadataTypeNotAllowedException
   * @throws DocStructHasNoTypeException
   * @throws MetadataTypeNotAllowedException
   * @throws DocStructHasNoTypeException
   */

  private void RusdmlDropMetadata(DocStruct inStruct) throws DocStructHasNoTypeException, MetadataTypeNotAllowedException {
    String titelRu = "";
    String titelOther = "";
    String language = "";

    if (inStruct.getAllVisibleMetadata() != null) {
      List<Metadata> kopie = new ArrayList<Metadata>(inStruct.getAllMetadata());
      for (Metadata meta : kopie) {
        // Metadata meta = (Metadata) iter.next();

        /*
         * -------------------------------- jetzt alle nicht benötigten
         * Metadaten löschen --------------------------------
         */
        if (meta.getType().getName().equals("RUSMainTitle")) {
          titelRu = meta.getValue();
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("TitleDocMain")) {
          titelOther = meta.getValue();
          inStruct.getAllMetadata().remove(meta);
        }

        if (meta.getType().getName().equals("DocLanguage")) {
          meta.setValue(meta.getValue().toLowerCase());
          language = meta.getValue();
        }

        if (meta.getType().getName().equals("RUSPublisher")) {
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("RUSPlaceOfPublication")) {
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("RUSPublicationHouse")) {
          inStruct.getAllMetadata().remove(meta);
        }

        if (meta.getType().getName().equals("ZBLSource")) {
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("ZBLIntern")) {
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("ZBLPageNumber")) {
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("ZBLReviewLink")) {
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("ZBLReviewAuthor")) {
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("ZBLCita")) {
          inStruct.getAllMetadata().remove(meta);
        }
        if (meta.getType().getName().equals("ZBLTempID")) {
          inStruct.getAllMetadata().remove(meta);
        }

        /*
         * den Abstrakt des ZBLs übernehmen, aber nur die 255 ersten
         * Zeichen
         */
        if (meta.getType().getName().equals("ZBLAbstract")) {
          MetadataType mdt = myPrefs.getMetadataTypeByName("Abstract");
          meta.setType(mdt);
          if (meta.getValue().length() > 255) {
            meta.setValue(meta.getValue().substring(0, 254));
          }
        }
      }
    }

    /*
     * -------------------------------- nachdem alle Metadaten durchlaufen
     * wurden, jetzt abhängig vom Sprachcode den richtigen MainTitle
     * zuweisen --------------------------------
     */
    MetadataType mdt_org = myPrefs.getMetadataTypeByName("TitleDocMain");
    Metadata meta_org = new Metadata(mdt_org);
    MetadataType mdt_trans = myPrefs.getMetadataTypeByName("MainTitleTranslated");
    Metadata meta_trans = new Metadata(mdt_trans);
    if (language.equals("ru")) {
      meta_org.setValue(titelRu);
      meta_trans.setValue(titelOther);
    } else {
      meta_trans.setValue(titelRu);
      meta_org.setValue(titelOther);
    }

    if (meta_org.getValue() != null && meta_org.getValue().length() > 0) {
      inStruct.addMetadata(meta_org);
    }
    if (meta_trans.getValue() != null && meta_trans.getValue().length() > 0) {
      inStruct.addMetadata(meta_trans);
    }
  }

  /* =============================================================== */

  /**
   * alle nicht benötigten Personen rauswerfen
   *
   * @param inStruct
   */
  private void RusdmlDropPersons(DocStruct inStruct) {
    if (inStruct.getAllPersons() != null) {
      List<Person> kopie = new ArrayList<Person>(inStruct.getAllPersons());
      for (Iterator<Person> iter = kopie.iterator(); iter.hasNext();) {
        Metadata meta = iter.next();
        if (meta.getType().getName().equals("ZBLAuthor")) {
          inStruct.getAllPersons().remove(meta);
        }
      }
    }
  }

  /* =============================================================== */

  /**
   * alle zu ändernden Metadaten ändern
   *
   * @param inStruct
   */
  private void RusdmlCheckMetadata(DocStruct inStruct) {
    /*
     * -------------------------------- generell ausführen
     * --------------------------------
     */
    if (inStruct.getType().getName().equals("Illustration")) {
      DocStructType dst = myPrefs.getDocStrctTypeByName("Figure");
      inStruct.setType(dst);
    }
  }

  /* =============================================================== */

  private void RusdmlPathImageFilesKorrigieren(DocStruct phys, String inNeuerWert) throws ExportFileException {
    MetadataType MDTypeForPath = myPrefs.getMetadataTypeByName("pathimagefiles");
    List<? extends Metadata> alleMetadaten = phys.getAllMetadataByType(MDTypeForPath);
    if (alleMetadaten.size() > 0) {
      for (Metadata meta : alleMetadaten) {
        meta.setValue(inNeuerWert);
      }
    } else {
      throw new ExportFileException("Exportfehler: Imagepfad noch nicht gesetzt");
    }
  }

  /* =============================================================== */

  /**
   * dabei die zentralen Projekteinstellungen in der xml-Konfiguration
   * ber�cksichtigen
   *
   * @param inTopStruct
   * @param myProzess
   * @throws ExportFileException
   * @throws UghHelperException
   * @throws DocStructHasNoTypeException
   * @throws MetadataTypeNotAllowedException
   */
  private void RusdmlAddMissingMetadata(DocStruct inTopStruct, Prozess myProzess) throws ExportFileException, UghHelperException {
    /*
     * -------------------------------- bei fehlender digitaler PPN:
     * Fehlermeldung und raus --------------------------------
     */
    String PPN = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "PPN digital");
    if (PPN.length() == 0) {
      throw new ExportFileException("Exportfehler: Keine PPN digital vorhanden");
    }
    RusdmlAddMissingMetadata(inTopStruct, myProzess, PPN);
  }

  /**
   * Fehlende Metadaten für Rusdml erg�nzen
   *
   * @param inTopStruct
   * @param myProzess
   * @param PPN
   */
  private void RusdmlAddMissingMetadata(DocStruct inTopStruct, Prozess myProzess, String PPN) {
    /*
     * -------------------------------- Eigenschaften aus dem Werkstück
     * holen --------------------------------
     */
    String Titel = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "Haupttitel");
    String Verlag = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "Verlag");
    String Ort = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "Erscheinungsort");
    String ISSN = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "ISSN");
    String BandNummer = bhelp.WerkstueckEigenschaftErmitteln(myProzess, "Band");

    /*
     * -------------------------------- die Metadaten erzeugen
     * --------------------------------
     */
    Metadata mdVerlag = null;
    Metadata mdOrt = null;
    Metadata mdISSN = null;
    Metadata mdPPN = null;
    Metadata mdPPNBand = null;
    Metadata mdSorting = null;
    try {
      Metadata mdTitel = new Metadata(myPrefs.getMetadataTypeByName("TitleDocMain"));
      mdTitel.setValue(Titel);
      mdVerlag = new Metadata(myPrefs.getMetadataTypeByName("PublisherName"));
      mdVerlag.setValue(Verlag);
      mdOrt = new Metadata(myPrefs.getMetadataTypeByName("PlaceOfPublication"));
      mdOrt.setValue(Ort);
      mdISSN = new Metadata(myPrefs.getMetadataTypeByName("ISSN"));
      mdISSN.setValue(ISSN);
      mdPPN = new Metadata(myPrefs.getMetadataTypeByName("CatalogIDDigital"));
      mdPPN.setValue("PPN" + PPN);
      mdPPNBand = new Metadata(myPrefs.getMetadataTypeByName("CatalogIDDigital"));
      mdPPNBand.setValue("PPN" + PPN + "_" + BandNummer);
      mdSorting = new Metadata(myPrefs.getMetadataTypeByName("CurrentNoSorting"));
    } catch (MetadataTypeNotAllowedException e1) {
      logger.error(e1);
    }
    try {
      int BandInt = Integer.parseInt(BandNummer) * 10;
      mdSorting.setValue(String.valueOf(BandInt));
    } catch (NumberFormatException e) {
    }

    /*
     * -------------------------------- die Metadaten der Zeitschrift
     * zuweisen --------------------------------
     */
    inTopStruct.getAllMetadataByType(myPrefs.getMetadataTypeByName("TitleDocMain")).get(0).setValue(Titel);

    try {
      inTopStruct.addMetadata(mdVerlag);
      inTopStruct.addMetadata(mdOrt);
      inTopStruct.addMetadata(mdPPN);
      inTopStruct.addMetadata(mdISSN);
    } catch (Exception e) {
    }

    /*
     * -------------------------------- die Metadaten dem Band zuweisen
     * --------------------------------
     */
    DocStruct structBand = inTopStruct.getAllChildren().get(0);
    if (structBand != null) {

      try {
        structBand.addMetadata(mdVerlag);
        structBand.addMetadata(mdOrt);
        structBand.addMetadata(mdPPNBand);
        structBand.addMetadata(mdSorting);
      } catch (MetadataTypeNotAllowedException e) {

      } catch (DocStructHasNoTypeException e) {

      }

    }
  }

  /* =============================================================== */

  /**
   * Alle Metadaten eines Strukturelements durchlaufen und deren Umlaute
   * maskieren
   *
   * @param inStruct
   */

  private void RusdmlUmlauteDemaskieren(DocStruct inStruct) {
    List<Metadata> kopie = inStruct.getAllMetadata();
    if (kopie != null) {
      for (Metadata meta : kopie) {
        /* in den Metadaten die Umlaute entfernen */
        RusdmlUmlauteDemaskieren1(meta);
      }
    }
  }

  /* =============================================================== */

  private void RusdmlUmlauteDemaskieren1(Metadata meta) {
    String neuerWert = meta.getValue();
    if (neuerWert == null) {
      return;
    }
    neuerWert = neuerWert.replaceAll("\\\\star", "\u002a");
    neuerWert = neuerWert.replaceAll("\\\\times", "\u00d7");
    neuerWert = neuerWert.replaceAll("\\\\div", "\u00f7");
    neuerWert = neuerWert.replaceAll("\\\\dot G", "\u0120");
    neuerWert = neuerWert.replaceAll("\\\\Gamma", "\u0393");
    neuerWert = neuerWert.replaceAll("\\\\Delta", "\u00394");
    neuerWert = neuerWert.replaceAll("\\\\Lambda", "\u039b");
    neuerWert = neuerWert.replaceAll("\\\\Sigma", "\u03a3");
    neuerWert = neuerWert.replaceAll("\\\\Omega", "\u03a9");
    neuerWert = neuerWert.replaceAll("\\\\alpha", "\u03b1");
    neuerWert = neuerWert.replaceAll("\\\\beta", "\u03b2");
    neuerWert = neuerWert.replaceAll("\\\\gamma", "\u03b3");
    neuerWert = neuerWert.replaceAll("\\\\delta", "\u002a");
    neuerWert = neuerWert.replaceAll("\\\\epsilon", "\u03b5");
    neuerWert = neuerWert.replaceAll("\\\\zeta", "\u03b6");
    neuerWert = neuerWert.replaceAll("\\\\eta", "\u03b7");
    neuerWert = neuerWert.replaceAll("\\\\theta", "\u03b8");
    neuerWert = neuerWert.replaceAll("\\\\lambda", "\u03bb");
    neuerWert = neuerWert.replaceAll("\\\\mu", "\u03bc");
    neuerWert = neuerWert.replaceAll("\\\\nu", "\u03bd");
    neuerWert = neuerWert.replaceAll("\\\\pi", "\u03c0");
    neuerWert = neuerWert.replaceAll("\\\\sigma", "\u03c3");
    neuerWert = neuerWert.replaceAll("\\\\phi", "\u03c6");
    neuerWert = neuerWert.replaceAll("\\\\omega", "\u03c9");
    neuerWert = neuerWert.replaceAll("\\\\ell", "\u2113");
    neuerWert = neuerWert.replaceAll("\\\\rightarrow", "\u2192");
    neuerWert = neuerWert.replaceAll("\\\\sim", "\u223c");
    neuerWert = neuerWert.replaceAll("\\\\le", "\u2264");
    neuerWert = neuerWert.replaceAll("\\\\ge", "\u2265");
    neuerWert = neuerWert.replaceAll("\\\\odot", "\u2299");
    neuerWert = neuerWert.replaceAll("\\\\infty", "\u221e");
    neuerWert = neuerWert.replaceAll("\\\\circ", "\u2218");
    neuerWert = neuerWert.replaceAll("\\\\dot\\{P\\}", "\u1e56");
    neuerWert = neuerWert.replaceAll("\\\\symbol\\{94\\}", "\u005e");
    neuerWert = neuerWert.replaceAll("\\\\symbol\\{126\\}", "\u007e");
    neuerWert = neuerWert.replaceAll("\\\\u g", "\u011f");
    neuerWert = neuerWert.replaceAll("\\\\AE ", "\u00c6");
    neuerWert = neuerWert.replaceAll("\\\\ae ", "\u00e6");
    neuerWert = neuerWert.replaceAll("\\\\oe ", "\u0153");
    neuerWert = neuerWert.replaceAll("\\\\OE ", "\u0152");
    neuerWert = neuerWert.replaceAll("\\\\uu ", "u");
    neuerWert = neuerWert.replaceAll("\\\\UU ", "U");
    neuerWert = neuerWert.replaceAll("\\\\Dj ", "Dj");
    neuerWert = neuerWert.replaceAll("\\\\dj ", "dj");
    neuerWert = neuerWert.replaceAll("\\\\c\\{c\\}", "\u00e7");
    neuerWert = neuerWert.replaceAll("\\\\c c", "\u00e7");
    neuerWert = neuerWert.replaceAll("\\\\c\\{C\\}", "\u00c7");
    neuerWert = neuerWert.replaceAll("\\\\c C", "\u00c7");
    // NOTE The following one only for schummling and correcting errors!
    neuerWert = neuerWert.replaceAll("\\{\\\\ss \\}", "\u00dF");
    neuerWert = neuerWert.replaceAll("\\{\\\\ss\\}", "\u00dF");
    neuerWert = neuerWert.replaceAll("\\{\\\\ss\\}", "\u00dF");
    neuerWert = neuerWert.replaceAll("\\\\ss ", "\u00df");
    neuerWert = neuerWert.replaceAll("\\\\aa ", "\u00e5");
    neuerWert = neuerWert.replaceAll("\\\\AA ", "\u00c5");
    neuerWert = neuerWert.replaceAll("\\\\dh ", "\u00f0");
    neuerWert = neuerWert.replaceAll("\\\\th ", "\u00fe");
    neuerWert = neuerWert.replaceAll("\\\\'a", "á");
    neuerWert = neuerWert.replaceAll("\\\\'A", "Á");
    neuerWert = neuerWert.replaceAll("\\\\`a", "à");
    neuerWert = neuerWert.replaceAll("\\\\`A", "À");
    neuerWert = neuerWert.replaceAll("\\\\\\^a", "â");
    neuerWert = neuerWert.replaceAll("\\\\\\^A", "Â");
    neuerWert = neuerWert.replaceAll("\\\\~a", "\u00e3");
    neuerWert = neuerWert.replaceAll("\\\\~A", "\u00c3");
    neuerWert = neuerWert.replaceAll("\\\\\\\"A", "Ä");
    neuerWert = neuerWert.replaceAll("\\\\\\\"a", "ä");
    neuerWert = neuerWert.replaceAll("\\\\'e", "é");
    neuerWert = neuerWert.replaceAll("\\\\'E", "É");
    neuerWert = neuerWert.replaceAll("\\\\`e", "è");
    neuerWert = neuerWert.replaceAll("\\\\`E", "È");
    neuerWert = neuerWert.replaceAll("\\\\\\^e", "e");
    neuerWert = neuerWert.replaceAll("\\\\\\^E", "Ê");
    neuerWert = neuerWert.replaceAll("\\\\\\\"E", "\u00cb");
    neuerWert = neuerWert.replaceAll("\\\\\\\"e", "\u00eb");
    neuerWert = neuerWert.replaceAll("\\\\'i", "í");
    neuerWert = neuerWert.replaceAll("\\\\'I", "Í");
    neuerWert = neuerWert.replaceAll("\\\\`i", "ì");
    neuerWert = neuerWert.replaceAll("\\\\`I", "Ì");
    neuerWert = neuerWert.replaceAll("\\\\\\^i", "î");
    neuerWert = neuerWert.replaceAll("\\\\\\^I", "Î");
    neuerWert = neuerWert.replaceAll("\\\\\\\"I", "\u00cf");
    neuerWert = neuerWert.replaceAll("\\\\\\\"i", "\u00ef");
    neuerWert = neuerWert.replaceAll("\\\\~n", "\u00f1");
    neuerWert = neuerWert.replaceAll("\\\\~N", "\u00d1");
    neuerWert = neuerWert.replaceAll("\\\\'o", "ó");
    neuerWert = neuerWert.replaceAll("\\\\'O", "Ó");
    neuerWert = neuerWert.replaceAll("\\\\`o", "ò");
    neuerWert = neuerWert.replaceAll("\\\\`O", "Ò");
    neuerWert = neuerWert.replaceAll("\\\\\\^o", "ô");
    neuerWert = neuerWert.replaceAll("\\\\\\^O", "Ô");
    neuerWert = neuerWert.replaceAll("\\\\~o", "\u00f5");
    neuerWert = neuerWert.replaceAll("\\\\~O", "\u00d5");
    neuerWert = neuerWert.replaceAll("\\\\\\\"O", "Ö");
    neuerWert = neuerWert.replaceAll("\\\\\\\"o", "ö");
    neuerWert = neuerWert.replaceAll("\\\\'u", "ú");
    neuerWert = neuerWert.replaceAll("\\\\'U", "Ú");
    neuerWert = neuerWert.replaceAll("\\\\`u", "ù");
    neuerWert = neuerWert.replaceAll("\\\\`U", "Ù");
    neuerWert = neuerWert.replaceAll("\\\\\\^u", "û");
    neuerWert = neuerWert.replaceAll("\\\\\\^U", "Û");
    neuerWert = neuerWert.replaceAll("\\\\\"U", "Ü");
    neuerWert = neuerWert.replaceAll("\\\\\"u", "ü");
    neuerWert = neuerWert.replaceAll("\\\\'y", "ý");
    neuerWert = neuerWert.replaceAll("\\\\'Y", "Ý");
    neuerWert = neuerWert.replaceAll("\\\\\\\"y", "\u00ff");
    neuerWert = neuerWert.replaceAll("\\\\H ", "\"");
    neuerWert = neuerWert.replaceAll("\\\\O", "\u00d8");
    neuerWert = neuerWert.replaceAll("\\\\o", "\u00f8");
    neuerWert = neuerWert.replaceAll("\\\\'C", "\u0106");
    neuerWert = neuerWert.replaceAll("\\\\'c", "\u0107");
    neuerWert = neuerWert.replaceAll("\\\\v C", "\u010c");
    neuerWert = neuerWert.replaceAll("\\\\v c", "\u010d");
    neuerWert = neuerWert.replaceAll("\\\\v S", "\u0160");
    neuerWert = neuerWert.replaceAll("\\\\v s", "\u0161");
    neuerWert = neuerWert.replaceAll("\\\\v Z", "\u017d");
    neuerWert = neuerWert.replaceAll("\\\\v z", "\u017e");
    neuerWert = neuerWert.replaceAll("\\\\v r", "\u0159");
    neuerWert = neuerWert.replaceAll("\\\\'s", "\u015b");
    neuerWert = neuerWert.replaceAll("\\\\'S", "\u015a");
    neuerWert = neuerWert.replaceAll("\\\\L", "\u0141");
    neuerWert = neuerWert.replaceAll("\\\\l", "\u0142");
    neuerWert = neuerWert.replaceAll("\\\\'N", "\u0143");
    neuerWert = neuerWert.replaceAll("\\\\'n", "\u0144");
    neuerWert = neuerWert.replaceAll("\\\\'t", "\u0165");
    neuerWert = neuerWert.replaceAll("\\\\=u", "\u016b");
    neuerWert = neuerWert.replaceAll("\\\\'z", "\u017a");
    neuerWert = neuerWert.replaceAll("\\\\.Z", "\u017b");
    neuerWert = neuerWert.replaceAll("\\\\.z", "\u017c");
    neuerWert = neuerWert.replaceAll("\\\\#", "\u0023");
    neuerWert = neuerWert.replaceAll("\\\\%", "\u0025");
    neuerWert = neuerWert.replaceAll("\\\\_", "\u005f");
    neuerWert = neuerWert.replaceAll("\\\\~ ", " ");
    neuerWert = neuerWert.replaceAll("\\\\=", "");

    meta.setValue(neuerWert);
  }
}
TOP

Related Classes of de.sub.goobi.export.dms.ExportDms_CorrectRusdml

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.