1 package search.db;
2 
3 import util.ConnectionUtil;
4 import util.SearchUtil;
5 import util.TableOperations;
6 import chemaxon.jchem.db.JChemSearch;
7 import chemaxon.sss.SearchConstants;
8 import chemaxon.sss.search.JChemSearchOptions;
9 import chemaxon.util.ConnectionHandler;
10
11/**
12 * Example code for pre-filtering database hits by calculated chemical terms.
13 * 
14 * @author JChem Base team, ChemAxon Ltd.
15 */
16public final class ChemicalTermsFilteringExample {
17
18    private static final String TABLE_NAME = "demo";
19
20    private ConnectionHandler connHandler;
21
22    public static void main(String[] args) {
23        try {
24            new ChemicalTermsFilteringExample().run();
25        } catch (Exception e) {
26            e.printStackTrace();
27        }
28    }
29
30    private void run() throws Exception {
31        connHandler = ConnectionUtil.connectToDB();
32        try {
33            TableOperations.setupMoleculeTable(connHandler, TABLE_NAME);
34            search();
35        } finally {
36            ConnectionUtil.closeConnection(connHandler);
37        }
38
39    }
40
41    private void search() throws Exception {
42
43        JChemSearchOptions searchOpts =
44                new JChemSearchOptions(SearchConstants.DEFAULT_SEARCHTYPE);
45        searchOpts.setChemTermsFilter("pka(h(0))> 2");
46
47        JChemSearch jcs =
48                SearchUtil.createJChemSearch(connHandler, "OC=O", TABLE_NAME, searchOpts);
49
50        jcs.run();
51        System.out.println("Search has found " + jcs.getResultCount()
52                + " hits in which O has pka value greater than 2");
53
54        searchOpts.setChemTermsFilter("pka(h(0))> 3.5");
55        jcs.setSearchOptions(searchOpts);
56        jcs.run();
57        System.out.println("Search has found " + jcs.getResultCount()
58                + " hits in which O has pka value greater than 3.5");
59    }
60}
61