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