Add functions to manage groups of an artist.
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / page / admin / EditArtistPage.java
index 09ba5be..e737e60 100644 (file)
 
 package net.pterodactylus.demoscenemusic.page.admin;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map.Entry;
+import java.util.Collection;
 
 import net.pterodactylus.demoscenemusic.core.Core;
 import net.pterodactylus.demoscenemusic.data.Artist;
+import net.pterodactylus.demoscenemusic.data.Group;
 import net.pterodactylus.demoscenemusic.page.ServletRequest;
 import net.pterodactylus.util.database.DatabaseException;
 import net.pterodactylus.util.template.Template;
@@ -63,41 +62,35 @@ public class EditArtistPage extends AdminBasePage {
        protected void processTemplate(TemplateContext templateContext, ServletRequest request) throws RedirectException {
                super.processTemplate(templateContext, request);
                String id = request.getServletRequest().getParameter("id");
-               /* TODO - check for null. */
-               Artist artist;
                try {
-                       artist = getCore().getDataManager().getArtistById(id);
+                       Artist artist = getCore().getDataManager().getArtistById(id);
                        /* TODO - check for null. */
                        templateContext.set("artist", artist);
                        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);
+                               if ((name != null) && (name.trim().length() > 0)) {
+                                       artist.setName(name);
                                }
 
-                               /* check if properties are deleted. */
-                               if (!propertiesToDelete.isEmpty()) {
-                                       for (String propertyToDelete : propertiesToDelete) {
-                                               artist.getProperties().remove(propertyToDelete);
-                                       }
+                               /* process property changes. */
+                               processProperties(request, artist);
+
+                               /* check for new group. */
+                               if ("true".equals(request.getServletRequest().getParameter("add-group"))) {
+                                       String groupId = request.getServletRequest().getParameter("group");
+                                       Group group = getCore().getDataManager().getGroupById(groupId);
+                                       Collection<Group> groups = artist.getGroups();
+                                       groups.add(group);
+                                       artist.setGroups(groups);
                                }
 
-                               /* 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);
-                                       }
+                               /* check for deleted groups. */
+                               if ("true".equals(request.getServletRequest().getParameter("delete-group"))) {
+                                       String groupId = request.getServletRequest().getParameter("group");
+                                       Group group = getCore().getDataManager().getGroupById(groupId);
+                                       Collection<Group> groups = artist.getGroups();
+                                       groups.remove(group);
+                                       artist.setGroups(groups);
                                }
 
                                getCore().getDataManager().saveArtist(artist);