aboutsummaryrefslogtreecommitdiff
path: root/subsonic-main/src/main/java/net/sourceforge/subsonic/controller/SearchController.java
diff options
context:
space:
mode:
Diffstat (limited to 'subsonic-main/src/main/java/net/sourceforge/subsonic/controller/SearchController.java')
-rw-r--r--subsonic-main/src/main/java/net/sourceforge/subsonic/controller/SearchController.java106
1 files changed, 106 insertions, 0 deletions
diff --git a/subsonic-main/src/main/java/net/sourceforge/subsonic/controller/SearchController.java b/subsonic-main/src/main/java/net/sourceforge/subsonic/controller/SearchController.java
new file mode 100644
index 00000000..387ec7db
--- /dev/null
+++ b/subsonic-main/src/main/java/net/sourceforge/subsonic/controller/SearchController.java
@@ -0,0 +1,106 @@
+/*
+ This file is part of Subsonic.
+
+ Subsonic is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Subsonic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Subsonic. If not, see <http://www.gnu.org/licenses/>.
+
+ Copyright 2009 (C) Sindre Mehus
+ */
+package net.sourceforge.subsonic.controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.validation.BindException;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.SimpleFormController;
+
+import net.sourceforge.subsonic.command.SearchCommand;
+import net.sourceforge.subsonic.domain.SearchCriteria;
+import net.sourceforge.subsonic.domain.SearchResult;
+import net.sourceforge.subsonic.domain.User;
+import net.sourceforge.subsonic.domain.UserSettings;
+import net.sourceforge.subsonic.service.PlayerService;
+import net.sourceforge.subsonic.service.SecurityService;
+import net.sourceforge.subsonic.service.SettingsService;
+import net.sourceforge.subsonic.service.SearchService;
+
+/**
+ * Controller for the search page.
+ *
+ * @author Sindre Mehus
+ */
+public class SearchController extends SimpleFormController {
+
+ private static final int MATCH_COUNT = 25;
+
+ private SecurityService securityService;
+ private SettingsService settingsService;
+ private PlayerService playerService;
+ private SearchService searchService;
+
+ @Override
+ protected Object formBackingObject(HttpServletRequest request) throws Exception {
+ return new SearchCommand();
+ }
+
+ @Override
+ protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object com, BindException errors)
+ throws Exception {
+ SearchCommand command = (SearchCommand) com;
+
+ User user = securityService.getCurrentUser(request);
+ UserSettings userSettings = settingsService.getUserSettings(user.getUsername());
+ command.setUser(user);
+ command.setPartyModeEnabled(userSettings.isPartyModeEnabled());
+
+ String any = StringUtils.trimToNull(command.getQuery());
+
+ if (any != null) {
+
+ SearchCriteria criteria = new SearchCriteria();
+ criteria.setCount(MATCH_COUNT);
+ criteria.setQuery(any);
+
+ SearchResult artists = searchService.search(criteria, SearchService.IndexType.ARTIST);
+ command.setArtists(artists.getMediaFiles());
+
+ SearchResult albums = searchService.search(criteria, SearchService.IndexType.ALBUM);
+ command.setAlbums(albums.getMediaFiles());
+
+ SearchResult songs = searchService.search(criteria, SearchService.IndexType.SONG);
+ command.setSongs(songs.getMediaFiles());
+
+ command.setPlayer(playerService.getPlayer(request, response));
+ }
+
+ return new ModelAndView(getSuccessView(), errors.getModel());
+ }
+
+ public void setSecurityService(SecurityService securityService) {
+ this.securityService = securityService;
+ }
+
+ public void setSettingsService(SettingsService settingsService) {
+ this.settingsService = settingsService;
+ }
+
+ public void setPlayerService(PlayerService playerService) {
+ this.playerService = playerService;
+ }
+
+ public void setSearchService(SearchService searchService) {
+ this.searchService = searchService;
+ }
+}