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
13
14
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 }