1 package yukihane.nicovideo;
3 import java.util.HashMap;
5 import java.util.logging.Level;
6 import java.util.logging.Logger;
7 import javax.persistence.EntityManager;
8 import javax.persistence.EntityManagerFactory;
9 import javax.persistence.Persistence;
10 import javax.persistence.Query;
11 import nicobrowser.config.Config;
12 import nicobrowser.entity.NicoContent;
13 import org.apache.commons.io.FilenameUtils;
19 public class NicoDBFinder {
20 private static final NicoDBFinder instance = new NicoDBFinder();
21 private final EntityManagerFactory factory;
23 private NicoDBFinder() {
25 Config config = Config.getInstance();
26 HashMap<String, String> map = new HashMap<String, String>();
27 map.put("toplink.jdbc.url", "jdbc:h2:" + config.getDbFile());
28 factory = Persistence.createEntityManagerFactory("NicoBrowserPU", map);
31 public static NicoDBFinder getInstance() {
36 * @param fileName ファイル名.
37 * @return コンテンツ情報. 一致するものが無ければnull.
39 public NicoContent findNicoContent(String fileName) {
40 EntityManager manager = factory.createEntityManager();
42 String baseName = FilenameUtils.getBaseName(fileName);
43 Query query = manager.createQuery("SELECT cont FROM NicoContent AS cont " + "WHERE ?1 = cont.fileName").
44 setParameter(1, baseName);
45 @SuppressWarnings("unchecked")
46 List<NicoContent> results = query.getResultList();
47 if (results.size() > 1) {
48 Logger.getLogger(getClass().getName()).log(Level.WARNING, "同一ファイル名のファイルが複数ありました");
51 if (results.isEmpty()) {
54 return results.get(results.size() - 1);