/**
  * Funktion für das Ermitteln des richtigen Heftes für einen Artikel Liegt das Heft noch nicht in
  * dem Volume vor, wird es angelegt. Als Rückgabe kommt das Heft als DocStruct
  *
  * @param dsPeriodicalVolume
  * @param myRight
  * @return DocStruct of periodical
  * @throws TypeNotAllowedForParentException
  * @throws MetadataTypeNotAllowedException
  * @throws TypeNotAllowedAsChildException
  */
 private DocStruct ParsenHeftzuordnung(
     DocStruct dsPeriodicalVolume, String myRight, DigitalDocument inDigitalDocument)
     throws TypeNotAllowedForParentException, MetadataTypeNotAllowedException,
         TypeNotAllowedAsChildException {
   DocStructType dst;
   MetadataType mdt = this.myPrefs.getMetadataTypeByName("CurrentNo");
   DocStruct dsPeriodicalIssue = null;
   /* erstmal prüfen, ob das Heft schon existiert */
   List<DocStruct> myList =
       dsPeriodicalVolume.getAllChildrenByTypeAndMetadataType("PeriodicalIssue", "CurrentNo");
   if (myList != null && myList.size() != 0) {
     for (DocStruct dsIntern : myList) {
       // myLogger.debug(dsIntern.getAllMetadataByType(mdt).getFirst());
       Metadata myMD1 = dsIntern.getAllMetadataByType(mdt).get(0);
       // myLogger.debug("und der Wert ist: " + myMD1.getValue());
       if (myMD1.getValue().equals(myRight)) {
         dsPeriodicalIssue = dsIntern;
       }
     }
   }
   /* wenn das Heft nicht gefunden werden konnte, jetzt anlegen */
   if (dsPeriodicalIssue == null) {
     dst = this.myPrefs.getDocStrctTypeByName("PeriodicalIssue");
     dsPeriodicalIssue = inDigitalDocument.createDocStruct(dst);
     Metadata myMD = new Metadata(mdt);
     // myMD.setType(mdt);
     myMD.setValue(myRight);
     dsPeriodicalIssue.addMetadata(myMD);
     dsPeriodicalVolume.addChild(dsPeriodicalIssue);
   }
   return dsPeriodicalIssue;
 }
  /**
   * @throws WrongImportFileException
   * @throws IOException
   * @throws WrongImportFileException
   * @throws TypeNotAllowedForParentException
   * @throws TypeNotAllowedForParentException
   * @throws MetadataTypeNotAllowedException
   */
  private void ParsenAllgemein(DocStruct inStruct, String myLeft, String myRight)
      throws WrongImportFileException, TypeNotAllowedForParentException,
          MetadataTypeNotAllowedException {

    // myLogger.debug(myLeft);
    // myLogger.debug(myRight);
    // myLogger.debug("---");
    Metadata md;
    MetadataType mdt;

    // J: Zeitschrift
    // V: Band
    // I: Heft
    // Y: Jahrgang

    /*
     * -------------------------------- Zeitschriftenname --------------------------------
     */
    if (myLeft.equals("J")) {
      mdt = this.myPrefs.getMetadataTypeByName("TitleDocMain");
      List<? extends ugh.dl.Metadata> myList = inStruct.getAllMetadataByType(mdt);
      /* wenn noch kein Zeitschriftenname vergeben wurde, dann jetzt */
      if (myList.size() == 0) {
        md = new Metadata(mdt);
        // md.setType(mdt);
        md.setValue(myRight);
        inStruct.addMetadata(md);
      } else {
        /* wurde schon ein Zeitschriftenname vergeben, prüfen, ob dieser genauso lautet */
        md = myList.get(0);
        if (!myRight.equals(md.getValue())) {
          throw new WrongImportFileException(
              "Parsingfehler: verschiedene Zeitschriftennamen in der Datei ('"
                  + md.getValue()
                  + "' & '"
                  + myRight
                  + "')");
        }
      }
      return;
    }

    /*
     * -------------------------------- Jahrgang --------------------------------
     */
    if (myLeft.equals("Y")) {
      mdt = this.myPrefs.getMetadataTypeByName("PublicationYear");
      List<? extends ugh.dl.Metadata> myList = inStruct.getAllMetadataByType(mdt);

      /* wenn noch kein Zeitschriftenname vergeben wurde, dann jetzt */
      if (myList.size() == 0) {
        md = new Metadata(mdt);
        // md.setType(mdt);
        md.setValue(myRight);
        inStruct.addMetadata(md);
      } else {

        /* wurde schon ein Zeitschriftenname vergeben, prüfen, ob dieser genauso lautet */
        /*
         * da Frau Jansch ständig Importprobleme mit jahrübergreifenden Bänden hat, jetzt mal auskommentiert
         */
        // md = myList.get(0);
        // if (!myRight.equals(md.getValue()))
        // throw new WrongImportFileException("Parsingfehler: verschiedene Jahresangaben in der
        // Datei ('"
        // + md.getValue() + "' & '" + myRight + "')");
      }
      return;
    }

    /*
     * -------------------------------- Bandnummer --------------------------------
     */
    if (myLeft.equals("V")) {
      mdt = this.myPrefs.getMetadataTypeByName("CurrentNo");
      List<? extends ugh.dl.Metadata> myList = inStruct.getAllMetadataByType(mdt);

      /* wenn noch keine Bandnummer vergeben wurde, dann jetzt */
      if (myList.size() == 0) {
        md = new Metadata(mdt);
        md.setValue(myRight);
        inStruct.addMetadata(md);
      } else {

        /* wurde schon eine Bandnummer vergeben, prüfen, ob dieser genauso lautet */
        md = myList.get(0);
        if (!myRight.equals(md.getValue())) {
          throw new WrongImportFileException(
              "Parsingfehler: verschiedene Bandangaben in der Datei ('"
                  + md.getValue()
                  + "' & '"
                  + myRight
                  + "')");
        }
      }
      return;
    }
  }