blob: 5b53e8ddf72e405ec9a5c2da9db46d1fd3a1b426 [file] [log] [blame]
package org.unicode.cldr.tool;
import java.io.IOException;
import org.unicode.cldr.tool.FormattedFileWriter.Anchors;
import org.unicode.cldr.util.CLDRConfig;
import org.unicode.cldr.util.CLDRFile;
import org.unicode.cldr.util.SupplementalDataInfo;
import com.ibm.icu.util.ICUUncheckedIOException;
/**
* To add a new chart, subclass this, and add the subclass to {@link ShowLanguages.printLanguageData()}. There isn't much
* documentation, so best to look at a simple subclass to see how it works.
* @author markdavis
*/
public abstract class Chart {
public static final CLDRConfig CONFIG = CLDRConfig.getInstance();
public static final SupplementalDataInfo SDI = CONFIG.getSupplementalDataInfo();
public static final CLDRFile ENGLISH = CONFIG.getEnglish();
public static final String LS = System.lineSeparator();
/**
* null means a string will be constructed from the title. Otherwise a real file name (no html extension).
* @return
*/
public String getFileName() {
return null;
};
/**
* Show Date?
* @return
*/
public String getExplanation() {
return null;
}
/**
* Short explanation that will go just after the title/dates.
* @return
*/
public boolean getShowDate() {
return true;
}
/**
* Directory for the file to go into.
* @return
*/
public abstract String getDirectory();
/**
* Short title for page. Will appear at the top, and in the window title, and in the index.
* @return
*/
public abstract String getTitle();
/**
* Work
* @param pw
* @throws IOException
*/
public abstract void writeContents(FormattedFileWriter pw) throws IOException;
public void writeFooter(FormattedFileWriter pw) throws IOException {
standardFooter(pw, AnalyticsID.CLDR);
}
enum AnalyticsID {
CLDR("UA-7672775-1"),
ICU("UA-7670213-1"),
ICU_GUIDE("UA-7670256-1"),
UNICODE("UA-7670213-1"),
UNICODE_UTILITY("UA-8314904-1")
;
public final String id;
private AnalyticsID(String id) {
this.id = id;
}
}
public static void standardFooter(FormattedFileWriter pw, AnalyticsID analytics) throws IOException {
pw.write("<div style='text-align: center; margin-top:2em; margin-bottom: 60em;'><br>\n"
+ "<a href='http://www.unicode.org/unicode/copyright.html'>\n"
+ "<img src='http://www.unicode.org/img/hb_notice.gif' style='border-style: none; width: 216px; height=50px;' alt='Access to Copyright and terms of use'>"
+ "</a><br>\n<script language='Javascript' type='text/javascript' src='http://www.unicode.org/webscripts/lastModified.js'></script>"
+ "</div><script>\n\n"
+ "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){"
+ "(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),"
+ "m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)"
+ "})(window,document,'script','//www.google-analytics.com/analytics.js','ga');"
+ " ga('create', '"
+ analytics
+ "', 'auto');"
+ " ga('send', 'pageview');"
+ "</script>\n");
}
public final void writeChart(Anchors anchors) {
try (
FormattedFileWriter x = new FormattedFileWriter(getFileName(), getTitle(), getExplanation(), anchors);) {
x.setDirectory(getDirectory());
x.setShowDate(getShowDate());
writeContents(x);
writeFooter(x);
} catch (IOException e) {
throw new ICUUncheckedIOException(e);
}
}
}