/*******************************************************************************
* Copyright 2012 Pearson Education
*
* Licensed under the Apache 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://www.apache.org/licenses/LICENSE-2.0
*
* 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.semantictools.context.renderer.model;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BaseDocumentMetadata implements DocumentMetadata {
private File localFile;
private String logo;
private String date;
private String documentLocation;
private String footer;
private String latestVersionURI;
private String legalNotice;
private String purpose;
private String release;
private String status;
private String subtitle;
private String templateName;
private String title;
private String version;
private Boolean historyLink;
private String css;
protected List<Person> authorList;
protected List<Person> cochairList;
protected List<Person> editorList;
protected ReferenceManager refManager;
protected Boolean validateJsonSamples;
private DocumentMetadata parent;
public BaseDocumentMetadata() {}
public BaseDocumentMetadata(DocumentMetadata parent) {
this.parent = parent;
}
@Override
public DocumentMetadata getParent() {
return parent;
}
@Override
public void setParent(DocumentMetadata parent) {
this.parent = parent;
}
@Override
public String getLogo() {
return logo==null && parent!=null ? parent.getLogo() : logo;
}
@Override
public void setLogo(String logo) {
this.logo = logo;
}
@Override
public String getTitle() {
return title==null && parent!=null ? parent.getTitle() : title;
}
@Override
public void setTitle(String title) {
this.title = title;
}
@Override
public String getSubtitle() {
return subtitle==null && parent!=null ? parent.getSubtitle() : subtitle;
}
@Override
public void setSubtitle(String subtitle) {
this.subtitle = subtitle;
}
@Override
public String getVersion() {
return version==null && parent!=null ? parent.getVersion() : version;
}
@Override
public void setVersion(String version) {
this.version = version;
}
@Override
public String getRelease() {
return release == null && parent!=null ? parent.getRelease() : release;
}
@Override
public void setRelease(String release) {
this.release = release;
}
@Override
public String getLatestVersionURI() {
return latestVersionURI==null && parent!=null ? parent.getLatestVersionURI() : latestVersionURI;
}
@Override
public void setLatestVersionURI(String value) {
this.latestVersionURI = value;
}
@Override
public String getStatus() {
return status==null && parent!=null ? parent.getStatus() : status;
}
@Override
public void setStatus(String status) {
this.status = status;
}
@Override
public String getDate() {
return date==null && parent!=null ? parent.getDate() : date;
}
@Override
public void setDate(String date) {
this.date = date;
}
@Override
public String getPurpose() {
return purpose==null && parent!=null ? parent.getPurpose() : purpose;
}
@Override
public void setPurpose(String purpose) {
this.purpose = purpose;
}
@Override
public String getDocumentLocation() {
return documentLocation==null && parent!=null ? parent.getDocumentLocation() : documentLocation;
}
@Override
public void setDocumentLocation(String location) {
this.documentLocation = location;
}
@Override
public String getLegalNotice() {
return legalNotice==null && parent!=null ? parent.getLegalNotice() : legalNotice;
}
@Override
public void setLegalNotice(String legalNotice) {
this.legalNotice = legalNotice;
}
@Override
public String getFooter() {
return footer==null && parent!=null ? parent.getFooter() : footer;
}
@Override
public void setFooter(String footer) {
this.footer = footer;
}
@Override
public void addAuthor(Person person) {
if (authorList == null) {
authorList = new ArrayList<Person>();
}
authorList.add(person);
}
@Override
public List<Person> getAuthors() {
return authorList==null && parent!=null ? parent.getAuthors() : authorList;
}
@Override
public void addEditor(Person person) {
if (editorList == null) {
editorList = new ArrayList<Person>();
}
editorList.add(person);
}
@Override
public List<Person> getEditors() {
return editorList==null && parent!=null ? parent.getEditors() : editorList;
}
@Override
public void addCoChair(Person person) {
if (cochairList == null) {
cochairList = new ArrayList<Person>();
}
cochairList.add(person);
}
@Override
public List<Person> getCoChairs() {
return cochairList==null && parent!=null ? parent.getCoChairs() : cochairList;
}
// @Override
// public String getReference(String citationLabel) {
//
// String result = referenceMap.get(citationLabel);
// if (result == null && parent != null) {
// result = referenceMap.get(citationLabel);
// }
// return result;
// }
//
// @Override
// public void putReference(String citationLabel, String reference) {
// if (parent != null) {
// parent.putReference(citationLabel, reference);
// } else {
// referenceMap.put(citationLabel, reference);
// }
//
// }
@Override
public ReferenceManager getReferenceManager() {
return refManager==null && parent!=null ? parent.getReferenceManager() : refManager;
}
@Override
public void setReferenceManager(ReferenceManager refManager) {
this.refManager = refManager;
}
@Override
public Boolean hasHistoryLink() {
Boolean value = historyLink==null && parent!=null ? parent.hasHistoryLink() : historyLink;
return value==null ? Boolean.FALSE : value;
}
@Override
public void setHistoryLink(Boolean truth) {
historyLink = truth;
}
@Override
public String getTemplateName() {
return templateName==null && parent!=null ? parent.getTemplateName() : templateName;
}
@Override
public void setTemplateName(String name) {
templateName = name;
}
@Override
public String getCss() {
return css==null && parent!=null ? parent.getCss() : css;
}
@Override
public void setCss(String css) {
this.css = css;
}
@Override
public void putReference(String label, String referenceText) {
ReferenceManager manager = getReferenceManager();
if (manager == null) return;
BibliographicReference ref = BibliographicReference.parse(referenceText);
ref.setLabel(label);
manager.add(ref);
}
@Override
public File getLocalFile() {
return localFile;
}
@Override
public void setLocalFile(File localFile) {
this.localFile = localFile;
}
@Override
public boolean getValidateJsonSamples() {
if (validateJsonSamples == null && parent!=null) {
return parent.getValidateJsonSamples();
}
return (validateJsonSamples == null) ? true : validateJsonSamples.booleanValue();
}
@Override
public void setValidateJsonSamples(boolean truthValue) {
validateJsonSamples = truthValue;
}
}