package me.osm.gazetteer.web.api.renders;
import me.osm.gazetteer.web.Configuration;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.common.joda.time.DateTime;
import org.json.JSONObject;
public class XMLSitemapRender extends ASitemapRender {
public XMLSitemapRender(Configuration config) {
super(config);
}
@Override
public void pageBegin() {
super.pageBegin();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
sb.append("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" \n" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n" +
" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\">\n");
}
@Override
public void feature(String id, JSONObject obj) {
String featureURL = StringUtils.replace(featureUrlTemplate, "{id}", id);
featureURL = hostName + featureURL;
sb.append(" <url>\n");
sb.append(" <loc>").append(featureURL).append("</loc>");
if(obj.has("timestamp")) {
DateTime dateTime = new DateTime(obj.getString("timestamp"));
sb.append(" <lastmod>").append(dateTime.toLocalDate().toString()).append("</lastmod>");
}
sb.append(" </url>\n");
}
@Override
public void pageEnd() {
super.pageEnd();
sb.append("</urlset>");
}
@Override
public void indexBegin() {
super.indexBegin();
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
sb.append("<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n");
}
@Override
public void page(int page) {
sb.append(" <sitemap>\n");
sb.append(" <loc>").append(hostName).append(webRoot).append("/sitemap").append(page).append(".xml").append("</loc>");
sb.append(" </sitemap>\n");
}
@Override
public void indexEnd() {
super.indexEnd();
sb.append("</sitemapindex>");
}
}