/*
* Copyright (c) 2013 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.apidiff.serializer;
import com.emc.storageos.apidiff.util.Pair;
/**
* Associated class to construct HTML format contents. Puts all HTML related tags here, including HEAD,
* BODY, TABLE, DIV, UL and so on. Therefore, we can avoid to write any HTML format code in outside. This
* will help us reduce complexity of presentation and clear code structure.
*/
class HtmlSerializerHelper {
private HtmlSerializerHelper() {
}
static String buildHeader(final String title) {
StringBuilder builder = new StringBuilder();
builder.append("<!DOCTYPE HTML>\n");
builder.append("<HTML>\n");
builder.append(" <HEAD>\n");
builder.append(" <meta charset=\"utf-8\">\n");
builder.append(" <meta content=\"text/html;charset=UTF-8\" http-equiv=\"content-type\">\n");
builder.append(" <meta content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\" name=\"viewport\">\n");
builder.append(" <meta http-equiv=\"X-UA-Compatible\" content=\"IE=EDGE; IE=9; IE=8\" />\n");
builder.append(" <TITLE>").append(title).append("</TITLE>\n");
builder.append(" <link href=\"static/bootstrap.min.css\" type=\"text/css\" rel=\"stylesheet\"/>\n");
builder.append(" <link href=\"static/custom.css\" type=\"text/css\" rel=\"stylesheet\"/>\n");
builder.append(" </HEAD>\n");
builder.append(" <BODY style=\"font-family:arial;\">\n");
return builder.toString();
}
static String buildTailer() {
return " </BODY>\n</HTML>\n";
}
static String buildBodyTitle(final String title, final String subTitle) {
StringBuilder builder = new StringBuilder();
builder.append(" <CENTER>\n");
builder.append(" <H1>").append(title).append("</H1>\n");
if (subTitle != null && subTitle.length() > 0) {
builder.append(" <H2>").append(subTitle).append("</H2>\n");
}
builder.append(" </CENTER>\n");
return builder.toString();
}
static String buildTableHeader() {
return " <TABLE class=\"payload table table-striped\" BORDER=\"1\" CELLPADDING=\"3\" CELLSPACING=\"0\" WIDTH=\"100%\">\n";
}
static String buildTableTailer() {
return " </TABLE>";
}
static String buildTableHeaderRow(int colSpan, Pair<?, ?>... columns) {
StringBuilder builder = new StringBuilder();
builder.append(" <THREAD>\n");
builder.append(" <TR BGCOLOR=\"#CCCCFF\">\n");
int i;
for (i = 0; i < columns.length; i++) {
builder.append(" <TD ALIGN=\"LEFT\" VALIGN=\"TOP\" WIDTH=\"");
builder.append(columns[i].getRight()).append("%\"");
if (i == columns.length - 1) {
builder.append(" COLSPAN=\"").append(colSpan).append("\"");
}
builder.append(">");
builder.append("<FONT SIZE=\"+1\"><B>").append(columns[i].getLeft()).append("</B></FONT></TD>\n");
}
builder.append(" </TR>\n");
builder.append(" </THREAD>\n");
builder.append(" <tbody>");
return builder.toString();
}
static String buildTableRow(int colSpan, Pair<?, ?>... columns) {
StringBuilder builder = new StringBuilder();
builder.append(" <TR BGCOLOR=\"#FFFFFF\">\n");
if (columns == null) {
builder.append(" </TR>\n");
return builder.toString();
}
builder.append(" <TH ALIGN=\"LEFT\" VALIGN=\"TOP\" WIDTH=\"");
builder.append(columns[0].getRight()).append("%\">");
builder.append("<B>").append(columns[0].getLeft()).append("</B></TH>\n");
int i;
for (i = 1; i < columns.length; i++) {
builder.append(" <TD ALIGN=\"LEFT\" VALIGN=\"TOP\" WIDTH=\"");
builder.append(columns[i].getRight());
builder.append("%\"");
if (i == columns.length - 1) {
builder.append(" COLSPAN=\"").append(colSpan).append("\"");
}
builder.append(">");
builder.append(columns[i].getLeft()).append("</TD>\n");
}
builder.append(" </TR>\n");
return builder.toString();
}
static String buildDivHeader(final String id) {
return " <P>\n" + " <DIV id=\"" + id + "\">\n";
}
static String buildDivTailer() {
return " </DIV>";
}
static String buildContent(final String content, final String ttContent, final int level) {
return String.format("<H%d> %s <tt>%s</tt> </H%d>%n", level, content, ttContent, level);
}
static String buildInPageLink(final String link) {
return String.format("<A HREF=\"#%s\"> %s </A>", link, link);
}
static String buildLink(final String linkPage, final String content) {
return String.format("<A HREF=\"%s\"> %s </A>", linkPage, content);
}
static String buildListHeader() {
return " <UL>\n";
}
static String buildListTailer() {
return " </UL>\n";
}
static String buildListItem(final String item) {
return String.format(" <LI> %s </LI>%n", item);
}
static String buildBodyHeader() {
StringBuilder builder = new StringBuilder();
builder.append("<div id=\"mainbar\">\n");
builder.append("<img src=\"static/EMCLogo-Small.png\" class=\"logo\"width=\"100px\"/>\n");
builder.append("<span class=\"mainTitle\">: ViPR REST API</span>\n");
builder.append("<img src=\"static/emc_vipr-small.jpg\" class=\"vipr_logo\" width=\"92\"/>\n");
builder.append("</div>\n");
return builder.toString();
}
static String buildBlankLine() {
return "<br>\n";
}
static String buildSideLine() {
return "<hr/>\n";
}
}