/* * Copyright (C) 2014 Jan Pokorsky * * 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 3 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, see <http://www.gnu.org/licenses/>. */ package cz.cas.lib.proarc.webapp.client.widget.mods; import cz.cas.lib.proarc.webapp.shared.form.Field; import cz.cas.lib.proarc.webapp.shared.form.FieldBuilder; import cz.cas.lib.proarc.webapp.shared.form.Form; import java.util.List; /** * The NDK Multipart Monograph. * * Version 1.1_2 * * @author Jan Pokorsky */ public final class NdkMonographTitleForm { public Form build() { Form f = new Form(); f.getFields().add(new FieldBuilder("mods").setMaxOccurrences(1).createField()); // mods List<Field> modsFields = f.getFields().get(0).getFields(); modsFields.add(titleInfo()); modsFields.add(originInfo()); modsFields.add(genre()); modsFields.add(identifier()); return f; } private Field titleInfo() { // titleInfo, titleInfoDefinition return new FieldBuilder("titleInfo").setTitle("Title Info - M").setMaxOccurrences(10) .setHint("Název titulu, souborný název.<p>Pro plnění použít katalogizační záznam.") // titleInfo@type, enum .addField(new FieldBuilder("type").setTitle("Type - MA").setMaxOccurrences(1).setType(Field.SELECT) .setHint("Hlavní název bez type.<dl>Hodnoty:" + "<dt>abbreviated</dt><dd>zkrácený název</dd>" + "<dt>alternative</dt><dd>alternativní název</dd>" + "<dt>translated</dt><dd>přeložený název</dd>" + "<dt>uniform</dt><dd>stejný/jednotný název</dd>" + "</dl>") .addMapValue("abbreviated", "Abbreviated") .addMapValue("alternative", "Alternative") .addMapValue("translated", "Translated") .addMapValue("uniform", "Uniform") .createField()) // type // title, type="stringPlusLanguage" .addField(new FieldBuilder("title").setMaxOccurrences(1) .addField(new FieldBuilder("value").setTitle("Title - M").setMaxOccurrences(1).setType(Field.TEXT).setRequired(true) .setHint("Názvová informace - název monografického dokumentu.") .createField()) // value // lang, String // xmlLang, lang // script, String // transliteration, String .createField()) // title // subTitle, type="stringPlusLanguage" .addField(new FieldBuilder("subTitle").setMaxOccurrences(1) .addField(new FieldBuilder("value").setTitle("Subtitle - MA").setMaxOccurrences(1).setType(Field.TEXT) .setHint("Podnázev svazku monografie.") .createField()) // value // stringPlusLanguage: @lang, @xmlLang, @script, @transliteration .createField()) // subTitle // partNumber, type="stringPlusLanguage" .addField(new FieldBuilder("partNumber").setMaxOccurrences(1) // stringPlusLanguage: @lang, @xmlLang, @script, @transliteration .addField(new FieldBuilder("value").setTitle("Part Number - R").setMaxOccurrences(1).setType(Field.TEXT) .setHint("Číslo svazku souborného záznamu.") .createField()) // value .createField()) // partNumber // partName, type="stringPlusLanguage" .addField(new FieldBuilder("partName").setMaxOccurrences(1) // stringPlusLanguage: @lang, @xmlLang, @script, @transliteration .addField(new FieldBuilder("value").setTitle("Part Name - R").setMaxOccurrences(1).setType(Field.TEXT) .setHint("Název svazku souborného záznamu.") .createField()) // value .createField()) // partName // nonSort, type="stringPlusLanguage" // titleInfo@attributes: otherType, supplied, altRepGroup, altFormatAttributeGroup, nameTitleGroup, usage, ID, authorityAttributeGroup, xlink:simpleLink, languageAttributeGroup, displayLabel .createField(); // titleInfo } private Field originInfo() { // originInfo, originInfoDefinition return new FieldBuilder("originInfo").setTitle("Origin Info - MA").setMaxOccurrences(10) // @languageAttributeGroup(lang, XmlLang, script, transliteration) // @displayLabel // @altRepGroup // @eventType // place, placeDefinition // publisher, stringPlusLanguagePlusSupplied .addField(new FieldBuilder("publisher").setMaxOccurrences(1) // stringPlusLanguagePlusSupplied: @supplied // stringPlusLanguage: @lang, @xmlLang, @script, @transliteration .addField(new FieldBuilder("value").setTitle("Publisher - MA").setMaxOccurrences(1).setType(Field.TEXT).createField()) .createField()) // publisher // dateIssued, dateDefinition extends stringPlusLanguage // dateCreated, dateDefinition extends stringPlusLanguage // dateCaptured // dateValid // dateModified // copyrightDate // dateOther // edition, type="stringPlusLanguagePlusSupplied" .addField(new FieldBuilder("edition").setMaxOccurrences(1) // stringPlusLanguagePlusSupplied: @supplied // stringPlusLanguage: @lang, @xmlLang, @script, @transliteration .addField(new FieldBuilder("value").setTitle("Edition - MA").setMaxOccurrences(1).setType(Field.TEXT).setHint("Pořadí vydání").createField()) .createField()) // edition // issuance, issuanceDefinition, enum // frequency, stringPlusLanguagePlusAuthority .createField(); // originInfo } private Field genre() { // genre, genreDefinition extends stringPlusLanguagePlusAuthority extends stringPlusLanguage return new FieldBuilder("genre").setTitle("Genre - M").setMaxOccurrences(1) .setHint("Bližší údaje o typu dokumentu.<p>Pro vícesvazkovou monografii “title”.") // genreDefinition@attributes: type, displayLabel, altRepGroup, usage // stringPlusLanguagePlusAuthority: authorityAttributeGroup: @authority, @authorityURI, @valueURI // stringPlusLanguage: @lang, @xmlLang, @script, @transliteration .addField(new FieldBuilder("value").setMaxOccurrences(1).setType(Field.TEXT).setRequired(true).createField()) .createField(); // genre } private Field identifier() { // identifier, identifierDefinition, [0,*] return new FieldBuilder("identifier").setTitle("Identifier - M").setMaxOccurrences(10) .setHint("Údaje o identifikátorech.<p>Obsahuje unikátní identifikátory" + " mezinárodní nebo lokální." + "<p>Uvádějí se i neplatné resp. zrušené identifikátory - atribut invalid=“yes“.") // stringPlusLanguage@languageAttributeGroup // lang, xs:string // xml:lang // script, xs:string // transliteration, xs:string // type, xs:string .addField(new FieldBuilder("type").setTitle("Type - M").setMaxOccurrences(1).setType(Field.COMBO).setRequired(true) .setHint("UUID - M - vygeneruje dodavatel" + "<br>čČNB - MA - převzít z katalogizačního záznamu z pole 015, podpole „a“, „z“" + "<br>ISBN - MA - převzít z katalogizačního záznamu z pole 020, podpole „a“, „z“" + "<br>ISMN - MA - převzít z katalogizačního záznamu z pole 024 (1. ind.=“2“), podpole „a“, „z“" + "<br>URN:NBN - O - zápis ve tvaru urn:nbn:cz:ndk-123456 pro projekt NDK" + "<br>jiný interní identifikátor - R - type = barcode, oclc, sysno, permalink apod.") // XXX use ValueMap .addMapValue("barcode", "Čárový kód") .addMapValue("ccnb", "čČNB") .addMapValue("doi", "DOI") .addMapValue("hdl", "Handle") .addMapValue("isbn", "ISBN") .addMapValue("ismn", "ISMN") // .addMapValue("issn", "ISSN") .addMapValue("permalink", "Permalink") .addMapValue("sici", "SICI") .addMapValue("url", "URL") .addMapValue("urnnbn", "URN:NBN") .addMapValue("uuid", "UUID") .createField()) // stringPlusLanguage/value .addField(new FieldBuilder("value").setTitle("Identifier - M").setMaxOccurrences(1).setType(Field.TEXT).setRequired(true).createField()) // identifierDefinition // displayLabel, xs:string // typeURI, xs:anyURI // invalid, fixed="yes" .addField(new FieldBuilder("invalid").setTitle("Invalid - MA").setMaxOccurrences(1).setType(Field.SELECT).setDefaultValue("") .addMapValue("", "Platný") .addMapValue("yes", "Neplatný") .createField()) // invalid // altRepGroup, xs:string .createField(); // identifier } }