/** * 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; } }