OSDN Git Service

ダウンロード失敗をIOExceptionで返すように変更。
[coroid/inqubus.git] / frontend / src / yukihane / nicovideo / NicoDBFinder.java
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5 package yukihane.nicovideo;
6
7 import java.util.HashMap;
8 import java.util.List;
9 import java.util.logging.Level;
10 import java.util.logging.Logger;
11 import javax.persistence.EntityManager;
12 import javax.persistence.EntityManagerFactory;
13 import javax.persistence.Persistence;
14 import javax.persistence.Query;
15 import nicobrowser.Config;
16 import nicobrowser.entity.NicoContent;
17 import org.apache.commons.io.FilenameUtils;
18
19 /**
20  *
21  * @author yuki
22  */
23 public class NicoDBFinder {
24     private static final NicoDBFinder instance = new NicoDBFinder();
25     private final EntityManagerFactory factory;
26
27     private NicoDBFinder() {
28
29         Config config = Config.getInstance();
30         HashMap<String, String> map = new HashMap<String, String>();
31         map.put("toplink.jdbc.url", "jdbc:h2:" + config.getDbFile());
32         factory = Persistence.createEntityManagerFactory("NicoBrowserPU", map);
33     }
34
35     public static NicoDBFinder getInstance() {
36         return instance;
37     }
38     /**
39      * \83t\83@\83C\83\8b\96¼\82©\82çDB\82ð\8c\9f\8dõ\82·\82é.
40      * @param fileName \83t\83@\83C\83\8b\96¼.
41      * @return \83R\83\93\83e\83\93\83c\8fî\95ñ. \88ê\92v\82·\82é\82à\82Ì\82ª\96³\82¯\82ê\82Înull.
42      */
43     public NicoContent findNicoContent(String fileName) {
44         EntityManager manager = factory.createEntityManager();
45
46         String baseName = FilenameUtils.getBaseName(fileName);
47         Query query = manager.createQuery("SELECT cont FROM NicoContent AS cont " + "WHERE ?1 = cont.fileName").
48                 setParameter(1, baseName);
49         List<NicoContent> results = query.getResultList();
50         if (results.size() > 1) {
51             Logger.getLogger(getClass().getName()).log(Level.WARNING, "\93¯\88ê\83t\83@\83C\83\8b\96¼\82Ì\83t\83@\83C\83\8b\82ª\95¡\90\94\82 \82è\82Ü\82µ\82½");
52         }
53
54         if (results.isEmpty()) {
55             return null;
56         }
57         return results.get(results.size() - 1);
58     }
59 }