/*******************************************************************************
* 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.view;
import java.util.List;
import org.semantictools.context.renderer.model.Person;
public class IMSDocumentPrinter extends DefaultDocumentPrinter {
public IMSDocumentPrinter(PrintContext context) {
super(context);
}
@Override
protected void printTitlePageEditors() {}
@Override
protected void printTitlePageAuthors() {}
public void printFooter() {
println("<hr/>");
Heading heading = createHeading("About this Document");
heading.setShowNumber(false);
beginSection(heading);
String title = metadata.getTitle().replace("<br>", " ").replace("<br/>", " ");
indent().println("<table class=\"about\">");
pushIndent();
indent().println("<tr>");
pushIndent().print("<th>").print("Title: ").print("</td><td>").print(title).println("</td>");
indent().println("</tr>");
printCoChairs();
printEditors();
printVersion();
printVersionDate();
printRelease();
printAboutStatus();
printPurpose();
printDocumentLocation();
popIndent();
indent().println("</table>");
printContributors();
super.printFooter();
endSection();
}
private void printContributors() {
List<Person> list = metadata.getAuthors();
if (list==null || list.isEmpty()) return;
Heading heading = createHeading("List of Contributors");
heading.setInToc(false);
heading.setShowNumber(false);
beginSection(heading);
println("<p>The following list of individuals contributed to the authoring of this document:</p>");
println("<table class=\"about\">");
pushIndent();
int max = list.size()/2 + list.size()%2;
for (int i=0; i<max; i++) {
int j = max + i;
Person left = list.get(i);
Person right = (j<list.size()) ? list.get(j) : null;
indent().println("<tr>");
pushIndent();
indent();
printPersonInTable(left);
printPersonInTable(right);
println();
popIndent();
indent().println("</tr>");
}
popIndent();
println("</table>");
endSection();
}
private void printPersonInTable(Person person) {
print("<td>");
if (person != null) {
print(person.getPersonName());
}
print("</td><td>");
if (person != null && person.getOrgName()!=null) {
print(person.getOrgName());
}
print("</td>");
}
private void printDocumentLocation() {
String location = metadata.getDocumentLocation();
if (location == null) return;
indent().println("<tr>");
pushIndent().print("<th>").print("Document Location: ").print("</td><td>").print(location).println("</td>");
indent().println("</tr>");
}
private void printPurpose() {
String purpose = metadata.getPurpose();
if (purpose == null) return;
indent().println("<tr>");
pushIndent().print("<th>").print("Purpose: ").print("</td><td>").print(purpose).println("</td>");
indent().println("</tr>");
}
private void printAboutStatus() {
String status = metadata.getStatus();
if (status == null) return;
indent().println("<tr>");
pushIndent().print("<th>").print("Status: ").print("</td><td>").print(status).println("</td>");
indent().println("</tr>");
}
private void printRelease() {
String release = metadata.getRelease();
if (release == null) return;
indent().println("<tr>");
pushIndent().print("<th>").print("Release: ").print("</td><td>").print(release).println("</td>");
indent().println("</tr>");
}
private void printVersion() {
String version = metadata.getVersion();
if (version == null) return;
indent().println("<tr>");
pushIndent().print("<th>").print("Version: ").print("</td><td>").print(version).println("</td>");
indent().println("</tr>");
}
private void printVersionDate() {
String date = metadata.getDate();
if (date == null) return;
indent().println("<tr>");
pushIndent().print("<th>").print("Version Date: ").print("</td><td>").print(date).println("</td>");
indent().println("</tr>");
}
public void printEditors() {
List<Person> list = metadata.getEditors();
if (list == null || list.isEmpty()) return;
String label = (list.size()>1) ? "Editors: " : "Editor:";
indent().println("<tr>");
pushIndent().print("<th>").print(label).print("</td><td>");
String comma = "";
for (Person person : list) {
print(comma);
comma = ", ";
print(person.getPersonName());
String orgName = person.getOrgName();
if (orgName != null) {
print(" (").print(orgName).print(")");
}
}
println("</td>");
indent().println("</tr>");
}
private void printCoChairs() {
List<Person> list = metadata.getCoChairs();
if (list==null || list.isEmpty()) return;
indent().println("<tr>");
pushIndent().print("<th>").print("Co-chairs: ").print("</td><td>");
String comma = "";
for (Person person : list) {
print(comma);
comma = ", ";
print(person.getPersonName());
String orgName = person.getOrgName();
if (orgName != null) {
print(" (").print(orgName).print(")");
}
}
println("</td>");
indent().println("</tr>");
}
}