import javax.servlet.http.HttpServletResponse;
import net.pterodactylus.demoscenemusic.data.Artist;
+import net.pterodactylus.demoscenemusic.data.DefaultParty;
+import net.pterodactylus.demoscenemusic.data.Party;
+import net.pterodactylus.demoscenemusic.data.Properties;
import net.pterodactylus.demoscenemusic.data.Style;
import net.pterodactylus.demoscenemusic.data.Track;
+import net.pterodactylus.demoscenemusic.data.TrackDerivative;
import net.pterodactylus.demoscenemusic.data.User;
import net.pterodactylus.demoscenemusic.page.ServletRequest;
+import net.pterodactylus.demoscenemusic.template.ConciseNumberFilter;
+import net.pterodactylus.demoscenemusic.template.DurationFilter;
+import net.pterodactylus.demoscenemusic.template.PropertiesAccessor;
+import net.pterodactylus.demoscenemusic.template.TrackDerivativeAccessor;
import net.pterodactylus.demoscenemusic.template.UserAccessor;
import net.pterodactylus.util.io.Closer;
import net.pterodactylus.util.io.StreamCopier;
import net.pterodactylus.util.template.ClassPathTemplateProvider;
import net.pterodactylus.util.template.CollectionSortFilter;
import net.pterodactylus.util.template.HtmlFilter;
+import net.pterodactylus.util.template.MatchFilter;
import net.pterodactylus.util.template.ReflectionAccessor;
import net.pterodactylus.util.template.Template;
import net.pterodactylus.util.template.TemplateContextFactory;
public class TemplateServlet extends HttpServlet {
private Core core;
+
private final TemplateContextFactory templateContextFactory = new TemplateContextFactory();
private final Map<String, Page<ServletRequest>> pages = new HashMap<String, Page<ServletRequest>>();
templateContextFactory.addAccessor(Object.class, new ReflectionAccessor());
templateContextFactory.addAccessor(User.class, new UserAccessor());
+ templateContextFactory.addAccessor(Properties.class, new PropertiesAccessor());
+ templateContextFactory.addAccessor(TrackDerivative.class, new TrackDerivativeAccessor());
templateContextFactory.addFilter("html", new HtmlFilter());
CollectionSortFilter sortFilter = new CollectionSortFilter();
}
});
+ sortFilter.addComparator(Party.class, DefaultParty.NAME_YEAR_COMPARATOR);
templateContextFactory.addFilter("sort", sortFilter);
+ templateContextFactory.addFilter("matches", new MatchFilter());
+ templateContextFactory.addFilter("time", new DurationFilter());
+ templateContextFactory.addFilter("concise", new ConciseNumberFilter());
templateContextFactory.addTemplateObject("core", core);
templateContextFactory.addTemplateObject("dataManager", core.getDataManager());
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse httpServletResponse) throws ServletException, IOException {
+ request.setCharacterEncoding("UTF-8");
String path = request.getPathInfo();
if (path.startsWith("/")) {
path = path.substring(1);
}
+ if ((path.length() == 0) || (path.endsWith("/"))) {
+ path += "index";
+ }
Page<ServletRequest> page = pages.get(path);
if (page != null) {
ServletRequest servletRequest;
try {
- servletRequest = new ServletRequest(request);
+ servletRequest = new ServletRequest(request, this);
} catch (URISyntaxException use1) {
throw new IOException("Could not create URI from " + request.getRequestURI(), use1);
}