/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License * at: * * http://opensource.org/licenses/ecl2.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package org.opencastproject.schema; import static org.opencastproject.util.data.Option.error; import static org.opencastproject.util.data.Option.none; import static org.opencastproject.util.data.Option.some; import org.opencastproject.util.data.Function0; import org.opencastproject.util.data.Option; import java.util.Date; /** Mutable builder for {@link org.opencastproject.schema.OcDublinCore}. */ public class OcDublinCoreBuilder implements OcDublinCore { protected Option<String> abstrakt = none(); protected Option<String> accessRights = none(); protected Option<String> accrualMethod = none(); protected Option<String> accrualPeriodicity = none(); protected Option<String> accrualPolicy = none(); protected Option<String> alternative = none(); protected Option<String> audience = none(); protected Option<String> available = none(); protected Option<String> bibliographicCitation = none(); protected Option<String> conformsTo = none(); protected Option<String> contributor = none(); protected Option<String> coverage = none(); protected Option<Date> created = none(); protected Option<String> creator = none(); protected Option<Date> date = none(); protected Option<Date> dateAccepted = none(); protected Option<Date> dateCopyrighted = none(); protected Option<Date> dateSubmitted = none(); protected Option<String> description = none(); protected Option<String> educationLevel = none(); protected Option<Long> extent = none(); protected Option<String> format = none(); protected Option<String> hasFormat = none(); protected Option<String> hasPart = none(); protected Option<String> hasVersion = none(); protected Option<String> identifier = none(); protected Option<String> instructionalMethod = none(); protected Option<String> isFormatOf = none(); protected Option<String> isPartOf = none(); protected Option<String> isReferencedBy = none(); protected Option<String> isReplacedBy = none(); protected Option<String> isRequiredBy = none(); protected Option<String> issued = none(); protected Option<String> isVersionOf = none(); protected Option<String> language = none(); protected Option<String> license = none(); protected Option<String> mediator = none(); protected Option<String> medium = none(); protected Option<String> modified = none(); protected Option<String> provenance = none(); protected Option<String> publisher = none(); protected Option<String> references = none(); protected Option<String> relation = none(); protected Option<String> replaces = none(); protected Option<String> requires = none(); protected Option<String> rights = none(); protected Option<String> rightsHolder = none(); protected Option<String> source = none(); protected Option<String> spatial = none(); protected Option<String> subject = none(); protected Option<String> tableOfContents = none(); protected Option<String> temporal = none(); protected Option<String> title = none(); protected Option<String> type = none(); protected Option<String> valid = none(); public static OcDublinCoreBuilder create(final OcDublinCore source) { // traditional copy here: completeness is checked in the corresponding unit test by means of the transfer idiom final OcDublinCoreBuilder target = new OcDublinCoreBuilder(); target.abstrakt = source.getAbstract(); target.accessRights = source.getAccessRights(); target.accrualMethod = source.getAccrualMethod(); target.accrualPeriodicity = source.getAccrualPeriodicity(); target.accrualPolicy = source.getAccrualPolicy(); target.alternative = source.getAlternative(); target.audience = source.getAudience(); target.available = source.getAvailable(); target.bibliographicCitation = source.getBibliographicCitation(); target.conformsTo = source.getConformsTo(); target.contributor = source.getContributor(); target.coverage = source.getCoverage(); target.created = some(source.getCreated()); target.creator = source.getCreator(); target.date = source.getDate(); target.dateAccepted = source.getDateAccepted(); target.dateCopyrighted = source.getDateCopyrighted(); target.dateSubmitted = source.getDateSubmitted(); target.description = source.getDescription(); target.educationLevel = source.getEducationLevel(); target.extent = source.getExtent(); target.format = source.getFormat(); target.hasFormat = source.getHasFormat(); target.hasPart = source.getHasPart(); target.hasVersion = source.getHasVersion(); target.identifier = source.getIdentifier(); target.instructionalMethod = source.getInstructionalMethod(); target.isFormatOf = source.getIsFormatOf(); target.isPartOf = source.getIsPartOf(); target.isReferencedBy = source.getIsReferencedBy(); target.isReplacedBy = source.getIsReplacedBy(); target.isRequiredBy = source.getIsRequiredBy(); target.issued = source.getIssued(); target.isVersionOf = source.getIsVersionOf(); target.language = source.getLanguage(); target.license = source.getLicense(); target.mediator = source.getMediator(); target.medium = source.getMedium(); target.modified = source.getModified(); target.provenance = source.getProvenance(); target.publisher = source.getPublisher(); target.references = source.getReferences(); target.relation = source.getRelation(); target.replaces = source.getReplaces(); target.requires = source.getRequires(); target.rights = source.getRights(); target.rightsHolder = source.getRightsHolder(); target.source = source.getSource(); target.spatial = source.getSpatial(); target.subject = source.getSubject(); target.tableOfContents = source.getTableOfContents(); target.temporal = source.getTemporal(); target.title = some(source.getTitle()); target.type = source.getType(); target.valid = source.getValid(); return target; } public OcDublinCoreBuilder setAbstract(Option<String> a) { this.abstrakt = a; return this; } public OcDublinCoreBuilder setAccessRights(Option<String> a) { this.accessRights = a; return this; } public OcDublinCoreBuilder setAccrualMethod(Option<String> a) { this.accrualMethod = a; return this; } public OcDublinCoreBuilder setAccrualPeriodicity(Option<String> a) { this.accrualPeriodicity = a; return this; } public OcDublinCoreBuilder setAccrualPolicy(Option<String> a) { this.accrualPolicy = a; return this; } public OcDublinCoreBuilder setAlternative(Option<String> a) { this.alternative = a; return this; } public OcDublinCoreBuilder setAudience(Option<String> a) { this.audience = a; return this; } public OcDublinCoreBuilder setAvailable(Option<String> a) { this.available = a; return this; } public OcDublinCoreBuilder setBibliographicCitation(Option<String> a) { this.bibliographicCitation = a; return this; } public OcDublinCoreBuilder setConformsTo(Option<String> a) { this.conformsTo = a; return this; } public OcDublinCoreBuilder setContributor(Option<String> a) { this.contributor = a; return this; } public OcDublinCoreBuilder setCoverage(Option<String> a) { this.coverage = a; return this; } public OcDublinCoreBuilder setCreated(Option<Date> a) { this.created = a; return this; } public OcDublinCoreBuilder setCreator(Option<String> a) { this.creator = a; return this; } public OcDublinCoreBuilder setDate(Option<Date> a) { this.date = a; return this; } public OcDublinCoreBuilder setDateAccepted(Option<Date> a) { this.dateAccepted = a; return this; } public OcDublinCoreBuilder setDateCopyrighted(Option<Date> a) { this.dateCopyrighted = a; return this; } public OcDublinCoreBuilder setDateSubmitted(Option<Date> a) { this.dateSubmitted = a; return this; } public OcDublinCoreBuilder setDescription(Option<String> a) { this.description = a; return this; } public OcDublinCoreBuilder setEducationLevel(Option<String> a) { this.educationLevel = a; return this; } public OcDublinCoreBuilder setExtent(Option<Long> a) { this.extent = a; return this; } public OcDublinCoreBuilder setFormat(Option<String> a) { this.format = a; return this; } public OcDublinCoreBuilder setHasFormat(Option<String> a) { this.hasFormat = a; return this; } public OcDublinCoreBuilder setHasPart(Option<String> a) { this.hasPart = a; return this; } public OcDublinCoreBuilder setHasVersion(Option<String> a) { this.hasVersion = a; return this; } public OcDublinCoreBuilder setIdentifier(Option<String> a) { this.identifier = a; return this; } public OcDublinCoreBuilder setInstructionalMethod(Option<String> a) { this.instructionalMethod = a; return this; } public OcDublinCoreBuilder setIsFormatOf(Option<String> a) { this.isFormatOf = a; return this; } public OcDublinCoreBuilder setIsPartOf(Option<String> a) { this.isPartOf = a; return this; } public OcDublinCoreBuilder setIsReferencedBy(Option<String> a) { this.isReferencedBy = a; return this; } public OcDublinCoreBuilder setIsReplacedBy(Option<String> a) { this.isReplacedBy = a; return this; } public OcDublinCoreBuilder setIsRequiredBy(Option<String> a) { this.isRequiredBy = a; return this; } public OcDublinCoreBuilder setIssued(Option<String> a) { this.issued = a; return this; } public OcDublinCoreBuilder setIsVersionOf(Option<String> a) { this.isVersionOf = a; return this; } public OcDublinCoreBuilder setLanguage(Option<String> a) { this.language = a; return this; } public OcDublinCoreBuilder setLicense(Option<String> a) { this.license = a; return this; } public OcDublinCoreBuilder setMediator(Option<String> a) { this.mediator = a; return this; } public OcDublinCoreBuilder setMedium(Option<String> a) { this.medium = a; return this; } public OcDublinCoreBuilder setModified(Option<String> a) { this.modified = a; return this; } public OcDublinCoreBuilder setProvenance(Option<String> a) { this.provenance = a; return this; } public OcDublinCoreBuilder setPublisher(Option<String> a) { this.publisher = a; return this; } public OcDublinCoreBuilder setReferences(Option<String> a) { this.references = a; return this; } public OcDublinCoreBuilder setRelation(Option<String> a) { this.relation = a; return this; } public OcDublinCoreBuilder setReplaces(Option<String> a) { this.replaces = a; return this; } public OcDublinCoreBuilder setRequires(Option<String> a) { this.requires = a; return this; } public OcDublinCoreBuilder setRights(Option<String> a) { this.rights = a; return this; } public OcDublinCoreBuilder setRightsHolder(Option<String> a) { this.rightsHolder = a; return this; } public OcDublinCoreBuilder setSource(Option<String> a) { this.source = a; return this; } public OcDublinCoreBuilder setSpatial(Option<String> a) { this.spatial = a; return this; } public OcDublinCoreBuilder setSubject(Option<String> a) { this.subject = a; return this; } public OcDublinCoreBuilder setTableOfContents(Option<String> a) { this.tableOfContents = a; return this; } public OcDublinCoreBuilder setTemporal(Option<String> a) { this.temporal = a; return this; } public OcDublinCoreBuilder setTitle(Option<String> a) { this.title = a; return this; } public OcDublinCoreBuilder setType(Option<String> a) { this.type = a; return this; } public OcDublinCoreBuilder setValid(Option<String> a) { this.valid = a; return this; } public OcDublinCoreBuilder setAbstract(String a) { this.abstrakt = some(a); return this; } public OcDublinCoreBuilder setAccessRights(String a) { this.accessRights = some(a); return this; } public OcDublinCoreBuilder setAccrualMethod(String a) { this.accrualMethod = some(a); return this; } public OcDublinCoreBuilder setAccrualPeriodicity(String a) { this.accrualPeriodicity = some(a); return this; } public OcDublinCoreBuilder setAccrualPolicy(String a) { this.accrualPolicy = some(a); return this; } public OcDublinCoreBuilder setAlternative(String a) { this.alternative = some(a); return this; } public OcDublinCoreBuilder setAudience(String a) { this.audience = some(a); return this; } public OcDublinCoreBuilder setAvailable(String a) { this.available = some(a); return this; } public OcDublinCoreBuilder setBibliographicCitation(String a) { this.bibliographicCitation = some(a); return this; } public OcDublinCoreBuilder setConformsTo(String a) { this.conformsTo = some(a); return this; } public OcDublinCoreBuilder setContributor(String a) { this.contributor = some(a); return this; } public OcDublinCoreBuilder setCoverage(String a) { this.coverage = some(a); return this; } public OcDublinCoreBuilder setCreated(Date a) { this.created = some(a); return this; } public OcDublinCoreBuilder setCreator(String a) { this.creator = some(a); return this; } public OcDublinCoreBuilder setDate(Date a) { this.date = some(a); return this; } public OcDublinCoreBuilder setDateAccepted(Date a) { this.dateAccepted = some(a); return this; } public OcDublinCoreBuilder setDateCopyrighted(Date a) { this.dateCopyrighted = some(a); return this; } public OcDublinCoreBuilder setDateSubmitted(Date a) { this.dateSubmitted = some(a); return this; } public OcDublinCoreBuilder setDescription(String a) { this.description = some(a); return this; } public OcDublinCoreBuilder setEducationLevel(String a) { this.educationLevel = some(a); return this; } public OcDublinCoreBuilder setExtent(Long a) { this.extent = some(a); return this; } public OcDublinCoreBuilder setFormat(String a) { this.format = some(a); return this; } public OcDublinCoreBuilder setHasFormat(String a) { this.hasFormat = some(a); return this; } public OcDublinCoreBuilder setHasPart(String a) { this.hasPart = some(a); return this; } public OcDublinCoreBuilder setHasVersion(String a) { this.hasVersion = some(a); return this; } public OcDublinCoreBuilder setIdentifier(String a) { this.identifier = some(a); return this; } public OcDublinCoreBuilder setInstructionalMethod(String a) { this.instructionalMethod = some(a); return this; } public OcDublinCoreBuilder setIsFormatOf(String a) { this.isFormatOf = some(a); return this; } public OcDublinCoreBuilder setIsPartOf(String a) { this.isPartOf = some(a); return this; } public OcDublinCoreBuilder setIsReferencedBy(String a) { this.isReferencedBy = some(a); return this; } public OcDublinCoreBuilder setIsReplacedBy(String a) { this.isReplacedBy = some(a); return this; } public OcDublinCoreBuilder setIsRequiredBy(String a) { this.isRequiredBy = some(a); return this; } public OcDublinCoreBuilder setIssued(String a) { this.issued = some(a); return this; } public OcDublinCoreBuilder setIsVersionOf(String a) { this.isVersionOf = some(a); return this; } public OcDublinCoreBuilder setLanguage(String a) { this.language = some(a); return this; } public OcDublinCoreBuilder setLicense(String a) { this.license = some(a); return this; } public OcDublinCoreBuilder setMediator(String a) { this.mediator = some(a); return this; } public OcDublinCoreBuilder setMedium(String a) { this.medium = some(a); return this; } public OcDublinCoreBuilder setModified(String a) { this.modified = some(a); return this; } public OcDublinCoreBuilder setProvenance(String a) { this.provenance = some(a); return this; } public OcDublinCoreBuilder setPublisher(String a) { this.publisher = some(a); return this; } public OcDublinCoreBuilder setReferences(String a) { this.references = some(a); return this; } public OcDublinCoreBuilder setRelation(String a) { this.relation = some(a); return this; } public OcDublinCoreBuilder setReplaces(String a) { this.replaces = some(a); return this; } public OcDublinCoreBuilder setRequires(String a) { this.requires = some(a); return this; } public OcDublinCoreBuilder setRights(String a) { this.rights = some(a); return this; } public OcDublinCoreBuilder setRightsHolder(String a) { this.rightsHolder = some(a); return this; } public OcDublinCoreBuilder setSource(String a) { this.source = some(a); return this; } public OcDublinCoreBuilder setSpatial(String a) { this.spatial = some(a); return this; } public OcDublinCoreBuilder setSubject(String a) { this.subject = some(a); return this; } public OcDublinCoreBuilder setTableOfContents(String a) { this.tableOfContents = some(a); return this; } public OcDublinCoreBuilder setTemporal(String a) { this.temporal = some(a); return this; } public OcDublinCoreBuilder setTitle(String a) { this.title = some(a); return this; } public OcDublinCoreBuilder setType(String a) { this.type = some(a); return this; } public OcDublinCoreBuilder setValid(String a) { this.valid = some(a); return this; } @Override public Option<String> getAbstract() { return abstrakt; } @Override public Option<String> getAccessRights() { return accessRights; } @Override public Option<String> getAccrualMethod() { return accrualMethod; } @Override public Option<String> getAccrualPeriodicity() { return accrualPeriodicity; } @Override public Option<String> getAccrualPolicy() { return accrualPolicy; } @Override public Option<String> getAlternative() { return alternative; } @Override public Option<String> getAudience() { return audience; } @Override public Option<String> getAvailable() { return available; } @Override public Option<String> getBibliographicCitation() { return bibliographicCitation; } @Override public Option<String> getConformsTo() { return conformsTo; } @Override public Option<String> getContributor() { return contributor; } @Override public Option<String> getCoverage() { return coverage; } private static final Function0<Date> createdNotSet = error("created not set"); @Override public Date getCreated() { return created.getOrElse(createdNotSet); } @Override public Option<String> getCreator() { return creator; } @Override public Option<Date> getDate() { return date; } @Override public Option<Date> getDateAccepted() { return dateAccepted; } @Override public Option<Date> getDateCopyrighted() { return dateCopyrighted; } @Override public Option<Date> getDateSubmitted() { return dateSubmitted; } @Override public Option<String> getDescription() { return description; } @Override public Option<String> getEducationLevel() { return educationLevel; } @Override public Option<Long> getExtent() { return extent; } @Override public Option<String> getFormat() { return format; } @Override public Option<String> getHasFormat() { return hasFormat; } @Override public Option<String> getHasPart() { return hasPart; } @Override public Option<String> getHasVersion() { return hasVersion; } @Override public Option<String> getIdentifier() { return identifier; } @Override public Option<String> getInstructionalMethod() { return instructionalMethod; } @Override public Option<String> getIsFormatOf() { return isFormatOf; } @Override public Option<String> getIsPartOf() { return isPartOf; } @Override public Option<String> getIsReferencedBy() { return isReferencedBy; } @Override public Option<String> getIsReplacedBy() { return isReplacedBy; } @Override public Option<String> getIsRequiredBy() { return isRequiredBy; } @Override public Option<String> getIssued() { return issued; } @Override public Option<String> getIsVersionOf() { return isVersionOf; } @Override public Option<String> getLanguage() { return language; } @Override public Option<String> getLicense() { return license; } @Override public Option<String> getMediator() { return mediator; } @Override public Option<String> getMedium() { return medium; } @Override public Option<String> getModified() { return modified; } @Override public Option<String> getProvenance() { return provenance; } @Override public Option<String> getPublisher() { return publisher; } @Override public Option<String> getReferences() { return references; } @Override public Option<String> getRelation() { return relation; } @Override public Option<String> getReplaces() { return replaces; } @Override public Option<String> getRequires() { return requires; } @Override public Option<String> getRights() { return rights; } @Override public Option<String> getRightsHolder() { return rightsHolder; } @Override public Option<String> getSource() { return source; } @Override public Option<String> getSpatial() { return spatial; } @Override public Option<String> getSubject() { return subject; } @Override public Option<String> getTableOfContents() { return tableOfContents; } @Override public Option<String> getTemporal() { return temporal; } private static final Function0<String> titleNotSet = error("title not set"); @Override public String getTitle() { return title.getOrElse(titleNotSet); } @Override public Option<String> getType() { return type; } @Override public Option<String> getValid() { return valid; } }