package net.sourceforge.subsonic.controller;
import net.sourceforge.subsonic.service.SettingsService;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.ParameterizableViewController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
/**
* Controller for the ultimate pandora box.
*
* @author Madevil
*/
public class PandoraSettingsController extends ParameterizableViewController {
private SettingsService settingsService;
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
if (isFormSubmission(request)) {
String error = handleParameters(request);
map.put("error", error);
if (error == null) {
map.put("reload", true);
}
}
ModelAndView result = super.handleRequestInternal(request, response);
map.put("similarAlbumtitle", settingsService.getPandoraResultAlbum());
map.put("similarArtists", settingsService.getPandoraResultArtist());
map.put("similarGenre", settingsService.getPandoraResultGenre());
map.put("similarMood", settingsService.getPandoraResultMood());
map.put("similarOther", settingsService.getPandoraResultSimilar());
result.addObject("model", map);
return result;
}
/**
* Determine if the given request represents a form submission.
*
* @param request current HTTP request
* @return if the request represents a form submission
*/
private boolean isFormSubmission(HttpServletRequest request) {
return "POST".equals(request.getMethod());
}
private String handleParameters(HttpServletRequest request) {
String similarAblumtitle = StringUtils.trimToNull(request.getParameter("similarAlbumtitle"));
String similarArtists = StringUtils.trimToNull(request.getParameter("similarArtists"));
String similarGenre = StringUtils.trimToNull(request.getParameter("similarGenre"));
String similarMood = StringUtils.trimToNull(request.getParameter("similarMood"));
String similarOther = StringUtils.trimToNull(request.getParameter("similarOther"));
settingsService.setPandoraResultAlbum(Integer.valueOf(similarAblumtitle));
settingsService.setPandoraResultArtist(Integer.valueOf(similarArtists));
settingsService.setPandoraResultGenre(Integer.valueOf(similarGenre));
settingsService.setPandoraResultMood(Integer.valueOf(similarMood));
settingsService.setPandoraResultSimilar(Integer.valueOf(similarOther));
settingsService.save();
return null;
}
public void setSettingsService(SettingsService settingsService) {
this.settingsService = settingsService;
}
}