Made dao and service use repository and service annotations so they can
get autowired and component scanned and don't have to be completely configured in applicationContext-service.xml Signed-off-by: Derrek Bond <yoyo007@gmail.com>
This commit is contained in:
@@ -21,6 +21,7 @@ package org.airsonic.player.dao;
|
|||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||||
@@ -38,6 +39,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
public class AbstractDao {
|
public class AbstractDao {
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(AbstractDao.class);
|
private static final Logger LOG = LoggerFactory.getLogger(AbstractDao.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private DaoHelper daoHelper;
|
private DaoHelper daoHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.airsonic.player.domain.MusicFolder;
|
|||||||
import org.airsonic.player.util.FileUtil;
|
import org.airsonic.player.util.FileUtil;
|
||||||
import org.apache.commons.lang.ObjectUtils;
|
import org.apache.commons.lang.ObjectUtils;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -36,6 +37,7 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class AlbumDao extends AbstractDao {
|
public class AlbumDao extends AbstractDao {
|
||||||
private static final String INSERT_COLUMNS = "path, name, artist, song_count, duration_seconds, cover_art_path, " +
|
private static final String INSERT_COLUMNS = "path, name, artist, song_count, duration_seconds, cover_art_path, " +
|
||||||
"year, genre, play_count, last_played, comment, created, last_scanned, present, folder_id";
|
"year, genre, play_count, last_played, comment, created, last_scanned, present, folder_id";
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import org.airsonic.player.domain.MusicFolder;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -35,6 +36,7 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class ArtistDao extends AbstractDao {
|
public class ArtistDao extends AbstractDao {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(ArtistDao.class);
|
private static final Logger LOG = LoggerFactory.getLogger(ArtistDao.class);
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ package org.airsonic.player.dao;
|
|||||||
|
|
||||||
import org.airsonic.player.domain.Avatar;
|
import org.airsonic.player.domain.Avatar;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@@ -31,6 +32,7 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class AvatarDao extends AbstractDao {
|
public class AvatarDao extends AbstractDao {
|
||||||
|
|
||||||
private static final String INSERT_COLUMNS = "name, created_date, mime_type, width, height, data";
|
private static final String INSERT_COLUMNS = "name, created_date, mime_type, width, height, data";
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ package org.airsonic.player.dao;
|
|||||||
|
|
||||||
import org.airsonic.player.domain.Bookmark;
|
import org.airsonic.player.domain.Bookmark;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -32,6 +33,7 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class BookmarkDao extends AbstractDao {
|
public class BookmarkDao extends AbstractDao {
|
||||||
|
|
||||||
private static final String INSERT_COLUMNS = "media_file_id, position_millis, username, comment, created, changed";
|
private static final String INSERT_COLUMNS = "media_file_id, position_millis, username, comment, created, changed";
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.airsonic.player.domain.InternetRadio;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@@ -33,6 +34,7 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class InternetRadioDao extends AbstractDao {
|
public class InternetRadioDao extends AbstractDao {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(InternetRadioDao.class);
|
private static final Logger LOG = LoggerFactory.getLogger(InternetRadioDao.class);
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.apache.commons.lang.StringUtils;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -39,6 +40,7 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class MediaFileDao extends AbstractDao {
|
public class MediaFileDao extends AbstractDao {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(MediaFileDao.class);
|
private static final Logger logger = LoggerFactory.getLogger(MediaFileDao.class);
|
||||||
private static final String INSERT_COLUMNS = "path, folder, type, format, title, album, artist, album_artist, disc_number, " +
|
private static final String INSERT_COLUMNS = "path, folder, type, format, title, album, artist, album_artist, disc_number, " +
|
||||||
|
|||||||
@@ -22,7 +22,9 @@ package org.airsonic.player.dao;
|
|||||||
import org.airsonic.player.domain.MusicFolder;
|
import org.airsonic.player.domain.MusicFolder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -34,13 +36,15 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class MusicFolderDao extends AbstractDao {
|
public class MusicFolderDao extends AbstractDao {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(MusicFolderDao.class);
|
private static final Logger LOG = LoggerFactory.getLogger(MusicFolderDao.class);
|
||||||
private static final String INSERT_COLUMNS = "path, name, enabled, changed";
|
private static final String INSERT_COLUMNS = "path, name, enabled, changed";
|
||||||
private static final String QUERY_COLUMNS = "id, " + INSERT_COLUMNS;
|
private static final String QUERY_COLUMNS = "id, " + INSERT_COLUMNS;
|
||||||
private final MusicFolderRowMapper rowMapper = new MusicFolderRowMapper();
|
private final MusicFolderRowMapper rowMapper = new MusicFolderRowMapper();
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ package org.airsonic.player.dao;
|
|||||||
|
|
||||||
import org.airsonic.player.domain.SavedPlayQueue;
|
import org.airsonic.player.domain.SavedPlayQueue;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -31,6 +32,7 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class PlayQueueDao extends AbstractDao {
|
public class PlayQueueDao extends AbstractDao {
|
||||||
|
|
||||||
private static final String INSERT_COLUMNS = "username, current, position_millis, changed, changed_by";
|
private static final String INSERT_COLUMNS = "username, current, position_millis, changed, changed_by";
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.airsonic.player.domain.*;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -34,6 +35,7 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class PlayerDao extends AbstractDao {
|
public class PlayerDao extends AbstractDao {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(PlayerDao.class);
|
private static final Logger LOG = LoggerFactory.getLogger(PlayerDao.class);
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import org.airsonic.player.domain.Playlist;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -35,6 +36,7 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class PlaylistDao extends AbstractDao {
|
public class PlaylistDao extends AbstractDao {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(PlaylistDao.class);
|
private static final Logger LOG = LoggerFactory.getLogger(PlaylistDao.class);
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.airsonic.player.domain.PodcastChannel;
|
|||||||
import org.airsonic.player.domain.PodcastEpisode;
|
import org.airsonic.player.domain.PodcastEpisode;
|
||||||
import org.airsonic.player.domain.PodcastStatus;
|
import org.airsonic.player.domain.PodcastStatus;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -34,6 +35,7 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class PodcastDao extends AbstractDao {
|
public class PodcastDao extends AbstractDao {
|
||||||
|
|
||||||
private static final String CHANNEL_INSERT_COLUMNS = "url, title, description, image_url, status, error_message";
|
private static final String CHANNEL_INSERT_COLUMNS = "url, title, description, image_url, status, error_message";
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package org.airsonic.player.dao;
|
|||||||
import org.airsonic.player.domain.MediaFile;
|
import org.airsonic.player.domain.MediaFile;
|
||||||
import org.airsonic.player.domain.MusicFolder;
|
import org.airsonic.player.domain.MusicFolder;
|
||||||
import org.springframework.dao.EmptyResultDataAccessException;
|
import org.springframework.dao.EmptyResultDataAccessException;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -33,6 +34,7 @@ import java.util.Map;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository("musicFileInfoDao")
|
||||||
public class RatingDao extends AbstractDao {
|
public class RatingDao extends AbstractDao {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package org.airsonic.player.dao;
|
|||||||
import org.airsonic.player.domain.MusicFolder;
|
import org.airsonic.player.domain.MusicFolder;
|
||||||
import org.airsonic.player.domain.Share;
|
import org.airsonic.player.domain.Share;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -36,6 +37,7 @@ import java.util.Map;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class ShareDao extends AbstractDao {
|
public class ShareDao extends AbstractDao {
|
||||||
|
|
||||||
private static final String INSERT_COLUMNS = "name, description, username, created, expires, last_visited, visit_count";
|
private static final String INSERT_COLUMNS = "name, description, username, created, expires, last_visited, visit_count";
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import org.airsonic.player.domain.Transcoding;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -34,6 +35,7 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
public class TranscodingDao extends AbstractDao {
|
public class TranscodingDao extends AbstractDao {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(TranscodingDao.class);
|
private static final Logger LOG = LoggerFactory.getLogger(TranscodingDao.class);
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import org.airsonic.player.util.StringUtil;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.jdbc.core.RowMapper;
|
import org.springframework.jdbc.core.RowMapper;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
@@ -35,6 +36,7 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Repository
|
||||||
@Transactional
|
@Transactional
|
||||||
public class UserDao extends AbstractDao {
|
public class UserDao extends AbstractDao {
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.airsonic.player.monitor;
|
|||||||
import com.codahale.metrics.JmxReporter;
|
import com.codahale.metrics.JmxReporter;
|
||||||
import com.codahale.metrics.MetricRegistry;
|
import com.codahale.metrics.MetricRegistry;
|
||||||
import org.airsonic.player.service.ApacheCommonsConfigurationService;
|
import org.airsonic.player.service.ApacheCommonsConfigurationService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@@ -11,6 +12,7 @@ import java.util.concurrent.TimeUnit;
|
|||||||
*/
|
*/
|
||||||
public class MetricsManager {
|
public class MetricsManager {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private ApacheCommonsConfigurationService configurationService;
|
private ApacheCommonsConfigurationService configurationService;
|
||||||
|
|
||||||
// Main metrics registry
|
// Main metrics registry
|
||||||
|
|||||||
+2
@@ -8,11 +8,13 @@ import org.apache.commons.configuration2.sync.ReadWriteSynchronizer;
|
|||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
@Service
|
||||||
public class ApacheCommonsConfigurationService {
|
public class ApacheCommonsConfigurationService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(ApacheCommonsConfigurationService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(ApacheCommonsConfigurationService.class);
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ import org.apache.http.impl.client.HttpClients;
|
|||||||
import org.apache.http.message.BasicNameValuePair;
|
import org.apache.http.message.BasicNameValuePair;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -49,6 +51,7 @@ import java.util.concurrent.LinkedBlockingQueue;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class AudioScrobblerService {
|
public class AudioScrobblerService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(AudioScrobblerService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(AudioScrobblerService.class);
|
||||||
@@ -57,6 +60,7 @@ public class AudioScrobblerService {
|
|||||||
private RegistrationThread thread;
|
private RegistrationThread thread;
|
||||||
private final LinkedBlockingQueue<RegistrationData> queue = new LinkedBlockingQueue<RegistrationData>();
|
private final LinkedBlockingQueue<RegistrationData> queue = new LinkedBlockingQueue<RegistrationData>();
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
private final RequestConfig requestConfig = RequestConfig.custom()
|
private final RequestConfig requestConfig = RequestConfig.custom()
|
||||||
.setConnectTimeout(15000)
|
.setConnectTimeout(15000)
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.apache.commons.lang3.time.DateUtils;
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.util.UriComponents;
|
import org.springframework.web.util.UriComponents;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
@@ -16,6 +18,7 @@ import java.math.BigInteger;
|
|||||||
import java.security.SecureRandom;
|
import java.security.SecureRandom;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
@Service("jwtSecurityService")
|
||||||
public class JWTSecurityService {
|
public class JWTSecurityService {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(JWTSecurityService.class);
|
private static final Logger logger = LoggerFactory.getLogger(JWTSecurityService.class);
|
||||||
|
|
||||||
@@ -25,6 +28,7 @@ public class JWTSecurityService {
|
|||||||
public static final int DEFAULT_DAYS_VALID_FOR = 7;
|
public static final int DEFAULT_DAYS_VALID_FOR = 7;
|
||||||
private static SecureRandom secureRandom = new SecureRandom();
|
private static SecureRandom secureRandom = new SecureRandom();
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private final SettingsService settingsService;
|
private final SettingsService settingsService;
|
||||||
|
|
||||||
public JWTSecurityService(SettingsService settingsService) {
|
public JWTSecurityService(SettingsService settingsService) {
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ import org.airsonic.player.util.FileUtil;
|
|||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
@@ -33,15 +35,21 @@ import java.io.InputStream;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class JukeboxService implements AudioPlayer.Listener {
|
public class JukeboxService implements AudioPlayer.Listener {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(JukeboxService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(JukeboxService.class);
|
||||||
|
|
||||||
private AudioPlayer audioPlayer;
|
private AudioPlayer audioPlayer;
|
||||||
|
@Autowired
|
||||||
private TranscodingService transcodingService;
|
private TranscodingService transcodingService;
|
||||||
|
@Autowired
|
||||||
private AudioScrobblerService audioScrobblerService;
|
private AudioScrobblerService audioScrobblerService;
|
||||||
|
@Autowired
|
||||||
private StatusService statusService;
|
private StatusService statusService;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
|
||||||
private Player player;
|
private Player player;
|
||||||
@@ -49,6 +57,7 @@ public class JukeboxService implements AudioPlayer.Listener {
|
|||||||
private MediaFile currentPlayingFile;
|
private MediaFile currentPlayingFile;
|
||||||
private float gain = AudioPlayer.DEFAULT_GAIN;
|
private float gain = AudioPlayer.DEFAULT_GAIN;
|
||||||
private int offset;
|
private int offset;
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ import org.airsonic.player.domain.*;
|
|||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -45,16 +49,21 @@ import java.util.regex.Pattern;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class LastFmService {
|
public class LastFmService {
|
||||||
|
|
||||||
private static final String LAST_FM_KEY = "ece4499898a9440896dfdce5dab26bbf";
|
private static final String LAST_FM_KEY = "ece4499898a9440896dfdce5dab26bbf";
|
||||||
private static final long CACHE_TIME_TO_LIVE_MILLIS = 6 * 30 * 24 * 3600 * 1000L; // 6 months
|
private static final long CACHE_TIME_TO_LIVE_MILLIS = 6 * 30 * 24 * 3600 * 1000L; // 6 months
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(LastFmService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(LastFmService.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private MediaFileDao mediaFileDao;
|
private MediaFileDao mediaFileDao;
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private ArtistDao artistDao;
|
private ArtistDao artistDao;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
Caller caller = Caller.getInstance();
|
Caller caller = Caller.getInstance();
|
||||||
caller.setUserAgent("Airsonic");
|
caller.setUserAgent("Airsonic");
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ import org.apache.commons.io.FilenameUtils;
|
|||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -43,16 +45,24 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class MediaFileService {
|
public class MediaFileService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(MediaFileService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(MediaFileService.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private Ehcache mediaFileMemoryCache;
|
private Ehcache mediaFileMemoryCache;
|
||||||
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private MediaFileDao mediaFileDao;
|
private MediaFileDao mediaFileDao;
|
||||||
|
@Autowired
|
||||||
private AlbumDao albumDao;
|
private AlbumDao albumDao;
|
||||||
|
@Autowired
|
||||||
private JaudiotaggerParser parser;
|
private JaudiotaggerParser parser;
|
||||||
|
@Autowired
|
||||||
private MetaDataParserFactory metaDataParserFactory;
|
private MetaDataParserFactory metaDataParserFactory;
|
||||||
private boolean memoryCacheEnabled = true;
|
private boolean memoryCacheEnabled = true;
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,10 @@ import org.apache.commons.lang.ObjectUtils;
|
|||||||
import org.apache.commons.lang3.time.DateUtils;
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -37,6 +41,7 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class MediaScannerService {
|
public class MediaScannerService {
|
||||||
|
|
||||||
private static final int INDEX_VERSION = 15;
|
private static final int INDEX_VERSION = 15;
|
||||||
@@ -46,15 +51,23 @@ public class MediaScannerService {
|
|||||||
|
|
||||||
private boolean scanning;
|
private boolean scanning;
|
||||||
private Timer timer;
|
private Timer timer;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private SearchService searchService;
|
private SearchService searchService;
|
||||||
|
@Autowired
|
||||||
private PlaylistService playlistService;
|
private PlaylistService playlistService;
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private MediaFileDao mediaFileDao;
|
private MediaFileDao mediaFileDao;
|
||||||
|
@Autowired
|
||||||
private ArtistDao artistDao;
|
private ArtistDao artistDao;
|
||||||
|
@Autowired
|
||||||
private AlbumDao albumDao;
|
private AlbumDao albumDao;
|
||||||
private int scanCount;
|
private int scanCount;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
deleteOldIndexFiles();
|
deleteOldIndexFiles();
|
||||||
statistics = settingsService.getMediaLibraryStatistics();
|
statistics = settingsService.getMediaLibraryStatistics();
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ package org.airsonic.player.service;
|
|||||||
import org.airsonic.player.domain.*;
|
import org.airsonic.player.domain.*;
|
||||||
import org.airsonic.player.domain.MusicIndex.SortableArtist;
|
import org.airsonic.player.domain.MusicIndex.SortableArtist;
|
||||||
import org.airsonic.player.util.FileUtil;
|
import org.airsonic.player.util.FileUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -34,9 +36,12 @@ import java.util.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class MusicIndexService {
|
public class MusicIndexService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ package org.airsonic.player.service;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.util.UrlPathHelper;
|
import org.springframework.web.util.UrlPathHelper;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -31,7 +32,7 @@ import java.net.URI;
|
|||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
|
||||||
|
@Service
|
||||||
public class NetworkService {
|
public class NetworkService {
|
||||||
|
|
||||||
private static UrlPathHelper urlPathHelper = new UrlPathHelper();
|
private static UrlPathHelper urlPathHelper = new UrlPathHelper();
|
||||||
|
|||||||
@@ -27,7 +27,11 @@ import org.airsonic.player.domain.User;
|
|||||||
import org.airsonic.player.util.StringUtil;
|
import org.airsonic.player.util.StringUtil;
|
||||||
import org.apache.commons.lang.RandomStringUtils;
|
import org.apache.commons.lang.RandomStringUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.DependsOn;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
import javax.servlet.http.Cookie;
|
import javax.servlet.http.Cookie;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
@@ -42,16 +46,23 @@ import java.util.List;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @see Player
|
* @see Player
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
|
@DependsOn("liquibase")
|
||||||
public class PlayerService {
|
public class PlayerService {
|
||||||
|
|
||||||
private static final String COOKIE_NAME = "player";
|
private static final String COOKIE_NAME = "player";
|
||||||
private static final int COOKIE_EXPIRY = 365 * 24 * 3600; // One year
|
private static final int COOKIE_EXPIRY = 365 * 24 * 3600; // One year
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private PlayerDao playerDao;
|
private PlayerDao playerDao;
|
||||||
|
@Autowired
|
||||||
private StatusService statusService;
|
private StatusService statusService;
|
||||||
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
@Autowired
|
||||||
private TranscodingService transcodingService;
|
private TranscodingService transcodingService;
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
playerDao.deleteOldPlayers(60);
|
playerDao.deleteOldPlayers(60);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,8 @@ import org.apache.commons.io.FilenameUtils;
|
|||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -50,14 +52,21 @@ import java.util.*;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @see PlayQueue
|
* @see PlayQueue
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class PlaylistService {
|
public class PlaylistService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(PlaylistService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(PlaylistService.class);
|
||||||
|
@Autowired
|
||||||
private MediaFileDao mediaFileDao;
|
private MediaFileDao mediaFileDao;
|
||||||
|
@Autowired
|
||||||
private PlaylistDao playlistDao;
|
private PlaylistDao playlistDao;
|
||||||
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private List<PlaylistExportHandler> exportHandlers;
|
private List<PlaylistExportHandler> exportHandlers;
|
||||||
|
@Autowired
|
||||||
private List<PlaylistImportHandler> importHandlers;
|
private List<PlaylistImportHandler> importHandlers;
|
||||||
|
|
||||||
public PlaylistService(
|
public PlaylistService(
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ import org.jdom.Namespace;
|
|||||||
import org.jdom.input.SAXBuilder;
|
import org.jdom.input.SAXBuilder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
@@ -63,6 +67,7 @@ import java.util.concurrent.*;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class PodcastService {
|
public class PodcastService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(PodcastService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(PodcastService.class);
|
||||||
@@ -76,10 +81,15 @@ public class PodcastService {
|
|||||||
private final ExecutorService downloadExecutor;
|
private final ExecutorService downloadExecutor;
|
||||||
private final ScheduledExecutorService scheduledExecutor;
|
private final ScheduledExecutorService scheduledExecutor;
|
||||||
private ScheduledFuture<?> scheduledRefresh;
|
private ScheduledFuture<?> scheduledRefresh;
|
||||||
|
@Autowired
|
||||||
private PodcastDao podcastDao;
|
private PodcastDao podcastDao;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private MetaDataParserFactory metaDataParserFactory;
|
private MetaDataParserFactory metaDataParserFactory;
|
||||||
|
|
||||||
public PodcastService() {
|
public PodcastService() {
|
||||||
@@ -95,6 +105,7 @@ public class PodcastService {
|
|||||||
scheduledExecutor = Executors.newSingleThreadScheduledExecutor(threadFactory);
|
scheduledExecutor = Executors.newSingleThreadScheduledExecutor(threadFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
public synchronized void init() {
|
public synchronized void init() {
|
||||||
try {
|
try {
|
||||||
// Clean up partial downloads.
|
// Clean up partial downloads.
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ import org.airsonic.player.dao.RatingDao;
|
|||||||
import org.airsonic.player.domain.MediaFile;
|
import org.airsonic.player.domain.MediaFile;
|
||||||
import org.airsonic.player.domain.MusicFolder;
|
import org.airsonic.player.domain.MusicFolder;
|
||||||
import org.airsonic.player.util.FileUtil;
|
import org.airsonic.player.util.FileUtil;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -33,10 +35,14 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class RatingService {
|
public class RatingService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private RatingDao ratingDao;
|
private RatingDao ratingDao;
|
||||||
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ import org.apache.lucene.util.NumericUtils;
|
|||||||
import org.apache.lucene.util.Version;
|
import org.apache.lucene.util.Version;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -63,6 +65,7 @@ import static org.airsonic.player.service.SearchService.IndexType.*;
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
* @see MediaScannerService
|
* @see MediaScannerService
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class SearchService {
|
public class SearchService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(SearchService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(SearchService.class);
|
||||||
@@ -80,8 +83,11 @@ public class SearchService {
|
|||||||
private static final Version LUCENE_VERSION = Version.LUCENE_30;
|
private static final Version LUCENE_VERSION = Version.LUCENE_30;
|
||||||
private static final String LUCENE_DIR = "lucene2";
|
private static final String LUCENE_DIR = "lucene2";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private ArtistDao artistDao;
|
private ArtistDao artistDao;
|
||||||
|
@Autowired
|
||||||
private AlbumDao albumDao;
|
private AlbumDao albumDao;
|
||||||
|
|
||||||
private IndexWriter artistWriter;
|
private IndexWriter artistWriter;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import org.airsonic.player.domain.User;
|
|||||||
import org.airsonic.player.util.FileUtil;
|
import org.airsonic.player.util.FileUtil;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.dao.DataAccessException;
|
import org.springframework.dao.DataAccessException;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
@@ -34,6 +35,7 @@ import org.springframework.security.core.userdetails.UserDetails;
|
|||||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
import org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper;
|
import org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestWrapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
@@ -46,12 +48,16 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class SecurityService implements UserDetailsService {
|
public class SecurityService implements UserDetailsService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(SecurityService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(SecurityService.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private Ehcache userCache;
|
private Ehcache userCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ import org.airsonic.player.util.Util;
|
|||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -39,11 +43,13 @@ import java.util.*;
|
|||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ConcurrentMap;
|
import java.util.concurrent.ConcurrentMap;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides persistent storage of application settings and preferences.
|
* Provides persistent storage of application settings and preferences.
|
||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class SettingsService {
|
public class SettingsService {
|
||||||
|
|
||||||
// Airsonic home directory.
|
// Airsonic home directory.
|
||||||
@@ -210,10 +216,15 @@ public class SettingsService {
|
|||||||
|
|
||||||
private List<Theme> themes;
|
private List<Theme> themes;
|
||||||
private List<Locale> locales;
|
private List<Locale> locales;
|
||||||
|
@Autowired
|
||||||
private InternetRadioDao internetRadioDao;
|
private InternetRadioDao internetRadioDao;
|
||||||
|
@Autowired
|
||||||
private MusicFolderDao musicFolderDao;
|
private MusicFolderDao musicFolderDao;
|
||||||
|
@Autowired
|
||||||
private UserDao userDao;
|
private UserDao userDao;
|
||||||
|
@Autowired
|
||||||
private AvatarDao avatarDao;
|
private AvatarDao avatarDao;
|
||||||
|
@Autowired
|
||||||
private ApacheCommonsConfigurationService configurationService;
|
private ApacheCommonsConfigurationService configurationService;
|
||||||
|
|
||||||
private String[] cachedCoverArtFileTypesArray;
|
private String[] cachedCoverArtFileTypesArray;
|
||||||
@@ -271,6 +282,7 @@ public class SettingsService {
|
|||||||
* Register in service locator so that non-Spring objects can access me.
|
* Register in service locator so that non-Spring objects can access me.
|
||||||
* This method is invoked automatically by Spring.
|
* This method is invoked automatically by Spring.
|
||||||
*/
|
*/
|
||||||
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
logServerInfo();
|
logServerInfo();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ import org.apache.commons.lang.ObjectUtils;
|
|||||||
import org.apache.commons.lang.RandomStringUtils;
|
import org.apache.commons.lang.RandomStringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -43,13 +45,18 @@ import java.util.List;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @see Share
|
* @see Share
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class ShareService {
|
public class ShareService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(ShareService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(ShareService.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private ShareDao shareDao;
|
private ShareDao shareDao;
|
||||||
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private JWTSecurityService jwtSecurityService;
|
private JWTSecurityService jwtSecurityService;
|
||||||
|
|
||||||
public List<Share> getAllShares() {
|
public List<Share> getAllShares() {
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ import org.apache.cxf.jaxws.context.WrappedMessageContext;
|
|||||||
import org.apache.cxf.message.Message;
|
import org.apache.cxf.message.Message;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.w3c.dom.Node;
|
import org.w3c.dom.Node;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -60,6 +62,7 @@ import java.util.concurrent.ConcurrentSkipListMap;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class SonosService implements SonosSoap {
|
public class SonosService implements SonosSoap {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(SonosService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(SonosService.class);
|
||||||
@@ -92,11 +95,17 @@ public class SonosService implements SonosSoap {
|
|||||||
public static final String ID_SEARCH_ALBUMS = "search-albums";
|
public static final String ID_SEARCH_ALBUMS = "search-albums";
|
||||||
public static final String ID_SEARCH_SONGS = "search-songs";
|
public static final String ID_SEARCH_SONGS = "search-songs";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private SonosHelper sonosHelper;
|
private SonosHelper sonosHelper;
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private SecurityService securityService;
|
private SecurityService securityService;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private PlaylistService playlistService;
|
private PlaylistService playlistService;
|
||||||
|
@Autowired
|
||||||
private UPnPService upnpService;
|
private UPnPService upnpService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ import org.airsonic.player.domain.MediaFile;
|
|||||||
import org.airsonic.player.domain.PlayStatus;
|
import org.airsonic.player.domain.PlayStatus;
|
||||||
import org.airsonic.player.domain.Player;
|
import org.airsonic.player.domain.Player;
|
||||||
import org.airsonic.player.domain.TransferStatus;
|
import org.airsonic.player.domain.TransferStatus;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -35,8 +37,10 @@ import java.util.*;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @see TransferStatus
|
* @see TransferStatus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class StatusService {
|
public class StatusService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
|
||||||
private final List<TransferStatus> streamStatuses = new ArrayList<TransferStatus>();
|
private final List<TransferStatus> streamStatuses = new ArrayList<TransferStatus>();
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ import org.apache.commons.io.filefilter.PrefixFileFilter;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
@@ -48,13 +50,17 @@ import java.util.List;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @see TranscodeInputStream
|
* @see TranscodeInputStream
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class TranscodingService {
|
public class TranscodingService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(TranscodingService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(TranscodingService.class);
|
||||||
public static final String FORMAT_RAW = "raw";
|
public static final String FORMAT_RAW = "raw";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private TranscodingDao transcodingDao;
|
private TranscodingDao transcodingDao;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private PlayerService playerService;
|
private PlayerService playerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -37,6 +37,11 @@ import org.fourthline.cling.support.model.dlna.DLNAProfiles;
|
|||||||
import org.fourthline.cling.support.model.dlna.DLNAProtocolInfo;
|
import org.fourthline.cling.support.model.dlna.DLNAProtocolInfo;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Qualifier;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -47,15 +52,20 @@ import java.util.concurrent.atomic.AtomicReference;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class UPnPService {
|
public class UPnPService {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(UPnPService.class);
|
private static final Logger LOG = LoggerFactory.getLogger(UPnPService.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
private UpnpService upnpService;
|
private UpnpService upnpService;
|
||||||
private CustomContentDirectory customContentDirectory;
|
@Autowired
|
||||||
|
@Qualifier("dispatchingContentDirectory")
|
||||||
|
private CustomContentDirectory dispatchingContentDirectory;
|
||||||
private AtomicReference<Boolean> running = new AtomicReference<>(false);
|
private AtomicReference<Boolean> running = new AtomicReference<>(false);
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
if(settingsService.isDlnaEnabled() || settingsService.isSonosEnabled()) {
|
if(settingsService.isDlnaEnabled() || settingsService.isSonosEnabled()) {
|
||||||
ensureServiceStarted();
|
ensureServiceStarted();
|
||||||
@@ -152,7 +162,7 @@ public class UPnPService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected CustomContentDirectory createServiceInstance() throws Exception {
|
protected CustomContentDirectory createServiceInstance() throws Exception {
|
||||||
return customContentDirectory;
|
return dispatchingContentDirectory;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -206,6 +216,6 @@ public class UPnPService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setCustomContentDirectory(CustomContentDirectory customContentDirectory) {
|
public void setCustomContentDirectory(CustomContentDirectory customContentDirectory) {
|
||||||
this.customContentDirectory = customContentDirectory;
|
this.dispatchingContentDirectory = customContentDirectory;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
|
|||||||
import org.apache.http.impl.client.HttpClients;
|
import org.apache.http.impl.client.HttpClients;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -52,6 +53,7 @@ import java.util.regex.Pattern;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class VersionService {
|
public class VersionService {
|
||||||
|
|
||||||
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
|
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
|
||||||
|
|||||||
+4
@@ -21,6 +21,8 @@ package org.airsonic.player.service.metadata;
|
|||||||
|
|
||||||
import org.airsonic.player.domain.MediaFile;
|
import org.airsonic.player.domain.MediaFile;
|
||||||
import org.airsonic.player.service.SettingsService;
|
import org.airsonic.player.service.SettingsService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
@@ -29,8 +31,10 @@ import java.io.File;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class DefaultMetaDataParser extends MetaDataParser {
|
public class DefaultMetaDataParser extends MetaDataParser {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private final SettingsService settingsService;
|
private final SettingsService settingsService;
|
||||||
|
|
||||||
public DefaultMetaDataParser(SettingsService settingsService) {
|
public DefaultMetaDataParser(SettingsService settingsService) {
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ import org.airsonic.player.util.StringUtil;
|
|||||||
import org.apache.commons.io.FilenameUtils;
|
import org.apache.commons.io.FilenameUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
@@ -40,6 +42,7 @@ import java.util.regex.Pattern;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service("ffmpegParser")
|
||||||
public class FFmpegParser extends MetaDataParser {
|
public class FFmpegParser extends MetaDataParser {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(FFmpegParser.class);
|
private static final Logger LOG = LoggerFactory.getLogger(FFmpegParser.class);
|
||||||
@@ -48,7 +51,9 @@ public class FFmpegParser extends MetaDataParser {
|
|||||||
private static final Pattern DIMENSION_PATTERN = Pattern.compile("Video.*?, (\\d+)x(\\d+)");
|
private static final Pattern DIMENSION_PATTERN = Pattern.compile("Video.*?, (\\d+)x(\\d+)");
|
||||||
private static final Pattern PAR_PATTERN = Pattern.compile("PAR (\\d+):(\\d+)");
|
private static final Pattern PAR_PATTERN = Pattern.compile("PAR (\\d+):(\\d+)");
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private TranscodingService transcodingService;
|
private TranscodingService transcodingService;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+4
@@ -32,6 +32,8 @@ import org.jaudiotagger.tag.images.Artwork;
|
|||||||
import org.jaudiotagger.tag.reference.GenreTypes;
|
import org.jaudiotagger.tag.reference.GenreTypes;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
@@ -46,12 +48,14 @@ import java.util.regex.Pattern;
|
|||||||
*
|
*
|
||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class JaudiotaggerParser extends MetaDataParser {
|
public class JaudiotaggerParser extends MetaDataParser {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(JaudiotaggerParser.class);
|
private static final Logger LOG = LoggerFactory.getLogger(JaudiotaggerParser.class);
|
||||||
private static final Pattern GENRE_PATTERN = Pattern.compile("\\((\\d+)\\).*");
|
private static final Pattern GENRE_PATTERN = Pattern.compile("\\((\\d+)\\).*");
|
||||||
private static final Pattern TRACK_NUMBER_PATTERN = Pattern.compile("(\\d+)/\\d+");
|
private static final Pattern TRACK_NUMBER_PATTERN = Pattern.compile("(\\d+)/\\d+");
|
||||||
private static final Pattern YEAR_NUMBER_PATTERN = Pattern.compile("(\\d{4}).*");
|
private static final Pattern YEAR_NUMBER_PATTERN = Pattern.compile("(\\d{4}).*");
|
||||||
|
@Autowired
|
||||||
private final SettingsService settingsService;
|
private final SettingsService settingsService;
|
||||||
|
|
||||||
public JaudiotaggerParser(SettingsService settingsService) {
|
public JaudiotaggerParser(SettingsService settingsService) {
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ import org.airsonic.player.domain.*;
|
|||||||
import org.airsonic.player.service.*;
|
import org.airsonic.player.service.*;
|
||||||
import org.airsonic.player.util.StringUtil;
|
import org.airsonic.player.util.StringUtil;
|
||||||
import org.airsonic.player.util.Util;
|
import org.airsonic.player.util.Util;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
@@ -40,20 +42,32 @@ import static org.airsonic.player.service.NetworkService.getBaseUrl;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class SonosHelper {
|
public class SonosHelper {
|
||||||
|
|
||||||
public static final String AIRSONIC_CLIENT_ID = "sonos";
|
public static final String AIRSONIC_CLIENT_ID = "sonos";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private PlaylistService playlistService;
|
private PlaylistService playlistService;
|
||||||
|
@Autowired
|
||||||
private PlayerService playerService;
|
private PlayerService playerService;
|
||||||
|
@Autowired
|
||||||
private TranscodingService transcodingService;
|
private TranscodingService transcodingService;
|
||||||
|
@Autowired
|
||||||
private SettingsService settingsService;
|
private SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private MusicIndexService musicIndexService;
|
private MusicIndexService musicIndexService;
|
||||||
|
@Autowired
|
||||||
private SearchService searchService;
|
private SearchService searchService;
|
||||||
|
@Autowired
|
||||||
private MediaFileDao mediaFileDao;
|
private MediaFileDao mediaFileDao;
|
||||||
|
@Autowired
|
||||||
private RatingService ratingService;
|
private RatingService ratingService;
|
||||||
|
@Autowired
|
||||||
private LastFmService lastFmService;
|
private LastFmService lastFmService;
|
||||||
|
@Autowired
|
||||||
private PodcastService podcastService;
|
private PodcastService podcastService;
|
||||||
|
|
||||||
public List<AbstractMedia> forRoot() {
|
public List<AbstractMedia> forRoot() {
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import org.fourthline.cling.support.model.SortCriterion;
|
|||||||
import org.fourthline.cling.support.model.container.Container;
|
import org.fourthline.cling.support.model.container.Container;
|
||||||
import org.fourthline.cling.support.model.container.MusicAlbum;
|
import org.fourthline.cling.support.model.container.MusicAlbum;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
@@ -43,6 +44,7 @@ import java.util.List;
|
|||||||
* @author Allen Petersen
|
* @author Allen Petersen
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class AlbumUpnpProcessor extends UpnpContentProcessor <Album, MediaFile> {
|
public class AlbumUpnpProcessor extends UpnpContentProcessor <Album, MediaFile> {
|
||||||
|
|
||||||
public static final String ALL_BY_ARTIST = "allByArtist";
|
public static final String ALL_BY_ARTIST = "allByArtist";
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.fourthline.cling.support.model.DIDLContent;
|
|||||||
import org.fourthline.cling.support.model.container.Container;
|
import org.fourthline.cling.support.model.container.Container;
|
||||||
import org.fourthline.cling.support.model.container.MusicArtist;
|
import org.fourthline.cling.support.model.container.MusicArtist;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -35,6 +36,7 @@ import java.util.List;
|
|||||||
* @author Allen Petersen
|
* @author Allen Petersen
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class ArtistUpnpProcessor extends UpnpContentProcessor <Artist, Album> {
|
public class ArtistUpnpProcessor extends UpnpContentProcessor <Artist, Album> {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|||||||
+5
@@ -37,6 +37,7 @@ import org.fourthline.cling.support.model.DIDLContent;
|
|||||||
import org.fourthline.cling.support.model.Res;
|
import org.fourthline.cling.support.model.Res;
|
||||||
import org.fourthline.cling.support.model.SortCriterion;
|
import org.fourthline.cling.support.model.SortCriterion;
|
||||||
import org.seamless.util.MimeType;
|
import org.seamless.util.MimeType;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -47,9 +48,13 @@ public abstract class CustomContentDirectory extends AbstractContentDirectorySer
|
|||||||
|
|
||||||
protected static final String CONTAINER_ID_ROOT = "0";
|
protected static final String CONTAINER_ID_ROOT = "0";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
protected SettingsService settingsService;
|
protected SettingsService settingsService;
|
||||||
|
@Autowired
|
||||||
private PlayerService playerService;
|
private PlayerService playerService;
|
||||||
|
@Autowired
|
||||||
private TranscodingService transcodingService;
|
private TranscodingService transcodingService;
|
||||||
|
@Autowired
|
||||||
protected JWTSecurityService jwtSecurityService;
|
protected JWTSecurityService jwtSecurityService;
|
||||||
|
|
||||||
public CustomContentDirectory() {
|
public CustomContentDirectory() {
|
||||||
|
|||||||
+11
-7
@@ -30,6 +30,7 @@ import org.fourthline.cling.support.model.item.MusicTrack;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
@@ -41,6 +42,7 @@ import java.util.Arrays;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class DispatchingContentDirectory extends CustomContentDirectory {
|
public class DispatchingContentDirectory extends CustomContentDirectory {
|
||||||
|
|
||||||
public static final Logger LOG = LoggerFactory.getLogger(DispatchingContentDirectory.class);
|
public static final Logger LOG = LoggerFactory.getLogger(DispatchingContentDirectory.class);
|
||||||
@@ -61,9 +63,11 @@ public class DispatchingContentDirectory extends CustomContentDirectory {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MediaFileUpnpProcessor mediaFileProcessor;
|
private MediaFileUpnpProcessor mediaFileProcessor;
|
||||||
//@Autowired can't autowire because of the subclassing :P
|
//@Autowired can't autowire because of the subclassing :P
|
||||||
private AlbumUpnpProcessor albumProcessor;
|
@Autowired//first checks type then field name to autowire
|
||||||
|
private AlbumUpnpProcessor albumUpnpProcessor;
|
||||||
//@Autowired can't autowire because of the subclassing :P
|
//@Autowired can't autowire because of the subclassing :P
|
||||||
private RecentAlbumUpnpProcessor recentAlbumProcessor;
|
@Autowired//first checks type then field name to autowire
|
||||||
|
private RecentAlbumUpnpProcessor recentAlbumUpnpProcessor;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ArtistUpnpProcessor artistProcessor;
|
private ArtistUpnpProcessor artistProcessor;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -73,7 +77,7 @@ public class DispatchingContentDirectory extends CustomContentDirectory {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private PlaylistService playlistService;
|
private PlaylistService playlistService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -211,17 +215,17 @@ public class DispatchingContentDirectory extends CustomContentDirectory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public AlbumUpnpProcessor getAlbumProcessor() {
|
public AlbumUpnpProcessor getAlbumProcessor() {
|
||||||
return albumProcessor;
|
return albumUpnpProcessor;
|
||||||
}
|
}
|
||||||
public void setAlbumProcessor(AlbumUpnpProcessor albumProcessor) {
|
public void setAlbumProcessor(AlbumUpnpProcessor albumProcessor) {
|
||||||
this.albumProcessor = albumProcessor;
|
this.albumUpnpProcessor = albumProcessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public RecentAlbumUpnpProcessor getRecentAlbumProcessor() {
|
public RecentAlbumUpnpProcessor getRecentAlbumProcessor() {
|
||||||
return recentAlbumProcessor;
|
return recentAlbumUpnpProcessor;
|
||||||
}
|
}
|
||||||
public void setRecentAlbumProcessor(RecentAlbumUpnpProcessor recentAlbumProcessor) {
|
public void setRecentAlbumProcessor(RecentAlbumUpnpProcessor recentAlbumProcessor) {
|
||||||
this.recentAlbumProcessor = recentAlbumProcessor;
|
this.recentAlbumUpnpProcessor = recentAlbumProcessor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ArtistUpnpProcessor getArtistProcessor() {
|
public ArtistUpnpProcessor getArtistProcessor() {
|
||||||
|
|||||||
+5
@@ -34,6 +34,8 @@ import org.fourthline.cling.support.model.item.Item;
|
|||||||
import org.fourthline.cling.support.model.item.MusicTrack;
|
import org.fourthline.cling.support.model.item.MusicTrack;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
@@ -45,13 +47,16 @@ import java.util.List;
|
|||||||
* @author Sindre Mehus
|
* @author Sindre Mehus
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class FolderBasedContentDirectory extends CustomContentDirectory {
|
public class FolderBasedContentDirectory extends CustomContentDirectory {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(FolderBasedContentDirectory.class);
|
private static final Logger LOG = LoggerFactory.getLogger(FolderBasedContentDirectory.class);
|
||||||
private static final String CONTAINER_ID_PLAYLIST_ROOT = "playlists";
|
private static final String CONTAINER_ID_PLAYLIST_ROOT = "playlists";
|
||||||
private static final String CONTAINER_ID_PLAYLIST_PREFIX = "playlist-";
|
private static final String CONTAINER_ID_PLAYLIST_PREFIX = "playlist-";
|
||||||
private static final String CONTAINER_ID_FOLDER_PREFIX = "folder-";
|
private static final String CONTAINER_ID_FOLDER_PREFIX = "folder-";
|
||||||
|
@Autowired
|
||||||
private MediaFileService mediaFileService;
|
private MediaFileService mediaFileService;
|
||||||
|
@Autowired
|
||||||
private PlaylistService playlistService;
|
private PlaylistService playlistService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.fourthline.cling.support.model.DIDLContent;
|
|||||||
import org.fourthline.cling.support.model.SortCriterion;
|
import org.fourthline.cling.support.model.SortCriterion;
|
||||||
import org.fourthline.cling.support.model.container.Container;
|
import org.fourthline.cling.support.model.container.Container;
|
||||||
import org.fourthline.cling.support.model.container.GenreContainer;
|
import org.fourthline.cling.support.model.container.GenreContainer;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -35,6 +36,7 @@ import java.util.List;
|
|||||||
* @author Allen Petersen
|
* @author Allen Petersen
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class GenreUpnpProcessor extends UpnpContentProcessor <Genre, MediaFile> {
|
public class GenreUpnpProcessor extends UpnpContentProcessor <Genre, MediaFile> {
|
||||||
|
|
||||||
public GenreUpnpProcessor() {
|
public GenreUpnpProcessor() {
|
||||||
|
|||||||
+2
@@ -31,6 +31,7 @@ import org.fourthline.cling.support.model.container.MusicAlbum;
|
|||||||
import org.fourthline.cling.support.model.item.Item;
|
import org.fourthline.cling.support.model.item.Item;
|
||||||
import org.fourthline.cling.support.model.item.MusicTrack;
|
import org.fourthline.cling.support.model.item.MusicTrack;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -41,6 +42,7 @@ import java.util.List;
|
|||||||
* @author Allen Petersen
|
* @author Allen Petersen
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class MediaFileUpnpProcessor extends UpnpContentProcessor <MediaFile, MediaFile> {
|
public class MediaFileUpnpProcessor extends UpnpContentProcessor <MediaFile, MediaFile> {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|||||||
+2
@@ -20,6 +20,7 @@
|
|||||||
package org.airsonic.player.service.upnp;
|
package org.airsonic.player.service.upnp;
|
||||||
import org.airsonic.player.domain.Album;
|
import org.airsonic.player.domain.Album;
|
||||||
import org.airsonic.player.domain.MusicFolder;
|
import org.airsonic.player.domain.MusicFolder;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ import java.util.List;
|
|||||||
* @author Allen Petersen
|
* @author Allen Petersen
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
@Service
|
||||||
public class RecentAlbumUpnpProcessor extends AlbumUpnpProcessor {
|
public class RecentAlbumUpnpProcessor extends AlbumUpnpProcessor {
|
||||||
private final static int RECENT_COUNT = 50;
|
private final static int RECENT_COUNT = 50;
|
||||||
|
|
||||||
|
|||||||
@@ -10,253 +10,22 @@
|
|||||||
<import resource="applicationContext-db.xml" />
|
<import resource="applicationContext-db.xml" />
|
||||||
|
|
||||||
<!-- DAO's -->
|
<!-- DAO's -->
|
||||||
|
|
||||||
<bean id="playerDao" class="org.airsonic.player.dao.PlayerDao">
|
<context:component-scan base-package="org.airsonic.player.dao" />
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="mediaFileDao" class="org.airsonic.player.dao.MediaFileDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="artistDao" class="org.airsonic.player.dao.ArtistDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="albumDao" class="org.airsonic.player.dao.AlbumDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="playlistDao" class="org.airsonic.player.dao.PlaylistDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="playQueueDao" class="org.airsonic.player.dao.PlayQueueDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="internetRadioDao" class="org.airsonic.player.dao.InternetRadioDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="musicFileInfoDao" class="org.airsonic.player.dao.RatingDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="musicFolderDao" class="org.airsonic.player.dao.MusicFolderDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
<property name="userDao" ref="userDao" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="userDao" class="org.airsonic.player.dao.UserDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
<property name="userTableQuote" ref="userTableQuote"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="transcodingDao" class="org.airsonic.player.dao.TranscodingDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="podcastDao" class="org.airsonic.player.dao.PodcastDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="avatarDao" class="org.airsonic.player.dao.AvatarDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="shareDao" class="org.airsonic.player.dao.ShareDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="bookmarkDao" class="org.airsonic.player.dao.BookmarkDao">
|
|
||||||
<property name="daoHelper" ref="daoHelper"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<!-- Services -->
|
<!-- Services -->
|
||||||
|
|
||||||
<bean id="mediaFileService" class="org.airsonic.player.service.MediaFileService">
|
<context:component-scan base-package="org.airsonic.player.service" />
|
||||||
<property name="securityService" ref="securityService"/>
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="mediaFileMemoryCache" ref="mediaFileMemoryCache"/>
|
|
||||||
<property name="mediaFileDao" ref="mediaFileDao"/>
|
|
||||||
<property name="albumDao" ref="albumDao"/>
|
|
||||||
<property name="metaDataParserFactory" ref="metaDataParserFactory"/>
|
|
||||||
<property name="parser" ref="jaudiotaggerParser" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="securityService" class="org.airsonic.player.service.SecurityService">
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="userDao" ref="userDao"/>
|
|
||||||
<property name="userCache" ref="userCache"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="configurationService" class="org.airsonic.player.service.ApacheCommonsConfigurationService" />
|
|
||||||
|
|
||||||
<bean id="metricsManager" class="org.airsonic.player.monitor.MetricsManager">
|
|
||||||
<property name="configurationService" ref="configurationService" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="settingsService" class="org.airsonic.player.service.SettingsService" init-method="init">
|
|
||||||
<property name="internetRadioDao" ref="internetRadioDao"/>
|
|
||||||
<property name="musicFolderDao" ref="musicFolderDao"/>
|
|
||||||
<property name="userDao" ref="userDao"/>
|
|
||||||
<property name="avatarDao" ref="avatarDao"/>
|
|
||||||
<property name="configurationService" ref="configurationService" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="mediaScannerService" class="org.airsonic.player.service.MediaScannerService" init-method="init" depends-on="metaDataParserFactory">
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="mediaFileDao" ref="mediaFileDao"/>
|
|
||||||
<property name="playlistService" ref="playlistService"/>
|
|
||||||
<property name="artistDao" ref="artistDao"/>
|
|
||||||
<property name="albumDao" ref="albumDao"/>
|
|
||||||
<property name="searchService" ref="searchService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="searchService" class="org.airsonic.player.service.SearchService">
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="artistDao" ref="artistDao"/>
|
|
||||||
<property name="albumDao" ref="albumDao"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="networkService" class="org.airsonic.player.service.NetworkService" />
|
|
||||||
|
|
||||||
<bean id="playerService"
|
|
||||||
class="org.airsonic.player.service.PlayerService"
|
|
||||||
init-method="init"
|
|
||||||
depends-on="liquibase">
|
|
||||||
<property name="playerDao" ref="playerDao"/>
|
|
||||||
<property name="statusService" ref="statusService"/>
|
|
||||||
<property name="securityService" ref="securityService"/>
|
|
||||||
<property name="transcodingService" ref="transcodingService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<context:component-scan base-package="org.airsonic.player.service.playlist" />
|
|
||||||
|
|
||||||
<!--suppress SpringBeanConstructorArgInspection, AutowiredDependenciesInspection -->
|
|
||||||
<bean id="playlistService" class="org.airsonic.player.service.PlaylistService" autowire="constructor"/>
|
|
||||||
|
|
||||||
<bean id="versionService" class="org.airsonic.player.service.VersionService" />
|
|
||||||
|
|
||||||
<bean id="statusService" class="org.airsonic.player.service.StatusService">
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="ratingService" class="org.airsonic.player.service.RatingService">
|
|
||||||
<property name="ratingDao" ref="musicFileInfoDao"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="securityService" ref="securityService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="musicIndexService" class="org.airsonic.player.service.MusicIndexService">
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="audioScrobblerService" class="org.airsonic.player.service.AudioScrobblerService">
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="transcodingService" class="org.airsonic.player.service.TranscodingService">
|
|
||||||
<property name="transcodingDao" ref="transcodingDao"/>
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="playerService" ref="playerService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="shareService" class="org.airsonic.player.service.ShareService">
|
|
||||||
<property name="shareDao" ref="shareDao"/>
|
|
||||||
<property name="securityService" ref="securityService"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="jwtSecurityService" ref="jwtSecurityService" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="podcastService" class="org.airsonic.player.service.PodcastService" init-method="init">
|
|
||||||
<property name="podcastDao" ref="podcastDao"/>
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="securityService" ref="securityService"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="metaDataParserFactory" ref="metaDataParserFactory"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="jukeboxService" class="org.airsonic.player.service.JukeboxService">
|
|
||||||
<property name="statusService" ref="statusService"/>
|
|
||||||
<property name="transcodingService" ref="transcodingService"/>
|
|
||||||
<property name="audioScrobblerService" ref="audioScrobblerService"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="securityService" ref="securityService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="folderBasedContentDirectory" class="org.airsonic.player.service.upnp.FolderBasedContentDirectory">
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="playlistService" ref="playlistService"/>
|
|
||||||
<property name="playerService" ref="playerService"/>
|
|
||||||
<property name="transcodingService" ref="transcodingService"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="jwtSecurityService" ref="jwtSecurityService" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="dispatchingContentDirectory" class="org.airsonic.player.service.upnp.DispatchingContentDirectory">
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="playlistService" ref="playlistService"/>
|
|
||||||
<property name="playerService" ref="playerService"/>
|
|
||||||
<property name="transcodingService" ref="transcodingService"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="jwtSecurityService" ref="jwtSecurityService" />
|
|
||||||
<property name="albumProcessor" ref="albumUpnpProcessor" />
|
|
||||||
<property name="recentAlbumProcessor" ref="recentAlbumUpnpProcessor" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="mediaFileUpnpProcessor" class="org.airsonic.player.service.upnp.MediaFileUpnpProcessor"/>
|
|
||||||
<bean id="playlistUpnpProcessor" class="org.airsonic.player.service.upnp.PlaylistUpnpProcessor"/>
|
|
||||||
<bean id="rootUpnpProcessor" class="org.airsonic.player.service.upnp.RootUpnpProcessor"/>
|
|
||||||
<bean id="artistUpnpProcessor" class="org.airsonic.player.service.upnp.ArtistUpnpProcessor"/>
|
|
||||||
<bean id="albumUpnpProcessor" class="org.airsonic.player.service.upnp.AlbumUpnpProcessor"/>
|
|
||||||
<bean id="recentAlbumUpnpProcessor" class="org.airsonic.player.service.upnp.RecentAlbumUpnpProcessor"/>
|
|
||||||
<bean id="genreUpnpProcessor" class="org.airsonic.player.service.upnp.GenreUpnpProcessor"/>
|
|
||||||
|
|
||||||
<bean id="upnpService" class="org.airsonic.player.service.UPnPService" init-method="init">
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="customContentDirectory" ref="dispatchingContentDirectory"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="lastFmService" class="org.airsonic.player.service.LastFmService" init-method="init">
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="mediaFileDao" ref="mediaFileDao"/>
|
|
||||||
<property name="artistDao" ref="artistDao"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="sonosService" class="org.airsonic.player.service.SonosService">
|
|
||||||
<property name="sonosHelper" ref="sonosHelper"/>
|
|
||||||
<property name="mediaFileService" ref="mediaFileService"/>
|
|
||||||
<property name="securityService" ref="securityService"/>
|
|
||||||
<property name="settingsService" ref="settingsService"/>
|
|
||||||
<property name="playlistService" ref="playlistService"/>
|
|
||||||
<property name="upnpService" ref="upnpService"/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="jaudiotaggerParser" class="org.airsonic.player.service.metadata.JaudiotaggerParser">
|
|
||||||
<constructor-arg name="settingsService" ref="settingsService" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<bean id="metaDataParserFactory" class="org.airsonic.player.service.metadata.MetaDataParserFactory">
|
<bean id="metaDataParserFactory" class="org.airsonic.player.service.metadata.MetaDataParserFactory">
|
||||||
<property name="parsers">
|
<property name="parsers">
|
||||||
<list>
|
<list>
|
||||||
<bean class="org.airsonic.player.service.metadata.JaudiotaggerParser">
|
<ref bean="jaudiotaggerParser" />
|
||||||
<constructor-arg name="settingsService" ref="settingsService" />
|
<ref bean="ffmpegParser" />
|
||||||
</bean>
|
<ref bean="defaultMetaDataParser" />
|
||||||
<bean class="org.airsonic.player.service.metadata.FFmpegParser">
|
|
||||||
<property name="transcodingService" ref="transcodingService"/>
|
|
||||||
<property name="settingsService" ref="settingsService" />
|
|
||||||
</bean>
|
|
||||||
<bean class="org.airsonic.player.service.metadata.DefaultMetaDataParser">
|
|
||||||
<constructor-arg name="settingsService" ref="settingsService" />
|
|
||||||
</bean>
|
|
||||||
</list>
|
</list>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
<bean id="metricsManager" class="org.airsonic.player.monitor.MetricsManager"></bean>
|
||||||
|
|
||||||
<!-- AJAX services -->
|
<!-- AJAX services -->
|
||||||
|
|
||||||
@@ -326,8 +95,5 @@
|
|||||||
<property name="settingsService" ref="settingsService"/>
|
<property name="settingsService" ref="settingsService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="jwtSecurityService" class="org.airsonic.player.service.JWTSecurityService">
|
|
||||||
<constructor-arg ref="settingsService" />
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
</beans>
|
</beans>
|
||||||
|
|||||||
Reference in New Issue
Block a user