/** * Returns the value of this person as metadata element * * @return a list with one person element with the value of this component * @see de.sub.goobi.metadaten.RenderableGroupableMetadatum#toMetadata() */ @Override public List<Person> toMetadata() { List<Person> result = new ArrayList<Person>(1); Person person; try { person = new Person(metadataType); } catch (MetadataTypeNotAllowedException e) { throw new NullPointerException(e.getMessage()); } String normdataRecord = getField(Field.NORMDATA_RECORD).getValue(); if (normdataRecord != null && normdataRecord.length() > 0 && !normdataRecord.equals(ConfigMain.getParameter(Parameters.AUTHORITY_DEFAULT, ""))) { String[] authorityFile = Metadaten.parseAuthorityFileArgs(normdataRecord); person.setAutorityFile(authorityFile[0], authorityFile[1], authorityFile[2]); } person.setFirstname(getField(Field.FIRSTNAME).getValue()); person.setLastname(getField(Field.LASTNAME).getValue()); result.add(person); return result; }
/** * Add the data passed from the metadata element as content to the person record. * * @param data data to add * @see de.sub.goobi.metadaten.RenderableGroupableMetadatum#addContent(ugh.dl.Metadata) */ @Override public void addContent(Metadata data) { if (data instanceof Person) { Person personData = (Person) data; if (personData.getLastname() != null) { getField(Field.LASTNAME).setValue(personData.getLastname()); } if (personData.getFirstname() != null) { getField(Field.FIRSTNAME).setValue(personData.getFirstname()); } if (personData.getAuthorityURI() != null) { getField(Field.NORMDATA_RECORD).setValue(personData.getAuthorityValue()); } } else { String[] lastNameFirstName = data.getValue().split(", ", 2); getField(Field.LASTNAME).setValue(lastNameFirstName[0]); if (lastNameFirstName.length > 1) { getField(Field.FIRSTNAME).setValue(lastNameFirstName[1]); } } }
/** * @throws MetadataTypeNotAllowedException * @throws WrongImportFileException * @throws IOException * @throws WrongImportFileException * @throws TypeNotAllowedForParentException */ private void ParsenArtikel( DocStruct inStruct, String myLeft, String myRight, boolean istErsterTitel) throws MetadataTypeNotAllowedException, WrongImportFileException { // myLogger.debug(myLeft); // myLogger.debug(myRight); // myLogger.debug("---"); Metadata md; MetadataType mdt; // J: Zeitschrift // V: Band // I: Heft // Y: Jahrgang // SO: Quelle (fuer uns intern) // AR: Author (Referenz) // BR: Biographische Referenz // AB: Abstract-Review // DE: Vorlaeufige AN-Nummer (eher fuer uns intern) // SI: Quellenangabe für Rezension im Zentralblatt // /* * -------------------------------- erledigt * * TI: Titel AU: Autor LA: Sprache NH: Namensvariationen CC: MSC 2000 KW: Keywords AN: Zbl und/oder JFM Nummer P: Seiten * * -------------------------------- */ /* * -------------------------------- Titel -------------------------------- */ if (myLeft.equals("TI")) { if (istErsterTitel) { mdt = this.myPrefs.getMetadataTypeByName("TitleDocMain"); } else { mdt = this.myPrefs.getMetadataTypeByName("MainTitleTranslated"); } md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- Sprache -------------------------------- */ if (myLeft.equals("LA")) { mdt = this.myPrefs.getMetadataTypeByName("DocLanguage"); md = new Metadata(mdt); md.setValue(myRight.toLowerCase()); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLIdentifier -------------------------------- */ if (myLeft.equals("AN")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLIdentifier"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLPageNumber -------------------------------- */ if (myLeft.equals("P")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLPageNumber"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLSource -------------------------------- */ if (myLeft.equals("SO")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLSource"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLAbstract -------------------------------- */ if (myLeft.equals("AB")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLAbstract"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLReviewAuthor -------------------------------- */ if (myLeft.equals("RV")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLReviewAuthor"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLCita -------------------------------- */ if (myLeft.equals("CI")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLCita"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLTempID -------------------------------- */ if (myLeft.equals("DE")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLTempID"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLReviewLink -------------------------------- */ if (myLeft.equals("SI")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLReviewLink"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- ZBLIntern -------------------------------- */ if (myLeft.equals("XX")) { mdt = this.myPrefs.getMetadataTypeByName("ZBLIntern"); md = new Metadata(mdt); md.setValue(myRight); inStruct.addMetadata(md); return; } /* * -------------------------------- Keywords -------------------------------- */ if (myLeft.equals("KW")) { StringTokenizer tokenizer = new StringTokenizer(myRight, ";"); while (tokenizer.hasMoreTokens()) { md = new Metadata(this.myPrefs.getMetadataTypeByName("Keyword")); String myTok = tokenizer.nextToken(); md.setValue(myTok.trim()); inStruct.addMetadata(md); } return; } /* * -------------------------------- Autoren als Personen -------------------------------- */ if (myLeft.equals("AU")) { StringTokenizer tokenizer = new StringTokenizer(myRight, ";"); while (tokenizer.hasMoreTokens()) { Person p = new Person(this.myPrefs.getMetadataTypeByName("ZBLAuthor")); String myTok = tokenizer.nextToken(); if (myTok.indexOf(",") == -1) { throw new WrongImportFileException( "Parsingfehler: Vorname nicht mit Komma vom Nachnamen getrennt ('" + myTok + "')"); } p.setLastname(myTok.substring(0, myTok.indexOf(",")).trim()); p.setFirstname(myTok.substring(myTok.indexOf(",") + 1, myTok.length()).trim()); p.setRole("ZBLAuthor"); inStruct.addPerson(p); } return; } /* * -------------------------------- AutorVariationen als Personen -------------------------------- */ if (myLeft.equals("NH")) { StringTokenizer tokenizer = new StringTokenizer(myRight, ";"); while (tokenizer.hasMoreTokens()) { Person p = new Person(this.myPrefs.getMetadataTypeByName("AuthorVariation")); String myTok = tokenizer.nextToken(); if (myTok.indexOf(",") == -1) { throw new WrongImportFileException( "Parsingfehler: Vorname nicht mit Komma vom Nachnamen getrennt ('" + myTok + "')"); } p.setLastname(myTok.substring(0, myTok.indexOf(",")).trim()); p.setFirstname(myTok.substring(myTok.indexOf(",") + 1, myTok.length()).trim()); p.setRole("AuthorVariation"); inStruct.addPerson(p); } return; } /* * -------------------------------- MSC 2000 - ClassificationMSC -------------------------------- */ if (myLeft.equals("CC")) { StringTokenizer tokenizer = new StringTokenizer(myRight); while (tokenizer.hasMoreTokens()) { md = new Metadata(this.myPrefs.getMetadataTypeByName("ClassificationMSC")); String myTok = tokenizer.nextToken(); md.setValue(myTok.trim()); inStruct.addMetadata(md); } return; } }