package com.revolsys.ui.model;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Locale;
import java.util.Map;
public class AbstractDocumentedObject {
private final Map<String, Map<String, DocInfo>> documentationByLanguageAndCountry = new LinkedHashMap<>();
private final Map<Locale, DocInfo> documentationByLocale = new LinkedHashMap<>();
public AbstractDocumentedObject() {
}
public AbstractDocumentedObject(final AbstractDocumentedObject docObject) {
for (final DocInfo docInfo : docObject.getDocumentation()) {
addDocumentation(docInfo.clone());
}
}
public void addDocumentation(final DocInfo documentation) {
final Locale locale = documentation.getLocale();
this.documentationByLocale.put(locale, documentation);
if (locale != null) {
final String language = locale.getLanguage();
final Map<String, DocInfo> documentationByCountry = getDocumentationByLanguage(language);
final String country = locale.getCountry();
documentationByCountry.put(country, documentation);
}
}
public DocInfo getDefaultDocumentation() {
final DocInfo docInfo = this.documentationByLocale.get(null);
if (docInfo == null) {
return new DocInfo();
} else {
return docInfo;
}
}
public String getDescription() {
final DocInfo docInfo = this.documentationByLocale.get(null);
if (docInfo == null) {
return null;
} else {
return docInfo.getDescription();
}
}
public Collection<DocInfo> getDocumentation() {
return this.documentationByLocale.values();
}
public Map<String, DocInfo> getDocumentationByLanguage(final String language) {
Map<String, DocInfo> documentationByCountry = this.documentationByLanguageAndCountry
.get(language);
if (documentationByCountry == null) {
documentationByCountry = new LinkedHashMap<>();
this.documentationByLanguageAndCountry.put(language, documentationByCountry);
}
return documentationByCountry;
}
public String getTitle() {
final DocInfo docInfo = this.documentationByLocale.get(null);
if (docInfo == null) {
return null;
} else {
return docInfo.getTitle();
}
}
public void setDescription(final String description) {
DocInfo docInfo = this.documentationByLocale.get(null);
if (docInfo == null) {
docInfo = new DocInfo(null, description);
addDocumentation(docInfo);
} else {
docInfo.setDescription(description);
}
}
public void setHtmlDescription(final String description) {
DocInfo docInfo = this.documentationByLocale.get(null);
if (docInfo == null) {
docInfo = new DocInfo();
addDocumentation(docInfo);
}
docInfo.setDescription(description);
docInfo.setHtml(true);
}
protected void setTitle(final String title) {
DocInfo docInfo = this.documentationByLocale.get(null);
if (docInfo == null) {
docInfo = new DocInfo(title);
addDocumentation(docInfo);
} else {
docInfo.setTitle(title);
}
}
}