2 * DemosceneMusic - EditTrackPage.java - Copyright © 2012 David Roden
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package net.pterodactylus.demoscenemusic.page.admin;
20 import java.util.Collection;
21 import java.util.List;
23 import net.pterodactylus.demoscenemusic.core.Core;
24 import net.pterodactylus.demoscenemusic.data.Artist;
25 import net.pterodactylus.demoscenemusic.data.Party;
26 import net.pterodactylus.demoscenemusic.data.Track;
27 import net.pterodactylus.demoscenemusic.page.ServletRequest;
28 import net.pterodactylus.util.database.DatabaseException;
29 import net.pterodactylus.util.template.Template;
30 import net.pterodactylus.util.template.TemplateContext;
31 import net.pterodactylus.util.template.TemplateContextFactory;
32 import net.pterodactylus.util.web.Method;
33 import net.pterodactylus.util.web.RedirectException;
36 * Page that lets the user edit a track.
38 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
40 public class EditTrackPage extends AdminBasePage {
43 * Creates a new edit-track page.
47 * @param templateContextFactory
48 * The template contex factory
50 * The template to render
52 public EditTrackPage(Core core, TemplateContextFactory templateContextFactory, Template template) {
53 super(core, templateContextFactory, template, "admin.edit-track");
64 protected void processTemplate(TemplateContext templateContext, ServletRequest request) throws RedirectException {
65 super.processTemplate(templateContext, request);
66 String trackId = request.getServletRequest().getParameter("id");
68 Track track = getCore().getDataManager().getTrackById(trackId);
70 templateContext.set("error", "no-track-given");
74 templateContext.set("track", track);
75 if (request.getMethod() == Method.POST) {
77 String partyId = request.getServletRequest().getParameter("party");
78 Party party = getCore().getDataManager().getPartyById(partyId);
80 String artistId = request.getServletRequest().getParameter("artist");
81 Artist artist = getCore().getDataManager().getArtistById(artistId);
83 /* check if a party should be removed. */
84 if ("true".equals(request.getServletRequest().getParameter("delete-party"))) {
85 Collection<Party> parties = track.getParties();
86 parties.remove(party);
87 track.setParties(parties);
90 /* check if a party should be added. */
91 if ("true".equals(request.getServletRequest().getParameter("add-party"))) {
92 Collection<Party> parties = track.getParties();
94 track.setParties(parties);
97 if ("true".equals(request.getServletRequest().getParameter("delete-artist"))) {
98 List<Artist> artists = track.getArtists();
99 artists.remove(artist);
100 track.setArtists(artists);
103 if ("true".equals(request.getServletRequest().getParameter("move-up"))) {
104 List<Artist> artists = track.getArtists();
105 int index = artists.indexOf(artist);
107 artists.remove(artist);
108 artists.add(index - 1, artist);
110 track.setArtists(artists);
113 if ("true".equals(request.getServletRequest().getParameter("move-down"))) {
114 List<Artist> artists = track.getArtists();
115 int index = artists.indexOf(artist);
116 if (index < (artists.size() - 1)) {
117 artists.remove(artist);
118 artists.add(index + 1, artist);
120 track.setArtists(artists);
123 if ("true".equals(request.getServletRequest().getParameter("add-artist"))) {
124 List<Artist> artists = track.getArtists();
126 track.setArtists(artists);
129 String name = request.getServletRequest().getParameter("name");
130 if ((name != null) && (name.trim().length() > 0)) {
133 String remix = request.getServletRequest().getParameter("remix");
134 if ((remix != null) && (remix.trim().length() > 0)) {
135 track.setRemix(remix);
138 /* process properties. */
139 processProperties(request, track);
141 getCore().getDataManager().saveTrack(track);
142 throw new RedirectException("admin.edit-track?id=" + track.getId());
144 } catch (DatabaseException de1) {
145 throw new RuntimeException("Could not edit track.", de1);