package controllers;
import org.apache.commons.io.IOUtils;
import org.pegdown.PegDownProcessor;
import play.Configuration;
import play.Environment;
import play.mvc.Result;
import javax.inject.Inject;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* @author fo
*/
public class StaticPage extends OERWorldMap {
@Inject
public StaticPage(Configuration aConf, Environment aEnv) {
super(aConf, aEnv);
}
public Result get(String aPage) {
String title = aPage.substring(0, 1).toUpperCase().concat(aPage.substring(1));
String language = getLocale().getLanguage();
String country = getLocale().getCountry();
String extension = ".md";
String path = "public/pages/";
ClassLoader classLoader = mEnv.classLoader();
String titleLocalePath = path.concat(title).concat("_").concat(language).concat("_")
.concat(country).concat(extension);
String titleLanguagePath = path.concat(title).concat("_").concat(language).concat(extension);
String titlePath = path.concat(title).concat(extension);
String body;
InputStream inputStream;
try {
inputStream = classLoader.getResourceAsStream(titleLocalePath);
body = IOUtils.toString(inputStream);
inputStream.close();
} catch (NullPointerException | IOException noLocale) {
try {
inputStream = classLoader.getResourceAsStream(titleLanguagePath);
body = IOUtils.toString(inputStream);
inputStream.close();
} catch (NullPointerException | IOException noLanguage) {
try {
inputStream = classLoader.getResourceAsStream(titlePath);
body = IOUtils.toString(inputStream);
inputStream.close();
} catch (NullPointerException | IOException noPage) {
return notFound("Page not found");
}
}
}
PegDownProcessor pegDownProcessor = new PegDownProcessor();
Map<String, Object> scope = new HashMap<>();
scope.put("title", title);
scope.put("body", pegDownProcessor.markdownToHtml(body));
return ok(render(title, "StaticPage/index.mustache", scope));
}
}