KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > fulltext > FullTextSettings


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.fulltext;
6
7 import java.sql.Connection JavaDoc;
8 import java.sql.PreparedStatement JavaDoc;
9 import java.sql.ResultSet JavaDoc;
10 import java.sql.SQLException JavaDoc;
11 import java.sql.Statement JavaDoc;
12 import java.util.HashMap JavaDoc;
13 import java.util.HashSet JavaDoc;
14
15 public class FullTextSettings {
16
17     private static HashMap JavaDoc settings = new HashMap JavaDoc();
18
19     private HashSet JavaDoc ignoreList = new HashSet JavaDoc();
20     private HashMap JavaDoc words = new HashMap JavaDoc();
21     private HashMap JavaDoc indexes = new HashMap JavaDoc();
22     private PreparedStatement JavaDoc prepSelectMapByWordId;
23     private PreparedStatement JavaDoc prepSelectRowById;
24
25     private FullTextSettings() {
26     }
27
28     HashSet JavaDoc getIgnoreList() {
29         return ignoreList;
30     }
31
32     public HashMap JavaDoc getWordList() {
33         return words;
34     }
35
36     IndexInfo getIndexInfo(long indexId) {
37         return (IndexInfo) indexes.get(new Long JavaDoc(indexId));
38     }
39
40     void addIndexInfo(IndexInfo index) {
41         indexes.put(new Long JavaDoc(index.id), index);
42     }
43
44     public String JavaDoc convertWord(String JavaDoc word) {
45         // TODO this is locale specific, document
46
word = word.toUpperCase();
47         if(ignoreList.contains(word)) {
48             return null;
49         }
50         return word;
51     }
52
53     static FullTextSettings getInstance(Connection JavaDoc conn) throws SQLException JavaDoc {
54         String JavaDoc path = getIndexPath(conn);
55         FullTextSettings setting = (FullTextSettings) settings.get(path);
56         if(setting == null) {
57             setting = new FullTextSettings();
58             settings.put(path, setting);
59         }
60         return setting;
61     }
62
63     private static String JavaDoc getIndexPath(Connection JavaDoc conn) throws SQLException JavaDoc {
64         Statement JavaDoc stat = conn.createStatement();
65         ResultSet JavaDoc rs = stat.executeQuery("CALL DATABASE_PATH()");
66         rs.next();
67         String JavaDoc path = rs.getString(1);
68         if (path == null) {
69             throw new SQLException JavaDoc("FULLTEXT", "Fulltext search for in-memory databases is not supported.");
70         }
71         rs.close();
72         return path;
73     }
74
75     public PreparedStatement JavaDoc getPrepSelectMapByWordId() {
76         return prepSelectMapByWordId;
77     }
78
79     public void setPrepSelectMapByWordId(PreparedStatement JavaDoc prepSelectMapByWordId) {
80         this.prepSelectMapByWordId = prepSelectMapByWordId;
81     }
82
83     public PreparedStatement JavaDoc getPrepSelectRowById() {
84         return prepSelectRowById;
85     }
86
87     public void setPrepSelectRowById(PreparedStatement JavaDoc prepSelectRowById) {
88         this.prepSelectRowById = prepSelectRowById;
89     }
90
91 }
92
Popular Tags