/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.modules.portfolio.ui.component;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.DefaultComponentRenderer;
import org.olat.core.gui.render.RenderResult;
import org.olat.core.gui.render.Renderer;
import org.olat.core.gui.render.StringOutput;
import org.olat.core.gui.render.URLBuilder;
import org.olat.core.gui.translator.Translator;
import org.olat.core.util.StringHelper;
import org.olat.modules.portfolio.Citation;
import org.olat.modules.portfolio.DublinCoreMetadata;
/**
*
* Initial date: 21.07.2016<br>
* @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
*
*/
public class CitationComponentRenderer extends DefaultComponentRenderer {
@Override
public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderResult renderResult, String[] args) {
CitationComponent cmp = (CitationComponent)source;
String notes = null;
String links = null;
renderAPAGerman(sb, cmp.getCitation(), cmp.getDublinCoreMetadata(), notes, links);
}
public static void renderAPAGerman(StringOutput sb, Citation citation, DublinCoreMetadata dcData, String notes, String links) {
String authors = dcData.getCreators();
String authorString = getAuthors(authors/* " (Hrsg.). ", true*/);
String edition = getOrdinalAPA(citation.getEdition());
String volume = getVolumeAPA(citation.getVolume());
String series = getSeries(citation.getSeries());
String date = getDate(dcData.getDate());
String dateAdded = "";//TODO portfolio getDateAdded(citation.getDateAdded());
sb.append("<div class='item ").append(citation.getItemType().name()).append("'><div class='bib'>");
switch (citation.getItemType()) {
case webpage:
sb.append(authorString)
.append("<span class='title'>").append(dcData.getTitle()).append(".</span>").append(dateAdded)
.append("<a href='").append(dcData.getUrl()).append("' target='_blank' class='url'>").append(dcData.getUrl()).append("</a>");
break;
case book:
sb.append(authorString).append(date)
.append("<span class='title'>").append(dcData.getTitle()).append(".</span>")
.append(volume).append(series).append(edition)
.append("<span class='place'>").append(dcData.getPlace()).append(":</span>")
.append("<span class='publisher'>").append(dcData.getPublisher()).append("</span>")
.append("<a href='").append(dcData.getUrl()).append("' target='_blank' class='url'>").append(dcData.getUrl()).append("</a>");
break;
case journalArticle:
sb.append(authorString).append(date)
.append("<span class='title'>").append(dcData.getTitle()).append(",</span>")
.append("<span class='publicationTitle'>").append(citation.getPublicationTitle()).append(",</span>")
.append("<span class='issue'>").append(citation.getIssue()).append("</span>")
.append("<span class='pages'>").append(citation.getPages()).append(".</span>")
.append("<a href='").append(dcData.getUrl()).append("' target='_blank' class='url'>").append(dcData.getUrl()).append("</a>");
break;
case report:
sb.append(authorString).append(date)
.append("<span class='title'>").append(dcData.getTitle()).append("</span>")
.append("<span class='place'>").append(dcData.getPlace()).append(":</span>")
.append("<span class='institution'>").append(citation.getInstitution()).append("</span>")
.append("<a href='").append(dcData.getUrl()).append("' target='_blank' class='url'>").append(dcData.getUrl()).append("</a>");
break;
case film:
sb.append(authorString).append("<span class='date'>").append(dcData.getDate()).append("</span>")
.append("<span class='title'>").append(dcData.getTitle()).append("</span> ")
.append("<a href='").append(dcData.getUrl()).append("' target='_blank' class='url'>").append(dcData.getUrl()).append("</a>");
break;
default:
sb.append("<div>").append(citation.getItemType().name());
}
sb.append("</div>");
if(StringHelper.containsNonWhitespace(links)) {
sb.append("<div class='links'>").append(links).append("</div>");
}
if(StringHelper.containsNonWhitespace(notes)) {
sb.append("<div class='notes'>").append(notes).append("</div>");
}
sb.append("</div>");
}
public static String getAuthors(String authors/*, String d, boolean apa*/) {
//TODO portfolio
return authors;
}
public static String getOrdinalAPA(String n) {
if(StringHelper.containsNonWhitespace(n)) {
if (StringHelper.isLong(n)){
String w = "("+ n + ". Aufl.)";
if (w.equals("(. Aufl.)")) {
return "";
}
return "<span class='edition'>" + w + "</span>";
}
else {
return "<span class='edition'>(" + n + ")</span>";
}
} else {
return "";
}
}
public static String getVolumeAPA(String volume) {
if (StringHelper.containsNonWhitespace(volume)) {
return "<span class='volume'>Bd. " + volume + " </span>";
}
return "";
}
public static String getSeries(String series) {
if (StringHelper.containsNonWhitespace(series)) {
return "<span class='series'> " + series + ". </span>";
}
return "";
}
public static String getDate(String date) {
if (StringHelper.containsNonWhitespace(date)) {
return " <span class='date'>(" + date + ")</span>";
}
return " <span class='date'>(o. J.)</span>";
}
}