View Javadoc

1   package org.musicontroller.repair;
2   
3   import java.util.Iterator;
4   import java.util.List;
5   
6   import org.apache.log4j.Logger;
7   import org.musicontroller.core.AIBag;
8   import org.musicontroller.core.Song;
9   import org.musicontroller.dao.Dao;
10  
11  /**
12   * Removes unused AIBag objects.
13   * @author drexler
14   * @version $Id: RemoveUnusedAiBags.java,v 1.1 2010/03/16 18:55:42 varienaja Exp $
15   */
16  public class RemoveUnusedAiBags {
17  	private static final Logger log = Logger.getLogger(RemoveUnusedAiBags.class);
18  
19  	@SuppressWarnings("unchecked")
20  	public static void execute(Dao dao) {
21  		if(dao==null) {
22  			log.error("RemoveUnusedAiBags.execute() invoked with a null DAO. The merge could not take place.");
23  			return;
24  		}
25  		log.info("Remove unused AIBags job started.");
26  		String hql = "select bag.id, song from Song song right outer join song.aibag bag";
27  		List<Object[]> unusedList = dao.search(hql, null, 0);
28  		Iterator it = unusedList.iterator();
29  		while(it.hasNext()) {
30  			Object[] rec = (Object[]) it.next();
31  			Long unused = (Long)rec[0];
32  			Song song = (Song)rec[1];
33  			if(song==null) {
34  				AIBag deleteThis = dao.getAIBagById(unused);
35  				log.info("Deleting AIBag "+unused+".");
36  				dao.deleteAiBag(deleteThis);
37  			}
38  		}
39  		log.info("Remove unused AIBags job finished.");
40  	}
41  
42  }