Redirect back to itself after editing an artist.
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / page / admin / EditArtistPage.java
index c51e584..09ba5be 100644 (file)
 
 package net.pterodactylus.demoscenemusic.page.admin;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map.Entry;
+
 import net.pterodactylus.demoscenemusic.core.Core;
 import net.pterodactylus.demoscenemusic.data.Artist;
 import net.pterodactylus.demoscenemusic.page.ServletRequest;
@@ -68,8 +72,36 @@ public class EditArtistPage extends AdminBasePage {
                        if (request.getMethod() == Method.POST) {
                                String name = request.getServletRequest().getParameter("name");
                                artist.setName(name);
+
+                               /* check if properties were changed. */
+                               List<String> propertiesToDelete = new ArrayList<String>();
+                               for (Entry<String, String> property : artist.getProperties()) {
+                                       if (request.getServletRequest().getParameter("delete." + property.getKey()) != null) {
+                                               propertiesToDelete.add(property.getKey());
+                                               continue;
+                                       }
+                                       String value = request.getServletRequest().getParameter("value." + property.getKey()).trim();
+                                       artist.getProperties().set(property.getKey(), value);
+                               }
+
+                               /* check if properties are deleted. */
+                               if (!propertiesToDelete.isEmpty()) {
+                                       for (String propertyToDelete : propertiesToDelete) {
+                                               artist.getProperties().remove(propertyToDelete);
+                                       }
+                               }
+
+                               /* check for a new property. */
+                               if ("true".equals(request.getServletRequest().getParameter("new-property"))) {
+                                       String property = request.getServletRequest().getParameter("property").trim();
+                                       String value = request.getServletRequest().getParameter("value").trim();
+                                       if ((property.length() > 0) && (value.length() > 0)) {
+                                               artist.getProperties().set(property, value);
+                                       }
+                               }
+
                                getCore().getDataManager().saveArtist(artist);
-                               throw new RedirectException("admin.artists");
+                               throw new RedirectException("admin.edit-artist?id=" + artist.getId());
                        }
                } catch (DatabaseException de1) {
                        throw new RuntimeException("Could not load artist.", de1);