View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  
22  package org.opencastproject.schema;
23  
24  import static org.opencastproject.util.data.Option.error;
25  import static org.opencastproject.util.data.Option.none;
26  import static org.opencastproject.util.data.Option.some;
27  
28  import org.opencastproject.util.data.Function0;
29  import org.opencastproject.util.data.Option;
30  
31  import java.util.Date;
32  
33  /** Mutable builder for {@link org.opencastproject.schema.OcDublinCore}. */
34  public class OcDublinCoreBuilder implements OcDublinCore {
35    protected Option<String> abstrakt = none();
36    protected Option<String> accessRights = none();
37    protected Option<String> accrualMethod = none();
38    protected Option<String> accrualPeriodicity = none();
39    protected Option<String> accrualPolicy = none();
40    protected Option<String> alternative = none();
41    protected Option<String> audience = none();
42    protected Option<String> available = none();
43    protected Option<String> bibliographicCitation = none();
44    protected Option<String> conformsTo = none();
45    protected Option<String> contributor = none();
46    protected Option<String> coverage = none();
47    protected Option<Date> created = none();
48    protected Option<String> creator = none();
49    protected Option<Date> date = none();
50    protected Option<Date> dateAccepted = none();
51    protected Option<Date> dateCopyrighted = none();
52    protected Option<Date> dateSubmitted = none();
53    protected Option<String> description = none();
54    protected Option<String> educationLevel = none();
55    protected Option<Long> extent = none();
56    protected Option<String> format = none();
57    protected Option<String> hasFormat = none();
58    protected Option<String> hasPart = none();
59    protected Option<String> hasVersion = none();
60    protected Option<String> identifier = none();
61    protected Option<String> instructionalMethod = none();
62    protected Option<String> isFormatOf = none();
63    protected Option<String> isPartOf = none();
64    protected Option<String> isReferencedBy = none();
65    protected Option<String> isReplacedBy = none();
66    protected Option<String> isRequiredBy = none();
67    protected Option<String> issued = none();
68    protected Option<String> isVersionOf = none();
69    protected Option<String> language = none();
70    protected Option<String> license = none();
71    protected Option<String> mediator = none();
72    protected Option<String> medium = none();
73    protected Option<String> modified = none();
74    protected Option<String> provenance = none();
75    protected Option<String> publisher = none();
76    protected Option<String> references = none();
77    protected Option<String> relation = none();
78    protected Option<String> replaces = none();
79    protected Option<String> requires = none();
80    protected Option<String> rights = none();
81    protected Option<String> rightsHolder = none();
82    protected Option<String> source = none();
83    protected Option<String> spatial = none();
84    protected Option<String> subject = none();
85    protected Option<String> tableOfContents = none();
86    protected Option<String> temporal = none();
87    protected Option<String> title = none();
88    protected Option<String> type = none();
89    protected Option<String> valid = none();
90  
91    public static OcDublinCoreBuilder create(final OcDublinCore source) {
92      // traditional copy here: completeness is checked in the corresponding unit test by means of the transfer idiom
93      final OcDublinCoreBuilder target = new OcDublinCoreBuilder();
94      target.abstrakt = source.getAbstract();
95      target.accessRights = source.getAccessRights();
96      target.accrualMethod = source.getAccrualMethod();
97      target.accrualPeriodicity = source.getAccrualPeriodicity();
98      target.accrualPolicy = source.getAccrualPolicy();
99      target.alternative = source.getAlternative();
100     target.audience = source.getAudience();
101     target.available = source.getAvailable();
102     target.bibliographicCitation = source.getBibliographicCitation();
103     target.conformsTo = source.getConformsTo();
104     target.contributor = source.getContributor();
105     target.coverage = source.getCoverage();
106     target.created = some(source.getCreated());
107     target.creator = source.getCreator();
108     target.date = source.getDate();
109     target.dateAccepted = source.getDateAccepted();
110     target.dateCopyrighted = source.getDateCopyrighted();
111     target.dateSubmitted = source.getDateSubmitted();
112     target.description = source.getDescription();
113     target.educationLevel = source.getEducationLevel();
114     target.extent = source.getExtent();
115     target.format = source.getFormat();
116     target.hasFormat = source.getHasFormat();
117     target.hasPart = source.getHasPart();
118     target.hasVersion = source.getHasVersion();
119     target.identifier = source.getIdentifier();
120     target.instructionalMethod = source.getInstructionalMethod();
121     target.isFormatOf = source.getIsFormatOf();
122     target.isPartOf = source.getIsPartOf();
123     target.isReferencedBy = source.getIsReferencedBy();
124     target.isReplacedBy = source.getIsReplacedBy();
125     target.isRequiredBy = source.getIsRequiredBy();
126     target.issued = source.getIssued();
127     target.isVersionOf = source.getIsVersionOf();
128     target.language = source.getLanguage();
129     target.license = source.getLicense();
130     target.mediator = source.getMediator();
131     target.medium = source.getMedium();
132     target.modified = source.getModified();
133     target.provenance = source.getProvenance();
134     target.publisher = source.getPublisher();
135     target.references = source.getReferences();
136     target.relation = source.getRelation();
137     target.replaces = source.getReplaces();
138     target.requires = source.getRequires();
139     target.rights = source.getRights();
140     target.rightsHolder = source.getRightsHolder();
141     target.source = source.getSource();
142     target.spatial = source.getSpatial();
143     target.subject = source.getSubject();
144     target.tableOfContents = source.getTableOfContents();
145     target.temporal = source.getTemporal();
146     target.title = some(source.getTitle());
147     target.type = source.getType();
148     target.valid = source.getValid();
149     return target;
150   }
151 
152   public OcDublinCoreBuilder setAbstract(Option<String> a) {
153     this.abstrakt = a;
154     return this;
155   }
156 
157   public OcDublinCoreBuilder setAccessRights(Option<String> a) {
158     this.accessRights = a;
159     return this;
160   }
161 
162   public OcDublinCoreBuilder setAccrualMethod(Option<String> a) {
163     this.accrualMethod = a;
164     return this;
165   }
166 
167   public OcDublinCoreBuilder setAccrualPeriodicity(Option<String> a) {
168     this.accrualPeriodicity = a;
169     return this;
170   }
171 
172   public OcDublinCoreBuilder setAccrualPolicy(Option<String> a) {
173     this.accrualPolicy = a;
174     return this;
175   }
176 
177   public OcDublinCoreBuilder setAlternative(Option<String> a) {
178     this.alternative = a;
179     return this;
180   }
181 
182   public OcDublinCoreBuilder setAudience(Option<String> a) {
183     this.audience = a;
184     return this;
185   }
186 
187   public OcDublinCoreBuilder setAvailable(Option<String> a) {
188     this.available = a;
189     return this;
190   }
191 
192   public OcDublinCoreBuilder setBibliographicCitation(Option<String> a) {
193     this.bibliographicCitation = a;
194     return this;
195   }
196 
197   public OcDublinCoreBuilder setConformsTo(Option<String> a) {
198     this.conformsTo = a;
199     return this;
200   }
201 
202   public OcDublinCoreBuilder setContributor(Option<String> a) {
203     this.contributor = a;
204     return this;
205   }
206 
207   public OcDublinCoreBuilder setCoverage(Option<String> a) {
208     this.coverage = a;
209     return this;
210   }
211 
212   public OcDublinCoreBuilder setCreated(Option<Date> a) {
213     this.created = a;
214     return this;
215   }
216 
217   public OcDublinCoreBuilder setCreator(Option<String> a) {
218     this.creator = a;
219     return this;
220   }
221 
222   public OcDublinCoreBuilder setDate(Option<Date> a) {
223     this.date = a;
224     return this;
225   }
226 
227   public OcDublinCoreBuilder setDateAccepted(Option<Date> a) {
228     this.dateAccepted = a;
229     return this;
230   }
231 
232   public OcDublinCoreBuilder setDateCopyrighted(Option<Date> a) {
233     this.dateCopyrighted = a;
234     return this;
235   }
236 
237   public OcDublinCoreBuilder setDateSubmitted(Option<Date> a) {
238     this.dateSubmitted = a;
239     return this;
240   }
241 
242   public OcDublinCoreBuilder setDescription(Option<String> a) {
243     this.description = a;
244     return this;
245   }
246 
247   public OcDublinCoreBuilder setEducationLevel(Option<String> a) {
248     this.educationLevel = a;
249     return this;
250   }
251 
252   public OcDublinCoreBuilder setExtent(Option<Long> a) {
253     this.extent = a;
254     return this;
255   }
256 
257   public OcDublinCoreBuilder setFormat(Option<String> a) {
258     this.format = a;
259     return this;
260   }
261 
262   public OcDublinCoreBuilder setHasFormat(Option<String> a) {
263     this.hasFormat = a;
264     return this;
265   }
266 
267   public OcDublinCoreBuilder setHasPart(Option<String> a) {
268     this.hasPart = a;
269     return this;
270   }
271 
272   public OcDublinCoreBuilder setHasVersion(Option<String> a) {
273     this.hasVersion = a;
274     return this;
275   }
276 
277   public OcDublinCoreBuilder setIdentifier(Option<String> a) {
278     this.identifier = a;
279     return this;
280   }
281 
282   public OcDublinCoreBuilder setInstructionalMethod(Option<String> a) {
283     this.instructionalMethod = a;
284     return this;
285   }
286 
287   public OcDublinCoreBuilder setIsFormatOf(Option<String> a) {
288     this.isFormatOf = a;
289     return this;
290   }
291 
292   public OcDublinCoreBuilder setIsPartOf(Option<String> a) {
293     this.isPartOf = a;
294     return this;
295   }
296 
297   public OcDublinCoreBuilder setIsReferencedBy(Option<String> a) {
298     this.isReferencedBy = a;
299     return this;
300   }
301 
302   public OcDublinCoreBuilder setIsReplacedBy(Option<String> a) {
303     this.isReplacedBy = a;
304     return this;
305   }
306 
307   public OcDublinCoreBuilder setIsRequiredBy(Option<String> a) {
308     this.isRequiredBy = a;
309     return this;
310   }
311 
312   public OcDublinCoreBuilder setIssued(Option<String> a) {
313     this.issued = a;
314     return this;
315   }
316 
317   public OcDublinCoreBuilder setIsVersionOf(Option<String> a) {
318     this.isVersionOf = a;
319     return this;
320   }
321 
322   public OcDublinCoreBuilder setLanguage(Option<String> a) {
323     this.language = a;
324     return this;
325   }
326 
327   public OcDublinCoreBuilder setLicense(Option<String> a) {
328     this.license = a;
329     return this;
330   }
331 
332   public OcDublinCoreBuilder setMediator(Option<String> a) {
333     this.mediator = a;
334     return this;
335   }
336 
337   public OcDublinCoreBuilder setMedium(Option<String> a) {
338     this.medium = a;
339     return this;
340   }
341 
342   public OcDublinCoreBuilder setModified(Option<String> a) {
343     this.modified = a;
344     return this;
345   }
346 
347   public OcDublinCoreBuilder setProvenance(Option<String> a) {
348     this.provenance = a;
349     return this;
350   }
351 
352   public OcDublinCoreBuilder setPublisher(Option<String> a) {
353     this.publisher = a;
354     return this;
355   }
356 
357   public OcDublinCoreBuilder setReferences(Option<String> a) {
358     this.references = a;
359     return this;
360   }
361 
362   public OcDublinCoreBuilder setRelation(Option<String> a) {
363     this.relation = a;
364     return this;
365   }
366 
367   public OcDublinCoreBuilder setReplaces(Option<String> a) {
368     this.replaces = a;
369     return this;
370   }
371 
372   public OcDublinCoreBuilder setRequires(Option<String> a) {
373     this.requires = a;
374     return this;
375   }
376 
377   public OcDublinCoreBuilder setRights(Option<String> a) {
378     this.rights = a;
379     return this;
380   }
381 
382   public OcDublinCoreBuilder setRightsHolder(Option<String> a) {
383     this.rightsHolder = a;
384     return this;
385   }
386 
387   public OcDublinCoreBuilder setSource(Option<String> a) {
388     this.source = a;
389     return this;
390   }
391 
392   public OcDublinCoreBuilder setSpatial(Option<String> a) {
393     this.spatial = a;
394     return this;
395   }
396 
397   public OcDublinCoreBuilder setSubject(Option<String> a) {
398     this.subject = a;
399     return this;
400   }
401 
402   public OcDublinCoreBuilder setTableOfContents(Option<String> a) {
403     this.tableOfContents = a;
404     return this;
405   }
406 
407   public OcDublinCoreBuilder setTemporal(Option<String> a) {
408     this.temporal = a;
409     return this;
410   }
411 
412   public OcDublinCoreBuilder setTitle(Option<String> a) {
413     this.title = a;
414     return this;
415   }
416 
417   public OcDublinCoreBuilder setType(Option<String> a) {
418     this.type = a;
419     return this;
420   }
421 
422   public OcDublinCoreBuilder setValid(Option<String> a) {
423     this.valid = a;
424     return this;
425   }
426 
427   public OcDublinCoreBuilder setAbstract(String a) {
428     this.abstrakt = some(a);
429     return this;
430   }
431 
432   public OcDublinCoreBuilder setAccessRights(String a) {
433     this.accessRights = some(a);
434     return this;
435   }
436 
437   public OcDublinCoreBuilder setAccrualMethod(String a) {
438     this.accrualMethod = some(a);
439     return this;
440   }
441 
442   public OcDublinCoreBuilder setAccrualPeriodicity(String a) {
443     this.accrualPeriodicity = some(a);
444     return this;
445   }
446 
447   public OcDublinCoreBuilder setAccrualPolicy(String a) {
448     this.accrualPolicy = some(a);
449     return this;
450   }
451 
452   public OcDublinCoreBuilder setAlternative(String a) {
453     this.alternative = some(a);
454     return this;
455   }
456 
457   public OcDublinCoreBuilder setAudience(String a) {
458     this.audience = some(a);
459     return this;
460   }
461 
462   public OcDublinCoreBuilder setAvailable(String a) {
463     this.available = some(a);
464     return this;
465   }
466 
467   public OcDublinCoreBuilder setBibliographicCitation(String a) {
468     this.bibliographicCitation = some(a);
469     return this;
470   }
471 
472   public OcDublinCoreBuilder setConformsTo(String a) {
473     this.conformsTo = some(a);
474     return this;
475   }
476 
477   public OcDublinCoreBuilder setContributor(String a) {
478     this.contributor = some(a);
479     return this;
480   }
481 
482   public OcDublinCoreBuilder setCoverage(String a) {
483     this.coverage = some(a);
484     return this;
485   }
486 
487   public OcDublinCoreBuilder setCreated(Date a) {
488     this.created = some(a);
489     return this;
490   }
491 
492   public OcDublinCoreBuilder setCreator(String a) {
493     this.creator = some(a);
494     return this;
495   }
496 
497   public OcDublinCoreBuilder setDate(Date a) {
498     this.date = some(a);
499     return this;
500   }
501 
502   public OcDublinCoreBuilder setDateAccepted(Date a) {
503     this.dateAccepted = some(a);
504     return this;
505   }
506 
507   public OcDublinCoreBuilder setDateCopyrighted(Date a) {
508     this.dateCopyrighted = some(a);
509     return this;
510   }
511 
512   public OcDublinCoreBuilder setDateSubmitted(Date a) {
513     this.dateSubmitted = some(a);
514     return this;
515   }
516 
517   public OcDublinCoreBuilder setDescription(String a) {
518     this.description = some(a);
519     return this;
520   }
521 
522   public OcDublinCoreBuilder setEducationLevel(String a) {
523     this.educationLevel = some(a);
524     return this;
525   }
526 
527   public OcDublinCoreBuilder setExtent(Long a) {
528     this.extent = some(a);
529     return this;
530   }
531 
532   public OcDublinCoreBuilder setFormat(String a) {
533     this.format = some(a);
534     return this;
535   }
536 
537   public OcDublinCoreBuilder setHasFormat(String a) {
538     this.hasFormat = some(a);
539     return this;
540   }
541 
542   public OcDublinCoreBuilder setHasPart(String a) {
543     this.hasPart = some(a);
544     return this;
545   }
546 
547   public OcDublinCoreBuilder setHasVersion(String a) {
548     this.hasVersion = some(a);
549     return this;
550   }
551 
552   public OcDublinCoreBuilder setIdentifier(String a) {
553     this.identifier = some(a);
554     return this;
555   }
556 
557   public OcDublinCoreBuilder setInstructionalMethod(String a) {
558     this.instructionalMethod = some(a);
559     return this;
560   }
561 
562   public OcDublinCoreBuilder setIsFormatOf(String a) {
563     this.isFormatOf = some(a);
564     return this;
565   }
566 
567   public OcDublinCoreBuilder setIsPartOf(String a) {
568     this.isPartOf = some(a);
569     return this;
570   }
571 
572   public OcDublinCoreBuilder setIsReferencedBy(String a) {
573     this.isReferencedBy = some(a);
574     return this;
575   }
576 
577   public OcDublinCoreBuilder setIsReplacedBy(String a) {
578     this.isReplacedBy = some(a);
579     return this;
580   }
581 
582   public OcDublinCoreBuilder setIsRequiredBy(String a) {
583     this.isRequiredBy = some(a);
584     return this;
585   }
586 
587   public OcDublinCoreBuilder setIssued(String a) {
588     this.issued = some(a);
589     return this;
590   }
591 
592   public OcDublinCoreBuilder setIsVersionOf(String a) {
593     this.isVersionOf = some(a);
594     return this;
595   }
596 
597   public OcDublinCoreBuilder setLanguage(String a) {
598     this.language = some(a);
599     return this;
600   }
601 
602   public OcDublinCoreBuilder setLicense(String a) {
603     this.license = some(a);
604     return this;
605   }
606 
607   public OcDublinCoreBuilder setMediator(String a) {
608     this.mediator = some(a);
609     return this;
610   }
611 
612   public OcDublinCoreBuilder setMedium(String a) {
613     this.medium = some(a);
614     return this;
615   }
616 
617   public OcDublinCoreBuilder setModified(String a) {
618     this.modified = some(a);
619     return this;
620   }
621 
622   public OcDublinCoreBuilder setProvenance(String a) {
623     this.provenance = some(a);
624     return this;
625   }
626 
627   public OcDublinCoreBuilder setPublisher(String a) {
628     this.publisher = some(a);
629     return this;
630   }
631 
632   public OcDublinCoreBuilder setReferences(String a) {
633     this.references = some(a);
634     return this;
635   }
636 
637   public OcDublinCoreBuilder setRelation(String a) {
638     this.relation = some(a);
639     return this;
640   }
641 
642   public OcDublinCoreBuilder setReplaces(String a) {
643     this.replaces = some(a);
644     return this;
645   }
646 
647   public OcDublinCoreBuilder setRequires(String a) {
648     this.requires = some(a);
649     return this;
650   }
651 
652   public OcDublinCoreBuilder setRights(String a) {
653     this.rights = some(a);
654     return this;
655   }
656 
657   public OcDublinCoreBuilder setRightsHolder(String a) {
658     this.rightsHolder = some(a);
659     return this;
660   }
661 
662   public OcDublinCoreBuilder setSource(String a) {
663     this.source = some(a);
664     return this;
665   }
666 
667   public OcDublinCoreBuilder setSpatial(String a) {
668     this.spatial = some(a);
669     return this;
670   }
671 
672   public OcDublinCoreBuilder setSubject(String a) {
673     this.subject = some(a);
674     return this;
675   }
676 
677   public OcDublinCoreBuilder setTableOfContents(String a) {
678     this.tableOfContents = some(a);
679     return this;
680   }
681 
682   public OcDublinCoreBuilder setTemporal(String a) {
683     this.temporal = some(a);
684     return this;
685   }
686 
687   public OcDublinCoreBuilder setTitle(String a) {
688     this.title = some(a);
689     return this;
690   }
691 
692   public OcDublinCoreBuilder setType(String a) {
693     this.type = some(a);
694     return this;
695   }
696 
697   public OcDublinCoreBuilder setValid(String a) {
698     this.valid = some(a);
699     return this;
700   }
701 
702   @Override public Option<String> getAbstract() {
703     return abstrakt;
704   }
705 
706   @Override public Option<String> getAccessRights() {
707     return accessRights;
708   }
709 
710   @Override public Option<String> getAccrualMethod() {
711     return accrualMethod;
712   }
713 
714   @Override public Option<String> getAccrualPeriodicity() {
715     return accrualPeriodicity;
716   }
717 
718   @Override public Option<String> getAccrualPolicy() {
719     return accrualPolicy;
720   }
721 
722   @Override public Option<String> getAlternative() {
723     return alternative;
724   }
725 
726   @Override public Option<String> getAudience() {
727     return audience;
728   }
729 
730   @Override public Option<String> getAvailable() {
731     return available;
732   }
733 
734   @Override public Option<String> getBibliographicCitation() {
735     return bibliographicCitation;
736   }
737 
738   @Override public Option<String> getConformsTo() {
739     return conformsTo;
740   }
741 
742   @Override public Option<String> getContributor() {
743     return contributor;
744   }
745 
746   @Override public Option<String> getCoverage() {
747     return coverage;
748   }
749 
750   private static final Function0<Date> createdNotSet = error("created not set");
751 
752   @Override public Date getCreated() {
753     return created.getOrElse(createdNotSet);
754   }
755 
756   @Override public Option<String> getCreator() {
757     return creator;
758   }
759 
760   @Override public Option<Date> getDate() {
761     return date;
762   }
763 
764   @Override public Option<Date> getDateAccepted() {
765     return dateAccepted;
766   }
767 
768   @Override public Option<Date> getDateCopyrighted() {
769     return dateCopyrighted;
770   }
771 
772   @Override public Option<Date> getDateSubmitted() {
773     return dateSubmitted;
774   }
775 
776   @Override public Option<String> getDescription() {
777     return description;
778   }
779 
780   @Override public Option<String> getEducationLevel() {
781     return educationLevel;
782   }
783 
784   @Override public Option<Long> getExtent() {
785     return extent;
786   }
787 
788   @Override public Option<String> getFormat() {
789     return format;
790   }
791 
792   @Override public Option<String> getHasFormat() {
793     return hasFormat;
794   }
795 
796   @Override public Option<String> getHasPart() {
797     return hasPart;
798   }
799 
800   @Override public Option<String> getHasVersion() {
801     return hasVersion;
802   }
803 
804   @Override public Option<String> getIdentifier() {
805     return identifier;
806   }
807 
808   @Override public Option<String> getInstructionalMethod() {
809     return instructionalMethod;
810   }
811 
812   @Override public Option<String> getIsFormatOf() {
813     return isFormatOf;
814   }
815 
816   @Override public Option<String> getIsPartOf() {
817     return isPartOf;
818   }
819 
820   @Override public Option<String> getIsReferencedBy() {
821     return isReferencedBy;
822   }
823 
824   @Override public Option<String> getIsReplacedBy() {
825     return isReplacedBy;
826   }
827 
828   @Override public Option<String> getIsRequiredBy() {
829     return isRequiredBy;
830   }
831 
832   @Override public Option<String> getIssued() {
833     return issued;
834   }
835 
836   @Override public Option<String> getIsVersionOf() {
837     return isVersionOf;
838   }
839 
840   @Override public Option<String> getLanguage() {
841     return language;
842   }
843 
844   @Override public Option<String> getLicense() {
845     return license;
846   }
847 
848   @Override public Option<String> getMediator() {
849     return mediator;
850   }
851 
852   @Override public Option<String> getMedium() {
853     return medium;
854   }
855 
856   @Override public Option<String> getModified() {
857     return modified;
858   }
859 
860   @Override public Option<String> getProvenance() {
861     return provenance;
862   }
863 
864   @Override public Option<String> getPublisher() {
865     return publisher;
866   }
867 
868   @Override public Option<String> getReferences() {
869     return references;
870   }
871 
872   @Override public Option<String> getRelation() {
873     return relation;
874   }
875 
876   @Override public Option<String> getReplaces() {
877     return replaces;
878   }
879 
880   @Override public Option<String> getRequires() {
881     return requires;
882   }
883 
884   @Override public Option<String> getRights() {
885     return rights;
886   }
887 
888   @Override public Option<String> getRightsHolder() {
889     return rightsHolder;
890   }
891 
892   @Override public Option<String> getSource() {
893     return source;
894   }
895 
896   @Override public Option<String> getSpatial() {
897     return spatial;
898   }
899 
900   @Override public Option<String> getSubject() {
901     return subject;
902   }
903 
904   @Override public Option<String> getTableOfContents() {
905     return tableOfContents;
906   }
907 
908   @Override public Option<String> getTemporal() {
909     return temporal;
910   }
911 
912   private static final Function0<String> titleNotSet = error("title not set");
913 
914   @Override public String getTitle() {
915     return title.getOrElse(titleNotSet);
916   }
917 
918   @Override public Option<String> getType() {
919     return type;
920   }
921 
922   @Override public Option<String> getValid() {
923     return valid;
924   }
925 }