View Javadoc

1   package org.musicontroller;
2   
3   import java.awt.GraphicsEnvironment;
4   import java.util.Date;
5   
6   import org.apache.log4j.Logger;
7   import org.musicontroller.core.Event;
8   import org.musicontroller.core.Song;
9   import org.musicontroller.dao.Dao;
10  import org.musicontroller.security.IUser;
11  
12  public class MusiControllerImpl implements MusiController {
13  	private static final Logger LOG = Logger.getLogger(MusiControllerImpl.class);
14  	
15  	private static Dao _dao;
16  	
17  	/**
18  	 * As MusiController is a WebApp, we not shut-off the possibility of a 
19  	 * console or app-window popping up, during eventual executing of awt-stuff
20  	 * (Image resizing and such)
21  	 */
22  	static {
23      	System.setProperty("java.awt.headless", "true");
24      	if(!GraphicsEnvironment.isHeadless()) {
25      		LOG.error("Failed to set awt to headless mode.");
26      	}
27  	}
28  
29  	public void setDao(Dao dao) {
30  		_dao = dao;
31  	}
32  	
33  	public Dao getDao() {
34  		return _dao;
35  	}
36  
37  	public void saveSongEvent(long songid, int eventid, long userid, Date date) {
38  		IUser user = getDao().getUserById(userid);
39  		Song song = getDao().getSongById(songid);
40  		switch (eventid) {
41  		case Event.played : 
42  			LOG.debug("Adding played-event to songId: "+songid+" for user "+user);
43  			song.addPlayedEvent(date,user); 
44  			//TODO Notify audioscrobbler
45  			break;
46  		case Event.requested : 
47  			LOG.debug("Adding requested-event to songId: "+songid+" for user "+user);
48  			song.addRequestedEvent(date,user); 
49  			break;
50  		case Event.skipped : 
51  			LOG.debug("Adding skipped-event to songId: "+songid+" for user "+user);
52  			song.addSkippedEvent(date,user); 
53  			break;
54  		case Event.downloaded :
55  			LOG.debug("Adding downloaded-event to songId: "+songid+" for user "+user);
56  			song.addDownloadedEvent(date,user); 
57  			break;
58  		default :
59  			LOG.error("Ignored request to add non-existing event ("+eventid+") to songId: "+songid+" for user "+user);
60  		}
61  		_dao.save(song);
62  	}
63  	
64  	public void saveSongEvent(long songid, int eventid, long userid) {
65  		saveSongEvent(songid,eventid,userid,new Date());
66  	}
67  
68  }