Expose “god” and “user” privileges in templates.
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / core / TemplateServlet.java
index 917fad7..a4f3aa2 100644 (file)
@@ -26,6 +26,7 @@ import java.io.Reader;
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.InvocationTargetException;
 import java.net.URISyntaxException;
+import java.util.Comparator;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Map;
@@ -36,9 +37,16 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import net.pterodactylus.demoscenemusic.data.Artist;
+import net.pterodactylus.demoscenemusic.data.Style;
+import net.pterodactylus.demoscenemusic.data.Track;
+import net.pterodactylus.demoscenemusic.data.User;
 import net.pterodactylus.demoscenemusic.page.ServletRequest;
+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.ReflectionAccessor;
 import net.pterodactylus.util.template.Template;
@@ -73,12 +81,41 @@ public class TemplateServlet extends HttpServlet {
                core = (Core) config.getServletContext().getAttribute("core");
 
                templateContextFactory.addAccessor(Object.class, new ReflectionAccessor());
+               templateContextFactory.addAccessor(User.class, new UserAccessor());
 
                templateContextFactory.addFilter("html", new HtmlFilter());
+               CollectionSortFilter sortFilter = new CollectionSortFilter();
+               sortFilter.addComparator(Artist.class, new Comparator<Artist>() {
+
+                       @Override
+                       public int compare(Artist leftArtist, Artist rightArtist) {
+                               return leftArtist.getName().compareToIgnoreCase(rightArtist.getName());
+                       }
+
+               });
+               sortFilter.addComparator(Track.class, new Comparator<Track>() {
+
+                       @Override
+                       public int compare(Track leftTrack, Track rightTrack) {
+                               return leftTrack.getName().compareToIgnoreCase(rightTrack.getName());
+                       }
+
+               });
+               sortFilter.addComparator(Style.class, new Comparator<Style>() {
+
+                       @Override
+                       public int compare(Style leftStyle, Style rightStyle) {
+                               return leftStyle.getName().compareToIgnoreCase(rightStyle.getName());
+                       }
+
+               });
+               templateContextFactory.addFilter("sort", sortFilter);
 
                templateContextFactory.addTemplateObject("core", core);
                templateContextFactory.addTemplateObject("dataManager", core.getDataManager());
 
+               templateContextFactory.addProvider(new ClassPathTemplateProvider(getClass(), "/templates/"));
+
                for (@SuppressWarnings("rawtypes")
                Enumeration parameterNames = config.getInitParameterNames(); parameterNames.hasMoreElements();) {
                        String pageName = (String) parameterNames.nextElement();